JVM考点分析与总结

JVM 的考察,不算特别多,感觉和操作系统,redis 这些差不多一样,虽然 JVM 也是属于 Java 的一部分,不过被我拆分出来了。

下面我先给大家分析一下 JVM 各个知识点的考点以及大公司和小公司在 JVM 上的考点,并且会按照出现的频率来给大家弄清楚考点,最后还有给出面试中都是怎么询问的。

希望大家可以认真看一下,看完你内心也有一个大概了。

一、考点分布

我这里在统计的时候,把 JVM 分成了垃圾回收其他两个部分,我发现问垃圾回收,占据了 60%~70%,并且垃圾回收器基本都是问 CMS 和 G1 这两个回收器,而像其他的知识,就问的很少,剩下的就是问问内存空间分布啊,类加载啊,也都是一些比较简单的知识。

总的来说就是,学习 JVM 时,会觉得很难,但是真正会问的东西,其实不难,很多需要记忆

二、大公司与小公司提问区别

这个的话,大小公司都会提问,具体区别,这个我倒没有太详细去区分,就是没有特别明显感受到吧,唯一有感觉的就是小公司不会问的很细,比如你讲了 G1 算法,小公司可能不会去延伸问很多东西。

另外就是,无论是大公司还是小公司,我觉得 JVM 这块就问的比较简单,更加偏向记忆型

三、超详细考点总结(按照出现频率排序)

1.1 垃圾回收考点总结

1、掌握几种垃圾回收算法(标记-清除、标记-复制、标记-整理)

2、知道如何判断一个对象是否死亡(引用计数 + 可达性分析)

3、知道哪些可以作为 GCROOT

4、掌握几种常见垃圾回收器(重点是 CMS + G1)

5、掌握老年代 GC 与年轻代 GC,比如什么时候会发生

6、了解一两个工具,比如 jstack

7、掌握一些 GC 的配置参数

1.2 垃圾回收提问方式

1、常用的垃圾回收器有哪些?

2、CMS垃圾回收器介绍

3、知道 G1、CMS 吗(不知道,但是知道GC的3种回收算法:标记-清除、标记-复制、标记-整理

4、CMS什么时候会STW?为什么要STW?

5、如何判断对象死亡

6、垃圾回收中的三色标记法

7、yong GC 的发生时间?发生频繁,发生时间长的原因和解决方案?

8、CMS的过程?怎么标记垃圾的?三色标记法?G1的区别?

9、什么情况下老年代会发生GC?

10、可达性分析

11、判断gcroots的原则是什么

12、哪些可以作为GCROOT(这里太久没看了,没答全)

13、垃圾回收会发生在哪几个区域?

14、说一下垃圾回收?如果GC突然很慢怎么排查,比如原来GC完成只需要1秒,现在要5秒?了解哪些gc相关的工具,比如jstack之类的

15、假设HashMap里面存放100万个对象,那么gc可能会有什么问题?

2.1 其他考点总结

1、JVM 内存空间分布(能够举例子)

2、JVM 进程与线程模型

3、JAVA类加载过程

4、能够说出几个常见的类加载器

5、栈和堆的区别,以及什么时候会栈溢出、堆内存溢出

6、知道常量池

7、双亲委派原则

8、了解对象头的一些属性

2.2 其他收提问方式

1、能说一下JVM的模型吗?

2、JVM内存空间分布

3、jvm中那些结构是线程独有和共有的

4、JAVA类加载过程(加载(类加载器问题) 验证 准备 解析 初始化)

5、双亲委派原则

6、类加载器有哪些?

7、怎么打破双亲委派模型?(面试的时候答了不会)(面试官告诉我说Tomcat有)

8、堆是唯⼀可分配对象的地⽅?栈中的对象和堆中的对象内存分布有啥区别

9、为什么 Java 对象占⽤的内存⼤⼩是 8 的整数倍

10、对象头、markword

11、类加载器、类加载机制、准备和初始化在干什么

12、Java为什么被称为平台无关性语言?

13、什么会导致栈溢出、堆内存溢出?

14、怎么排查堆溢出

15、对象在哪个区?

16、Class文件在哪个地方存?

发表评论

后才能评论