Java面试题复习之Java基础 谈谈HTTPSpring(十六)之MV
1.面向对象的特征主要有哪些? ? 封装、继承、多态、抽象 ? 2.final、finally、finalize的区别? ? final主要用于修饰类、方法、属性(变量)等。 通常被final修饰的类不能够被继承。 被final修饰的方法不能够重写。 被final修饰的变量是常量(赋值后,其值不再改变)。 finally是在异常处理时提供finally块来执行任何清除操作,不管有没有异常抛出或者捕获,finally最后都会被执行。 finalize是一个方法名。 ? 3.Exception、Error、运行时异常与一般异常有何异常? 首先我们来看一张图,如下所示: 可以看出,所有的异常都是由Throwable类,下一层分解为两个分支:Error和Exceprion。
ClassNotFoundException (找不到类异常) ? 整合上述可以归纳为: Error一般都是因为JVM导致的。 Exception则分为两个运行异常和其它异常(I/O异常),运行异常通常是程序错误产生的,而其他异常通常程序本身没有问题而产生的。 ? 4.请写出五种常见的运行异常? (1)TypeCastException; (2)ClassNotFoundException; (3)NullPointException; (4)NumberFormatException; (5)IndexOutOfBoundsException; ? 5.int和Integer的区别? (1)Integer是int的包装类,int则是java的一种基本数据类型。 ? 6.包装类,装箱和拆箱? Java八大基本数据类型对应的包装类分别如下: Byte,Short, Integer, Long, Float, Double,Character,Boolean。 自动装箱:基本类型自动转为包装类(int >> Integer) 自动拆箱:包装类自动转为基本类型(Integer >> int) ? 7.String、StringBuilder、StringBuffer之间的区别 详情参考链接:https://www.cnblogs.com/su-feng/p/6659064.html 区别主要是两个方面:运行速度和线程安全。 运行速度快慢:StringBuilder>StringBuffer>String 原因: 是因为String是字符常量,而StringBufer和StringBuilder分别是字符变量,String对象一旦创建是不能更改的,但后两者对象是变量则可以改变。 ? 线程安全:StringBuilder是线程不安全的,StringBuffer是线程安全的。 原因: 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快StringBuilder。 ? 8.重载和重写的区别 参考链接:https://blog.csdn.net/xingxingmingyue/article/details/50968741 重载(Overload): 写和重载的区别在于: 9.抽象类和接口的区别 不同点比较,如图所示: ? 相同点: (1) 都是上层的抽象层。 ? 10.说说反射的用途和实现 关于反射的用途和实现,可以参考这个链接:https://segmentfault.com/a/1190000017389565 ? 11.HTTP请求的GET和POST的区别 HTTP请求的GET和POST的区别(包括HTTP详解)可以参考:谈谈HTTP ? 12.Session和Cookie的区别 (1)cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。 (2)两个都可以用来存私密的东西,同样也都有有效期的说法,区别在于session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。? a.cookie数据存放在客户的浏览器上,session数据放在服务器上 ; b.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session ; c.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE ; d.单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K; e.所以将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中。 (3)cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。 (4)cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。 (5)session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上创建了一个Cookie,当这个Session结束时,其实就是意味着这个Cookie就过期了。? 13.MVC设计思想 关于MVC设计思想,请参考:Spring(十六)之MVC框架 ??????????????????????????????????????????? SpringMVC原理&MVC设计思想 ? 14.equlas与==区别 (1)==是判断两个变量或实例是不是指向同一个内存空间 (2)==是指对内存地址进行比较 (3)==指引用是否相同 或者是: ?????? (1)对于==,比较的是值是否相等 15.什么是Java序列化和反序列化?如何实现序列化? 可以参考:https://blog.csdn.net/qq_27093465/article/details/78544505 ? 16.Java的平台无关系如何体现? 一次编译到处运行(前提需要有JRE的存在) ? 17.JDK和JRE的区别 可以参考:记一次Eclipse关于JDK和JRE的问题 ? 18.Java8有哪些新特性 Java8新特性可以参考:JAVA8 十大新特性详解 ? 19.为什么wait、notify会放在Object里边? 可以参考:为什么wait()和notify()属于Object类 ? 20.列举常用的jdk包 (1)java.lang:语言包 (2)java.util:实用包 (3)java.awt:抽象窗口工具包 (4)javax.swing:轻量级的窗口工具包,这是目前使用最广泛的GUI程序设计包 (5)java.io:输入输出包 (6)java.net:网络函数包 (7)java.applet:编制applet用到的包(目前编制applet程序时,更多的是使用swing中的JApplet类) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |