JVM 面试题掌握清单
原文笔记:[[JVM面试题库]]
使用方式:点击题目可跳转到原文对应位置;勾选表示这道题你已经掌握。
模块导航
- [[JVM面试题库#第一层:基础认知题|第一层:基础认知题]]
- [[JVM面试题库#第二层:原理深度题|第二层:原理深度题]]
- [[JVM面试题库#第三层:实战与设计题|第三层:实战与设计题]]
- [[JVM面试题库#第四层:底层与前沿题(高区分度)|第四层:底层与前沿题(高区分度)]]
- [[JVM面试题库#附录:面试高频参数速查|附录:面试高频参数速查]]
第一层:基础认知题
- [[JVM面试题库#Q1: JVM运行时数据区有哪些?哪些是线程私有的?|Q1: JVM运行时数据区有哪些?哪些是线程私有的?]]
- [[JVM面试题库#Q2: 什么是双亲委派模型?为什么需要它?|Q2: 什么是双亲委派模型?为什么需要它?]]
- [[JVM面试题库#Q3: JVM中对象是怎么创建的?|Q3: JVM中对象是怎么创建的?]]
- [[JVM面试题库#Q4: 如何判断对象是否可以被回收?|Q4: 如何判断对象是否可以被回收?]]
- [[JVM面试题库#Q5: 新生代为什么要分Eden和两个Survivor?|Q5: 新生代为什么要分Eden和两个Survivor?]]
第二层:原理深度题
- [[JVM面试题库#Q6: 详细说说CMS和G1的区别|Q6: 详细说说CMS和G1的区别]]
- [[JVM面试题库#Q7: ZGC了解吗?它是怎么做到亚毫秒停顿的?|Q7: ZGC了解吗?它是怎么做到亚毫秒停顿的?]]
- [[JVM面试题库#Q8: 类加载的过程是怎样的?
<clinit>()和<init>()有什么区别?|Q8: 类加载的过程是怎样的?<clinit>()和<init>()有什么区别?]] - [[JVM面试题库#Q9: 什么是逃逸分析?它带来了哪些优化?|Q9: 什么是逃逸分析?它带来了哪些优化?]]
- [[JVM面试题库#Q10:
String.intern()在不同JDK版本中的行为有什么区别?|Q10:String.intern()在不同JDK版本中的行为有什么区别?]]
第三层:实战与设计题
- [[JVM面试题库#Q11: 线上服务频繁Full GC,怎么排查?|Q11: 线上服务频繁Full GC,怎么排查?]]
- [[JVM面试题库#Q12: 如何判断一个应用的JVM参数配置是否合理?|Q12: 如何判断一个应用的JVM参数配置是否合理?]]
- [[JVM面试题库#Q13: CPU飙到100%怎么排查?|Q13: CPU飙到100%怎么排查?]]
- [[JVM面试题库#Q14: 什么情况下会发生OOM?分别怎么解决?|Q14: 什么情况下会发生OOM?分别怎么解决?]]
- [[JVM面试题库#Q15: 说说你对G1调优的理解|Q15: 说说你对G1调优的理解]]
第四层:底层与前沿题(高区分度)
- [[JVM面试题库#Q16: 安全点和安全区域是什么?为什么GC需要它们?|Q16: 安全点和安全区域是什么?为什么GC需要它们?]]
- [[JVM面试题库#Q17: 方法调用在JVM层面是怎么实现的?解释分派机制|Q17: 方法调用在JVM层面是怎么实现的?解释分派机制]]
- [[JVM面试题库#Q18: JMM(Java内存模型)和JVM内存结构是一回事吗?|Q18: JMM(Java内存模型)和JVM内存结构是一回事吗?]]
- [[JVM面试题库#Q19: 什么是卡表和写屏障?在GC中起什么作用?|Q19: 什么是卡表和写屏障?在GC中起什么作用?]]
- [[JVM面试题库#Q20: 从字节码角度解释
try-catch-finally的实现|Q20: 从字节码角度解释try-catch-finally的实现]] - [[JVM面试题库#Q21: 什么是JIT的去优化(Deoptimization)?什么时候会触发?|Q21: 什么是JIT的去优化(Deoptimization)?什么时候会触发?]]
- [[JVM面试题库#Q22: 讲讲你对GC中”三色标记”算法的理解|Q22: 讲讲你对GC中”三色标记”算法的理解]]
- [[JVM面试题库#Q23: 类加载器的命名空间隔离在实际系统中有什么应用?|Q23: 类加载器的命名空间隔离在实际系统中有什么应用?]]
- [[JVM面试题库#Q24: 说说你对JVM内存分配和回收策略的整体理解|Q24: 说说你对JVM内存分配和回收策略的整体理解]]
附录:面试高频参数速查
- [[JVM面试题库#附录:面试高频参数速查|打开附录]]