Java面试题汇总含答案(2022最新版)
Java常见面试题及答案,每道都是认真筛选出的高频面试题,助力大家能找到满意的工作!
下载链接:全部面试题及答案PDF
1、什么是 Class 文件? Class 文件主要的信息结构有哪些?
Class 文件是一组以 8 位字节为基础单位的二进制流。各个数据项严格按顺序排列。
Class 文件格式采用一种类似于 C 语言结构体的伪结构来存储数据。这样的伪结构仅仅有两种数据类型:无符号数和表。
表:由多个无符号数或者其它表作为数据项构成的复合数据类型。全部表都习惯性地以 _info 结尾。
2、并发编程三个必要因素是什么?
原子,即一个不可再被分割的颗粒。原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。
一个线程对共享变量的修改,另一个线程能够立刻看到。(synchronized,volatile)
程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序)
3、说下有哪些类加载器?
Bootstrap ClassLoader(启动类加载器) Extention ClassLoader(扩展类加载器) App ClassLoader(应用类加载器)
4、线程的调度策略
线程调度器选择优先级最高的线程运行,但是,如果发生以下情况,就会终止线程的运行:
5、用Java写一个冒泡排序。
冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:
public class BubbleSortTest {public static void main(String[] args) {int[] arr = new int[]{-12,3,2,34,5,8,1};//冒泡排序for(int i = 0;i < arr.length-1;i++){for(int j = 0;j <arr.length-1-i;j++){if(arr[j] >arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}//遍历for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]+"\t");}}
}
6、Java对象的布局了解过吗?
实例数据区域 此处存储的是对象真正有效的信息,比如对象中所有字段的内容
7、解释什么是Tomcat Valve?
Tomcat Valve——Tomcat 4引入的新技术,它允许您将Java类的实例链接到一个特定的Catalina容器。
8、同步方法和同步块,哪个是更好的选择?
同步块是更好的选择,因为它不会锁住整个对象(当然你也可以让它锁住整个对象)。同步方法会锁住整个对象,哪怕这个类中有多个不相关联的同步块,这通常会导致他们停止执行并需要等待获得这个对象上的锁。
同步块更要符合开放调用的原则,只在需要锁住的代码块锁住相应的对象,这样从侧面来说也可以避免死锁。
9、运行时常量池的作用是什么?
运行时常量池相对于 Class 文件常量池的一个重要特征是动态性,Java 不要求常量只有编译期才能产生,运行期间也可以将新的常量放入池中,这种特性利用较多的是 String 的 intern 方法。
运行时常量池是方法区的一部分,受到方法区内存的限制,当常量池无法再申请到内存时会抛出 OutOfMemoryError。
10、如果你提交任务时,线程池队列已满,这时会发生什么
11、如何写一段简单的死锁代码?
这个笔试的话频率也挺高(遇见笔试的公司要三思啊),所以这里直接给出一个答案(有很多版本的)。
12、栈帧都有哪些数据?
JVM的运行是基于栈的,和C语言的栈类似,它的大多数数据都是在堆里面的,只有少部分运行时的数据存在于栈上。
13、float f=3.4;是否正确?
14、形参与实参
形参:全称为“形式参数”,是在定义方法名和方法体的时候使用的参数,用于接收调用该方法时传入的实际值;实参:全称为“实际参数”,是在调用方法时传递给该方法的实际值。
15、BIO、NIO、AIO 有什么区别?
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。
AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。
16、什么是自旋
17、我们可以在 hashcode() 中使用随机数字吗?
http://javarevisited.blogspot.sg/2011/10/override-hashcode-in-java-example.html
不行,因为对象的 hashcode 值必须是相同的。参见答案获取更多关于 Java 中重写 hashCode() 方法的知识。
18、你所知道网络协议有那些?
19、构造器Constructor是否可被override
在讲继承的时候我们就知道父类的私有属性和构造方法并不能被继承,所以Constructor也就不能被override,但是可以overload,所以你可以看到一个类中有多个构造函数的情况。
20、什么是双亲委派机制?
双亲委派机制的意思是除了顶层的启动类加载器以外,其余的类加载器,在加载之前,都会委派给它的父加载器进行加载。这样一层层向上传递,直到祖先们都无法胜任,它才会真正的加载。
21、讲讲什么情况下会出现内存溢出,内存泄漏?
22、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
23、线程与进程的区别?
24、Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是做什么的?有什么区别?
25、用代码演示三种代理
27、分代收集算法
28、同步方法和同步块,哪个是更好的选择?
29、Java 中的编译期常量是什么?使用它又什么风险?
30、Java死锁以及如何避免?
31、什么是“依赖注入”和“控制反转”?为什么有人使用?
32、ArrayList 和 LinkedList 的区别是什么?
33、观察者模式应用场景
34、Array与ArrayList有什么不一样?
35、实例化数组后,能不能改变数组长度呢?
36、Java 中,Maven 和 ANT 有什么区别?
37、方法区的作用是什么?
38、接口和抽象类有什么区别?
39、原型模式的应用场景
40、ConcurrentHashMap 和 Hashtable 的区别?
[下载链接:博主已将以上这些面试题整理成了一个面试手册,是PDF版的
Java面试题汇总含答案(2022最新版)相关推荐
- Java面试题汇总及答案2021最新(序列化含答案)
Java面试题汇总及答案2021最新(序列化含答案) 为大家整理了2021最新的Java面试题及答案下载,这套Java面试题总汇已经汇总了Java基础面试到高级Java面试题,几乎涵盖了作为一个Jav ...
- Java面试题汇总及答案2021最新(ioNio)
Java面试题汇总及答案2021最新(io&Nio) 最近给大家整理了一批Java关于io和nio的面试题一共15题,是20201最新时间整理的,并且都含答案打包下载. 适宜阅读人群 需要面试 ...
- 用友公司Java面试题(含答案)
为什么80%的码农都做不了架构师?>>> 用友公司Java面试题(含答案) 1.Hashtable和HashMap有什么区别? a.Hashtable是继承自陈旧的Dict ...
- 2018最新java面试题(含答案)
1.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型 ...
- 2022届校招Java面试题汇总(含题解)
本文将笔者在面试中遇到的真实题目汇总成集,初衷是为了每次面试完能够及时复盘,以便查漏补缺.此外,如果能给他人以参考也是好的. 持续更新中- 真实面经 一.2021年8月17日 阿里集团-CTO线-MM ...
- JAVA面试题总汇(含答案)
1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节 ...
- JAVA面试题汇总及答案
众所周知,互联网行业的跳槽是很频繁的,因为每一次的跳槽都意味着薪资会有所增涨,那么每次跳槽所要经历的面试则是必不可少的,而对于面试准备就显得格外重要了,一份比较详尽的面试题和答案无异于是特别宝贵的,在 ...
- 经典Java面试题汇总及答案解析
面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...
- 如何手撸一个队列?队列详解和面试题汇总(含答案)
队列(Queue):与栈相对的一种数据结构, 集合(Collection)的一个子类.队列允许在一端进行插入操作,而在另一端进行删除操作的线性表,栈的特点是后进先出,而队列的特点是先进先出.队列的用处 ...
最新文章
- WebMagic之优秀爬虫框架
- 我要放弃RedHat Linux了
- 对顶层生存空间的考虑---及蜷缩在内层的EJB
- JPA_@Table 注解详解
- 小程序云函数获取用户昵称_小程序云开发云函数进阶
- [原]HAproxy 代理技术原理探究
- gridcontrol 控件的用法
- 将Session写入Memcache
- 【Python】处理UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa2 in position…
- 深度学习(4) - 神经网络和反向传播算法
- All about the “paper”
- Atitit.用户权限服务 登录退出功能
- sqlloader 导入数据
- 计算机组成原理 学后感,【计算机组成原理实验心得体会】_计算机组成原理实验心得_计算机组成原理实验感想...
- 2018年上半年综合素质作文
- 使用excelJs.js,导出excel,可以设置序列以及下拉框的联动
- 汉字转html实体符号js_HTML字符实体(Character Entities),转义字符串(Escape Sequence) 转...
- Scikit-learn实战之最近邻算法
- Pycharm安装matplotlib
- python访问陌生人qq空间_python程序记录QQ空间条说说的访问详情