金秋九月,横扫北京20家互联网公司!总结出的21道JVM必备的面试题

JVM 是Java 程序员成长路上的一道坎,学习JVM之前,只需要知道代码编译成 Class,虚拟机加载 Class 运行就可以了,学习 JVM 之后,可以深入理解代码从编译到加载的过程、内存中对象的创建与垃圾回收、日常开发中快速定位性能问题等,当然也是面试不可缺少的加分项。

相信各位在面试的时候有不少人让JVM给挡住了offer,因为有前车之鉴,我在去面试前做好了充足的准备,网上大肆的搜集相关面试资料,自己整理,筛选出了面试期间出现频率最高的题目,在这里分享出来,希望能让各位看到的朋友避开那些坑,拿到心仪的offer!(另还附有xmind思维导图以及核心知识点整理

一.Java 类加载过程?

Java 类加载需要经历一下 7 个过程:

1.加载

2.验证

3.准备

4.解析

5.初始化

6.使用

7.卸载

扫描二维码关注公众号,回复: 12057927 查看本文章

二.描述一下 JVM 加载 Class 文件的原理机制?

类加载的主要步骤:

1.装载。

2.链接。

3.检查。

4.准备。

5.解析。

6.初始化。

三.Java 内存分配

1.寄存器

2.静态域

3.常量池

4.非 RAM 存储

5.堆内存

6.栈内存

四.GC 是什么? 为什么要有 G

GC 是垃圾收集的意思(GabageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。

五. 简述 Java 垃圾回收机

在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。

六. 如何判断一个对象是否存活?(或者 GC 对象的判定方法)

判断一个对象是否存活有两种方法:

1.引用计数法

2.可达性算法(引用链法)

七. 垃圾回收的优点和原理。并考虑 2 种回收

八. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回

九. Java 中会存在内存泄漏吗,请简单描述

十. 深拷贝和浅拷贝

十一. System.gc() 和 Runtime.gc() 会做什么事情?

十二. finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?

十三. 如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?

十四. 什么是分布式垃圾回收(DGC)?它是如何工作的?

十五. 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?

十六. 在 Java 中,对象什么时候可以被垃圾回收?

十七. 简述 Java 内存分配与回收策率以及 Minor GC 和 Major GC。

十八. JVM 的永久代中会发生垃圾回收么?

十九. Java 中垃圾收集的方法有哪些?

二十. 什么是类加载器,类加载器有哪些?

二十一. 类加载器双亲委派模型机制?

文章篇幅原因我就不一一展示答案了,对JVM这些面试题感兴趣的,或者是想更深入学习JVM的朋友,我在这里将这些文档分享出来,需要的朋友加助理VX:mxx2020666,免费领取

猜你喜欢

转载自blog.csdn.net/m0_46995061/article/details/109333193