大数据面试宝典之JVM篇

大数据面试宝典之JVM篇,第1张

大数据面试宝典之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吗(震惊、革命性的垃圾收集器)?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5682376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存