jvm面试试题及答案
一、单项选择题(每题2分,共10题)
1.在JVM中,以下哪个区域用于存储对象实例?()
A.程序计数器
B.虚拟机栈
C.堆
D.方法区
答案:C
2.JVM运行时数据区不包括以下哪个?()
A.本地方法栈
B.直接内存
C.堆
D.程序计数器
答案:B
3.下面哪种垃圾回收算法会产生内存碎片?()
A.标记-整理算法
B.复制算法
C.标记-清除算法
D.分代收集算法
答案:C
4.以下哪个参数可以设置JVM的堆大小?()
A.-Xmx
B.-Xss
C.-XX:PermSize
D.-XX:NewRatio
答案:A
5.在JVM中,方法区也被称为()。
A.永久代(Java8之前)
B.元空间(Java8及之后)
C.两者都是
D.两者都不是
答案:C
6.以下关于JVM栈的说法错误的是()。
A.每个线程都有自己独立的JVM栈
B.栈帧随着方法调用而创建,随着方法结束而销毁
C.栈中存储的是基本数据类型和对象引用
D.栈的大小是固定的,不能动态扩展
答案:D
7.垃圾回收器在回收对象之前,需要调用对象的()方法。
A.finalize()
B.hashCode()
C.equals()
D.clone()
答案:A
8.以下哪种情况会导致栈内存溢出?()
A.递归调用层数过深
B.堆中创建大量对象
C.方法区内存不足
D.本地方法调用过多
答案:A
9.在JVM中,负责加载字节码文件的是()。
A.类加载器
B.执行引擎
C.垃圾回收器
D.本地方法接口
答案:A
10.以下哪个不是JVM的调优目标?()
A.减少GC停顿时间
B.增加内存占用量
C.提高系统吞吐量
D.避免内存泄漏
答案:B
二、多项选择题(每题2分,共10题)
1.以下属于JVM堆的分代的有()。
A.新生代
B.老年代
C.永久代(Java8之前)
D.元空间(Java8及之后)
答案:AB
2.以下关于JVM垃圾回收的说法正确的有()。
A.垃圾回收是自动进行的,不需要程序员手动干预
B.不同的垃圾回收器适用于不同的场景
C.垃圾回收会影响程序的性能
D.程序员可以精确控制垃圾回收的时间
答案:ABC
3.下面哪些是JVM的启动参数类型?()
A.标准参数
B.-X参数
C.-XX参数
D.-D参数
答案:ABC
4.以下关于JVM类加载机制的说法正确的有()。
A.类加载过程包括加载、验证、准备、解析、初始化
B.双亲委派模型是类加载器的一种实现方式
C.自定义类加载器可以打破双亲委派模型
D.同一个类只会被加载一次
答案:ABCD
5.以下哪些属于JVM的运行时数据区?()
A.堆
B.虚拟机栈
C.本地方法栈
D.程序计数器
答案:ABCD
6.以下关于JVM栈帧的组成部分正确的有()。
A.局部变量表
B.操作数栈
C.动态连接
D.方法返回地址
答案:ABCD
7.以下哪些情况会触发FullGC?()
A.老年代空间不足
B.调用System.gc()方法(不一定执行)
C.新生代晋升到老年代时空间不足
D.元空间(Java8及之后)不足
答案:ABCD
8.以下关于JVM内存模型的说法正确的有()。
A.不同JVM实现的内存模型可能存在差异
B.内存模型主要是为了解决多线程并发访问共享数据的问题
C.保证了变量在不同线程中的可见性和有序性
D.遵循happens-before原则
答案:ABCD
9.以下哪些是JVM中常见的垃圾回收器?()
A.Serial收集器
B.Parallel收集器
C.CMS收集器
D.G1收集器
答案:ABCD
10.以下关于JVM性能调优的工具正确的有()。
A.jstat
B.jmap
C.jstack
D.VisualVM
答案:ABCD
三、判断题(每题2分,共10题)
1.在JVM中,所有对象都