还没搞懂JVM吗?95%的技术面试必问知识点都在这,还怕面不过?
概述:知识点汇总
各个部分的内容如下:
一、jvm内存相关考点
1.详解-jvm内存模型
2.详解-jmm内存可见性
3、详解-jmm保证
二、类加载机制相关考点
1.详解类加载机制
2.详解类加载器
三、其他知识梳理
1.详解分代回收
四、jvm面试题分享
说一下 jvm 的主要组成部分?及其作用?
说一下 jvm 运行时数据区?
说一下堆栈的区别?
队列和栈是什么?有什么区别?
什么是双亲委派模型?
说一下类加载的执行过程?
怎么判断对象是否可以被回收?
java 中都有哪些引用类型?
说一下 jvm 有哪些垃圾回收算法?
说一下 jvm 有哪些垃圾回收器?
详细介绍一下 CMS 垃圾回收器?
新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
简述分代垃圾回收器是怎么工作的?
说一下 jvm 调优的工具?
常用的 jvm 调优的参数都有哪些?
Java的内存模型以及GC算法
jvm性能调优都做了什么
介绍JVM中7个区域,然后把每个区域可能造成内存的溢出的情况说明。
介绍GC 和GC Root不正常引用
自己从classload 加载方式,加载机制说开去,从程序运行时数据区,讲到内存分配,讲到String常量池,讲到JVM垃圾回收机制,算法,hotspot。
jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析。
数组多大放在JVM老年代
老年代中数组的访问方式
GC 算法,永久代对象如何 GC , GC 有环怎么处理。
谁会被 GC ,什么时候 GC。
如果想不被 GC 怎么办
如果想在 GC 中生存 1 次怎么办
总结:面试考察点及加分项
1.jvm相关的面试考察点
首先,需要jvm的内存模型和java的内存模型;
其次,要了解的类的加载过程,了解双亲委派机制;
第三,要理解内存的可见性与java内存模型对原子性、可见性、有序性的保证机制;
第四,要了解常用的gc算法的特点、执行过程,和适用场景,例如g1适合对最大延迟有要求的场合,zgc适> 用于64为系统的大内存服务中;
第五,要了解常用的jvm参数,明白对不同参数的调整会有怎样的影响,适用什么样的场景。例如垃圾回收的并发数、偏向锁设置等
2.相关加分项
如果想要面试官对你留下更好的印象的话,注意这些加分项:
首先,如果在编译器优化方面有深入的了解的话,会让面试官觉得你对技术的深度比较有追求。例如知道在编程时如何合理利用栈上分配降低gc压力、如何编写适合内联优化等代码等。
其次,如果你能有线上实际问题的排查经验或思路那就更好了,面试官都喜欢动手能力强的同学。例如解决过线上经常full gc问题,排查过内存泄露问题等。
第三,如果能有针对特定场景的jvm优化实践或者优化思路,也会有意想不到的效果。例如针对高并发低延迟的场景,如何调整gc参数尽量降低gc停顿时间,针对队列处理机如何尽可能提高吞吐率等;
第四,如果对最新的jvm技术趋势有所了解,也会给面试官留下比较深刻的印象。例如了解zgc高效的实现原理,了解Graalvm的特点等。
总之,掌握以上具体的JVM考点,才能在面试时应答自如。希望读完此篇文章的你,都能在来年金三银四的招聘季做好准备,拿到心仪的Offer。
●
●
●
关注程序员面试
关注程序员职业发展