经常会问的几道JVM面试题

经常会问的几道JVM面试题

(给java大数据修炼之道加星标,提高Java技能)

       这块内容并非每个面试官都会问,但如果是应聘高P的话,这一环节是不可缺少的,面试的难易程度也不一样。有些面试官或许让你讲讲虚拟机的内存实现即可,有些也会让你解释垃圾回收的实现,当然也会有虚拟机调优的实战经验,线上问题排查等等。

当然了,每次看到简历上如果有提到JVM,不管是了解还是精通,我都会尝试问几个问题,从最简单的开始。

问题1

JVM的内存相关,如何实现?

Java堆,Java栈,程序计数器,方法区,1.7的永久代,1.8的metaspace....尽可能多说,顺带简短描述下每个内存区的用途,能想到的都讲出来。

问题2

那么Java的堆内存,如何细分?

很多同学回答这个问题的时候,上来就是啪啦啪啦说一通,当我问他你说的是哪种回收算法时,他愣住了,以为所有算法的内存实现都一样。

比如CMS、G1、ZGC的堆内存实现都不太一样,但是可以说出CMS算法的堆内存实现,已经可以过关了,但是如果能够继续说明下G1和ZGC的实现,那当然是加分项。

问题3

在cms算法中,young gc的实现过程?

先找出根对象,如Java栈中引用的对象、静态变量引用的对象和系统词典中引用的对象等待,把这些对象标记成活跃对象,并复制到to区,接着遍历这些活跃对象中引用的对象并标记,找出老年代对象在eden区有引用关系的对象并标记,最后把这些标记的对象复制到to,在复制过程还要判断活跃对象的gc年龄是否已经达到阈值,如果已经达到阈值,就直接晋升到老年代,YGC结束之后把from和to的引用互换。

其实这里又会遇到几个概念,最好的情况是,面试者可以自己说出来,比如:

  • promotion failed

  • concurrent mode failed

并说明什么情况下会发生,可以如何避免?

问题4

cms算法的几个过程中,哪几个是需要stw的?为什么需要stw?

这种问题,问的比较细节,加分项。

问题5

JVM GC问题排查以及性能调优经验

这种问题,就看你平时的实战经验了,或者你也可以实现准备好一个案例。

总结

很多同学私下和我抱怨,每天只能CRUD业务代码,感觉自身的技术达到了瓶颈,也没有机会接触底层技术,有心无力。

一开始的时候,我还会耐心和一些同学进行相关的解答,毕竟自己也是这么走过来的。

  • 多看看公司内部中间件的实现,当然是读源码

  • 挑一个方向深入理解,可以是MQ、RPC或JVM

时间久了之后发现,这个过程占了自己太多时间,所以给几个建议

  • 学MQ,找厮大,手握2本宝典

  • 学RPC,可以直接读读springCloud、dubbo源码

  • 学JVM,找R大的知乎专栏,如果看得起,也可以咨询我

好了,今天的文章就先到这里 ,感谢你的阅览

-- 完 --

最近干货分享

推荐学习路线:

1、Java学习求职路线(资料、视频、源码、项目实战)
2 、java项目20套 +完整版java学习视频

推荐面试技巧:

1、面试时被质疑学历、年龄怎么办?

2、如何应对面试官问你职业规划问题

3、面试的时候问:你的期望薪资多少?怎么谈?

4、面试官问,你有什么问题需要问我的吗?

5、给培训出来的Java程序员的一点建议,教你如何找工作

推荐阅读:

注:加群要求 学习交流qq群:482670956

1、想学习JAVA这一门技术, 对JAVA感兴趣零基础,想从事JAVA工作的。
2、工作1-5年,感觉自己技术不行,想提升的
3、如果没有工作经验,但基础非常扎实,想提升自己技术的。
4、还有就是想一起交流学习的。

小编个人微信

经常会问的几道JVM面试题

(如果你有学习上不懂的问题、需要学习视频资源等;都可长按识别上方二维码添加小编为好友, 我将免费为你提供完整的学习路线和各种视频学习资源)

如果您觉得不错,请别忘了转发、分享、点赞让更多的人去学习, 您的举手之劳,就是对小编最好的支持,非常感谢!

如何您想进技术群交流,关注公众号在后台回复 “加群”,或者 “学习” 即可

著作权归作者所有,欢迎大家投稿 (投稿作者我会在公众号一一署名一 一并感谢

看完本文有收获?请转发分享给更多有需要的人

经常会问的几道JVM面试题

如果你觉得文章不错,欢迎点赞分享到朋友圈

本公众号已永久关闭赞赏功能! 所有资源均免费 , 纯属公益分享 ,

您的一个分享和转发就是对我莫大的支持 !

经常会问的几道JVM面试题

你点的每个好看,我都认真当成了喜欢