前言
接下来会为大家整理JVM相关的面试题,整个JVM的复习以及面试准备分为以下六个方面即可:
- ①虚拟机类加载机制
- ②JVM内存结构
- ③JVM内存分配策略
- ④垃圾收集器
- ⑤JVM线上性能调优
- ⑥线上OOM原因以及解决方案
需要花一点时间好好将为大家整理的这些面试题搞懂,基本JVM这关可以畅通无阻了,只要不是什么太刁钻的问题,一般面试官是难不倒你的。
那么为了让大家能更好的理解JVM相关的面试,号主也会为大家专门录制对应的视频讲解(关注公众号以及技术群消息,号主需要抽业余时间单独录制,更新不及时大家多担待),不仅仅讲解如何回答,以及回答的技巧包括面试官的意图等都会为你进行分析;并且整个面试题会模拟真实面试中,像大厂等面试官会如何设计一系列的面试连环炮来考验你,每一个问题很有可能都是有关联以及考察你的综合全面能力的。
那么今天给大家先整理出第一篇:面试连环炮之【虚拟机类加载机制】问题篇,大家可以通过以下问题先自己尝试着找答案或心理思考应该如何回答,最好是能手动画出这样的一幅流程图,多练几次,刻在心中,做到心中有数!
①面试连环炮之【虚拟机类加载机制】
面试连环炮1:【抛砖引玉】
- 请说下java代码的运行机制?
- 请说一下JVM加载 Java代码/Class文件 的原理机制
- 请说一下我们平时写的Java代码,是如何运行起来的?
以上三个问题其实是同一个问题,只是问法不一样
面试连环炮2:【进一步试探】
- 请说下JVM的类加载机制
- 请说下类的生命周期
- 说一下类装载的执行过程
以上三个问题其实是同一个问题,只是问法不一样
面试连环炮3:【考察细节】
- 说下类的加载时机
- JVM在什么情况下会加载一个类呢?
以上两个问题其实是同一个问题,只是问法不一样
面试连环炮4:【挖掘内功】
- JVM是如何识别一个java文件的以及是否符合规范
- 什么时间段进行的验证,为什么要校验?
- static静态变量存储在哪儿?什么时候进行的赋值?
- 加了final的static变量是如何分配与初始化的?
- 一个类会被初始化几次? 多线程情况下是如何保证类的初始化的?
- 请概括下类的初始化时机
(这里的问题不代表同一个,都是考核的一些细节点问题)
第四个环节的问题非常考验大家的基本功,以及是否有深入的研究过JVM的类加载过程,这部分问题一般也只会在大厂的面试过程中被问到。
面试连环炮5:【继续考核】
- 什么是类加载器,类加载器有哪些?
- 什么是双亲委派模型?
注意:这里是两个不同的问题
面试连环炮6:【深入内功】
- 说下破坏双亲委派机制
- Java中的线程上下文类加载器是干嘛的?
- 请说下Java类加载器的核心思路(源码)
- 阿里面试题:Tomcat这种web容器中的类加载器应该如何设计实现?
- 大厂面试题:我们在使用 JDBC 时,都需要加载 Driver 驱动,不知道你注意到没有,不写
Class.forName("com.mysql.jdbc.Driver")
也是可以让com.mysql.jdbc.Driver
正确加载的,你知道是怎么做的吗?
这里依然是考核内功,通过不同的细节点考核你掌握的深度,是否有主动学习过源码以及对Tomcat和JDBC这些工具内部的原理是否有了解,有了解就是加分!
B站视频更新进度:
https://www.bilibili.com/video/BV1SP4y1b7sH?spm_id_from=333.999.0.0