Android开发面试指南:Java虚拟机(JVM)篇 (附答案
2023-04-27 本文已影响0人
像程序那样去思考
面试考察点
- Java虚拟机(JVM)内存结构
- Java对象常见活动:创建、内存布局、访问定位、如何判断存活 垃圾
- 收集相关:垃圾收集算法、垃圾收集器
- 类加载相关:类加载过程、类加载器
-
方法分派模型:静态分派、动态分派
image.png
考察点1:Java虚拟机(JVM)内存结构
Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区。这里考察的内容是:
- 内存模型 & 分区具体有哪些
- 每个分区的作用、存放的内容是什么
- Java堆分区内的新生代、老年代划分内存比例及其各自的特点是什么
考察点2:Java对象常见活动
主要考察Java对象在底层的一些常见活动,主要包括:
- 一个Java对象是如何被创建的?即Java对象的创建过程。
- 在 Java对象创建后,是如何被存储在Java内存里的?即Java对象的内存布局。
- 当建立了一个Java对象后,该如何访问到该对象?即Java对象的访问定位。
- 如何判断Java对象是否存活?即Java对象的存活准则,包括:引用计数法、引用链法(可达性分析法)的具体相关内容。
考察点3:垃圾收集相关
主要包括:垃圾收集算法、垃圾收集器
1. 垃圾收集算法
不同的内存区域采用不同的垃圾收集算法,而不同垃圾收集算法决定了垃圾收集的效率 & 效果。主要考察点包括:
- 垃圾收集算法有哪些类型?
- 每种垃圾收集算法的原理、特点、应用场景分别是什么?
- Minor GC 与 Full GC 分别在什么时候发生?
- 如果需要优化垃圾收集方法,有什么方向及思路?
2.垃圾收集器
垃圾收集器是垃圾收集算法的具体实现,考察的内容包括:
- 常见的垃圾收集器有哪些?
- 不同类型的垃圾收集器其优点、缺点是什么?
- CMS收集器跟G1收集器有什么了解?它们的特点分别是什么?
考察点4:类加载
即Java类是如何被加载的。这里主要考察的内容是:
- 类加载的本质是什么?
- 类加载的过程有哪些步骤?
- 类加载的每个步骤及作用具体是什么?
- 如何确定被加载类在Java虚拟机的唯一性?
- 类加载器有哪些类型?
- 分别负责加载哪种类型的类?
- 如何自定义一个类加载器 双亲委派模型具体指的是什么?请阐述其工作流程。
考察点5:方法分派
方法分派即指:确定执行哪个方法的过程。这里主要考察的内容是:
- 方法分派的类型有哪些?
- 如何理解:变量的静态类型 & 动态类型
- 静态分派及动态分派的定义、特点、应用场景及区别
至此,关于面试指南中的Java虚拟机(JVM) 篇讲解完毕。下面我会对面试内容继续进行讲解,。