技术文章 > 面试题 >  java面试题 > 正文

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面试题

免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 java面试题
 java基础面试题
 java多线程面试题
 java高级工程师面试题及答案
 Java面试题大汇总
 java算法面试题
 java实习生面试题
 java集合类面试题
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
推荐视频
视频教程分类