java易错点区分的面试题合集
在学习java基础时,有很多基本类的使用作用于相同的模块,这就导致很多小伙伴对于用法上的区分不是很明确。相似类的区分也是java面试时常见的一个考点,很多人在面试时不知道该如何表达二者的不同。下面我们就java不同模块的一些区分点为大家带来展开,一起看看都有哪些吧。
1.简述final,finally和finalize区别
①final可以修饰类,方法和变量,被final修饰的类不可继承,被final修饰的方法不可重写,被final修饰的变量引用不可更改,引用的内容可以更改。
②finally用于try-catch代码块中,无论是否发生异常最后都将执行,作用是释放资源。
③finalize是Object类的方法,在对象被垃圾回收之前将调用一次,一般用于资源的释放。
2.Array和ArrayList的区别
①Array长度在定义之后就不运行改变了,而ArrayList是长度可变的,可以自动扩容。
②Array只能存储相同类型的数据,ArrayList可以存储不同类型的数据。
③ArrayList提供了更多操作数据的方法。
3.Map与Set的本质区别
Set不能包含重复的元素,最多有一个空值,继承自Collection接口,底层是Map实现机制。Map不能包含重复的键,每个键最多对应一个映射的值,不能有空值键。两接口提供的方法不完全一样。
4.线程和进程的区别
简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位。同一进程中的多个线程之间可以并发执行。
5.深拷贝和浅拷贝区别
浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())
深拷贝是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)
6.jsp 和 servlet的区别
(1)jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
(2)jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。
(3)Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。
(4)Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应
7.throw 和 throws 的区别
throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。
8. forward 和 redirect 的区别
Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。
以上就是java常见面试题的分享,相信大家已经对java中相似概念的区分进行了回顾,学会后还需要加强记忆。同时也可以去课外搜集一些类似的易错点学习,做好面试前的准备工作。更多Java试题指路:java面试题
下一章:Java中io流面试题的整理
java中io流面试题的整理:在我们之前学习的java知识点中,有一个模块针对于文件的复制和存储都非常便捷,面试时也是频繁的会遇到,那就是IO流。本篇对IO流一些常见的基础知识点进行了整理,并有一个实例操作。这里以题目和答案的形式展示给大家 ...