大数据面试宝典之JVM篇

哈喽,亲爱的小伙伴们,大家好,我是猿天歌,相信大家都是有一定研发经验,也都有一定调优经历,但是经常在面试时,会有一定的困扰:比如说面试前突击记忆一下JVM原理等理论,然后面试时问你在实际项目中如何进行JVM参数调优、如何解决OOM或者GC等问题,然后一脸茫然。或者说,因为工作职责的分配,很少去接触JVM调优等,然后面试时又经常会被问到。我为什么会出JVM面试题专栏呢?

首先,肯定是面试的需要,大家都知道入职一线大厂 不光关注技术的宽广度,还需要考察技术的深度,尤其是现在技术内卷的时代,大部分公司面试时这都是我们的必备技能,比如说:使用逃逸分析,编译器可以对代码做哪些优化?如何解决OOM或者heap space的异常?jdk8之后,永久代为什么会被元空间替换?等等,你都知道嘛?而且经常在招聘信息上总会看到几条,比如:性能优化、分析系统瓶颈,解决各种疑难杂症等加分项,甚至是必要项。

其次,jvm是中高级程序员、架构师等必备技能,比如架构师每天都在思考,如何让系统更快,如何避免系统出现性能瓶颈等等,毕竟公司不会无止尽给你提供内存或者服务器,所以必然少不了分析系统性能以及调优等,而这些必然绕不过JVM中内存、垃圾回收、参数调优、字节码命令等等。

最后,也是为了小伙伴们的便利,因为我们经常会很难抽出时间,进行面试前的系统复习,直接去面试,心里多少会有些没底,因为很多知识点一段时间没用就会忘记,最后大大降低了我们面试通过率。

所以我准备了这个JVM面试题专栏,让面试更加轻松,不再有所顾虑。好了,开篇就说到这里,希望大家有所收获,也希望大家能够喜欢,多多支持,可以在评论区多提一些建议,后期我会持续给大家带来更多的面试题专栏。

关注喜马拉雅“猿天歌”,持续更新更多面试题。

获取吐血总结的完整JVM面试题,评论区评论有效留言,我会私发。

希望大家多多支持,多多建议,我会提供更高质量的作品,谢谢,嘻嘻

1.能说一下JVM的位置以及整体结构嘛?

2.讲一讲Java代码的执行流程

3.JVM架构模型中基于栈式架构和基于寄存器架构有什么区别?

4.可以详细说一下JVM的生命周期吗?

5.说一说你了解的虚拟机有哪些?

5.1其它虚拟机

6.类加载过程

7.类加载器分类

8.为什么需要用户自定义类加载器

9.谈一谈双亲委派机制

9.1双亲委派机制的优势

10.能说说什么是沙箱安全机制嘛?

11.你对类的主动使用与被动使用有没有了解?

12.你可以说说运行时数据区内部结构是什么样的吗?

13.PC 寄存器有过了解嘛?

14.1 使用PC寄存器存储字节码指令地址有什么作用?

14.2 为什么使用PC寄存器记录当前线程的执行地址?

15.PC寄存器为什么会被设定为线程私有?

16.说说你对虚拟机栈的认识?

17.谈谈你知道虚拟机栈的常见异常以及如何设置栈大小

18.你知道栈中存储的是什么吗?

19.可以具体说说栈的运行原理嘛?

20.你知道栈桢的内部结构由哪些组成吗?

21.说说你对局部变量表的认识?

22.你了解过变量槽 slot吗?

23.谈谈静态变量与局部变量的对比如何?

24.能具体说说操作数栈吗?

25.你了解栈顶缓存技术吗?

26.说说动态链接?

27.你知道非虚方法与虚方法吗?

28.能具体讲讲方法重写的本质吗?

29.为什么要使用Native方法?

30.谈一谈你对堆空间的理解?

31.实践中你是怎么设置堆空间大小的?

32.你对新生代与老年代了解多少?

33.可以详细讲一讲对象的分配过程吗?

34.JVM中MinorGC、MajorGC 和 FullGC有何区别?

35.为什么将Java堆空间分代,不分代就不能正常工作了吗?

36.在对象分配过程中,为什么需要TLAB(Thread Local Allocation Buffer)?

37.堆空间的常用参数设置

38.堆是分配对象存储的唯一选择吗?

39.使用逃逸分析,编译器可以对代码做哪些优化?

40.你知道方法区在JVM中的哪里吗?并说说你对方法区的理解?

41.工作中,你是如何设置方法区内存的大小?

42.你经常是如何解决OOM异常或者heap space的异常,说说你的思路?

43.谈一下你对class文件中常量池与运行时常量池的认识?

44.能说说方法区在 jdk6、jdk7、jdk8 中的演进过程嘛,具体讲讲区别点?

45.jdk8之后永久代为什么要被元空间替换?

46.你知道jdk7之后StringTable 为什么要调整位置?

47.方法区会进行垃圾回收吗?

48.你知道有哪些对象的创建方式?

49.能具体说说创建对象的步骤吗?

50.如何判断对象对应的类是否加载、链接、初始化?

51.你是如何为对象分配内存的?

52.对象头信息里面有哪些东西?

53.对象在堆空间中的内存布局是什么样的?

54.谈谈你对对象访问的理解以及对象访问方式有哪些?

55.可以描述一下执行引擎工作过程吗?

56.什么是解释器(Interpreter),什么是JIT编译器?

57.Hotspot 中C1 与 C2 编译器的优化策略都是什么样的?

58.可以说说String的存储结构以及在jdk发展历程中有哪些变更?

59.G1 垃圾收集器的 String 去重操作原理了解吗?

60.什么是垃圾?

61.为什么需要GC?

62.Java的垃圾回收机制?

63.何判断对象是否存活?

64.谈谈你对引用计数算法的理解?

65.说说你理解的可达性分析算法与 GC Roots?

66.对象的 finalization 机制是什么,可以说说吗?

67.判断一个对象是否可回收的具体过程能详细说说吗?

68.了解过垃圾清除以及常用的算法吗?

69.可以说说标记-清除算法执行过程以及缺点?

70.可以简单说说复制算法及优缺点吗?

71.聊一聊标记-压缩算法及优缺点?

72.可以简单说说垃圾清除过程中三种算法的对比吗?

73.说说分代收集算法?

74.你知道增量收集算法嘛?再说说它的优缺点?

75.有了解过分区算法吗?

76.你对System.gc()有过了解吗?

77.说说你对内存溢出OOM的理解?

78.谈谈你对内存泄漏的理解?并举例说明。

79.你对垃圾回收的并行与并发了解过吗?

80.强引用、软引用、弱引用、虚引用有什么区别?具体使用场景是什么?

81.能说说你了解的垃圾回收器的分类以及区别吗?

82.谈谈你对Serial垃圾收集器的了解?

83.说说ParNew垃圾收集器?

84.谈谈Parallel Scvenge收集器和ParNew收集器区别?

85.CMS 垃圾回收器可以详细说说吗?

86.Hotspot的几个垃圾收集器,Serial GC、Parallel GC、CMS GC有什么不同,或者在工作中怎么使用?

87.可以详细谈谈G1 垃圾回收器吗?

88.可以具体说说G1收集器的适用场景以及它的垃圾回收过程嘛?

89.G1回收器垃圾回收过程中的记忆集与写屏障有过了解吗?它是解决什么问题的?

90.谈谈7 种经典的垃圾回收器以及怎么搭配或选择垃圾收集器?

91.你了解过ZGC吗(震惊、革命性的垃圾收集器)?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

erainm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值