JVM终极面试真题,面霸手把手教你如何解答

编程

作者简介:张雷,新浪微博资深技术专家。


本文选自:拉勾教育专栏《

32个Java面试必考点》

​本课时的主题是 面试中JVM 原理的考察。JVM 是 Java 程序运行基础,面试时一定会遇到 JVM 相关的题。本课时会先对面试中 JVM 的知识点进行汇总介绍。汇总 JVM 考察点和加分项,以及这部分知识的面试真题。

JVM 知识框架

JVM 知识点有 6 个大方向,其中,内存模型、类加载机制、GC 垃圾回收是比较重点的内容。性能调优部分偏重实际应用,重点突出实践能力。编译器优化和执行模式部分偏重理论基础,主要掌握知识点。

各个部分需要了解的知识点如下。

  • 内存模型:程序计数器、方法区、堆、栈、本地方法栈的作用,保存哪些数据。
  • 类加载:双亲委派的加载机制以及常用类加载器分别加载哪种类型的类。
  • GC:分代回收的思想和依据,以及不同垃圾回收算法实现的思路、适合的场景。
  • 性能调优:常用的 JVM 优化参数的作用,参数调优的依据,常用的 JVM 分析工具能分析哪类问题,以及使用方法。
  • 执行模式:解释、编译、混合模式的优缺点,Java7 提供的分层编译技术。需要知道 JIT 即时编译技术和 OSR(栈上替换),知道 C1、C2 编译器针对的场景,其中 C2 针对 Server 模式,优化更激进。在新技术方面可以了解一下 Java10 提供的由 Java 实现的 Graal 编译器。
  • 编译优化:前端编译器 javac 的编译过程、AST 抽象语法树、编译期优化和运行期优化。编译优化的常用技术包括公共子表达式的消除、方法内联、逃逸分析、栈上分配、同步消除等。明白了这些才能写出对编译器友好的代码。

JVM 的内容相对来说比较集中,但是对知识深度的掌握要求较高。

本文选自:拉勾教育《32个Java面试必考点》

考察点和加分项

考察点

总结 JVM 相关的面试考察点如下:

  1. 深入了解 JVM 的内存模型和 Java 的内存模型;
  2. 要了解类的加载过程,了解双亲委派机制;
  3. 要理解内存的可见性与 Java 内存模型对原子性、可见性、有序性的保证机制;
  4. 要了解常用的 GC 算法的特点、执行过程,和适用场景,例如 G1 适合对最大延迟有要求的场合,ZGC 适用于 64 位系统的大内存服务中;
  5. 要了解常用的 JVM 参数,明白对不同参数的调整会有怎样的影响,适用什么样的场景,例如垃圾回收的并发数、偏向锁设置等。

加分项

如果想要给面试官留下更好的印象,注意这些加分项。

  1. 如果在编译器优化方面有深入的了解的话,会让面试官觉得你对技术的深度比较有追求。例如知道在编程时如何合理利用栈上分配降低 GC 压力、如何编写适合内联优化等代码等。
  2. 如果你能有线上实际问题的排查经验或思路那就更好了,面试官都喜欢动手能力强的同学。例如解决过线上经常 FullGC 问题,排查过内存泄露问题等。
  3. 如果能有针对特定场景的 JVM 优化实践或者优化思路,也会有意想不到的效果。例如针对高并发低延迟的场景,如何调整 GC 参数尽量降低 GC 停顿时间,针对队列处理机如何尽可能提高吞吐率等;
  4. 如果对最新的 JVM 技术趋势有所了解,也会给面试官留下比较深刻的印象。例如了解 ZGC 高效的实现原理,了解 Graalvm 的特点等。

本文选自:拉勾教育《32个Java面试必考点》

真题汇总

总结 JVM 相关的面试真题,第一部分真题如下,课后可以重点练习。

解题思路如下。

  • 第 1 题 Java 内存模型前面讲过,面试时回答这个问题时记得和面试官确认是希望回答 JVM 的内存模型,还是 Java 对内存访问的模型,不要答跑偏。
  • 第 2 题要复习一下什么场景下会触发 FullGC,例如年轻代晋升时老年代空间不足,例如永久代空间不足等。
  • 第 3~6 题前面已经有过讲解,因此不再重复。

第二部分真题如下。

解题思路如下。

  • 第 7 题 volatile 要重点回答强制主内存读写同步以及防止指令重排序两点。
  • 第 8、9 题前面已经讲过。
  • 第 10 题重点介绍出强、弱、软、虚四种引用,以及在 GC 中的处理方式。
  • 第 11 题可以了解一下 Java 自带的几种工具的功能,例如 JMC 中的飞行记录器,堆分析工具 MAT,线程分析工具 jstack 和获取堆信息的 jmap 等。

本次分享内容至此就到这里啦,下一课时讲解 Java 另一个非常重要的内容:多线程。请持续关注拉勾教育哦~

本文选自:拉勾教育《32个Java面试必考点》

版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。

以上是 JVM终极面试真题,面霸手把手教你如何解答 的全部内容, 来源链接: utcz.com/z/515745.html

回到顶部