JVM模型面试题及解析答案_第1页
JVM模型面试题及解析答案_第2页
JVM模型面试题及解析答案_第3页
JVM模型面试题及解析答案_第4页
JVM模型面试题及解析答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JVM模型经典面试题及解析答案考试时间:______分钟总分:______分姓名:______选择题(20题,每题3分,共60分)1.下列JVM运行时数据区中,线程私有的是?()A.堆B.方法区C.虚拟机栈D.程序计数器2.下列关于类加载器的说法,正确的是?()A.启动类加载器负责加载Java核心库B.应用程序类加载器是自定义类加载器的父类C.扩展类加载器加载`JAVA_HOME/lib/ext`目录下的类D.双亲委派模型可以防止恶意代码替换核心API3.下列垃圾回收算法中,会产生内存碎片的是?()A.标记-清除算法B.复制算法C.标记-整理算法D.分代收集算法4.下列JVM参数中,用于设置堆内存最大值的是?()A.`-Xms`B.`-Xmx`C.`-Xss`D.`-XX:NewRatio`5.下列关于堆内存的说法,错误的是?()A.堆是Java内存中最大的一块区域B.堆内存被划分为新生代和老年代C.新生代又分为Eden区、Survivor区(From和To)D.所有对象都在老年代分配6.下列关于双亲委派模型的说法,正确的是?()A.子类加载器会先尝试加载类,再委派给父类B.双亲委派模型可以避免类的重复加载C.打破双亲委派模型的常见场景是SPI机制D.启动类加载器没有父类加载器7.下列垃圾回收器中,属于并行收集器的是?()A.SerialGCB.ParallelGCC.CMSGCD.G1GC8.下列关于MinorGC的说法,正确的是?()A.MinorGC发生在新生代B.MinorGC会触发FullGCC.MinorGC的触发条件是Eden区空间不足D.MinorGC会移动对象到老年代9.下列关于JVM内存模型(JMM)的说法,正确的是?()A.JMM定义了线程与主内存之间的交互B.JMM保证所有操作的原子性C.volatile关键字可以保证可见性和有序性D.synchronized关键字可以保证可见性10.下列关于元空间的说法,正确的是?()A.元空间是Java8引入的B.元空间存储类的元数据C.元空间的大小由`-XX:MaxPermSize`设置D.元空间使用本地内存11.下列关于栈内存的说法,正确的是?()A.每个线程拥有一个独立的虚拟机栈B.栈内存存储对象实例C.栈溢出会导致`OutOfMemoryError`D.栈帧存储局部变量表12.下列关于类加载过程的说法,正确的是?()A.类加载过程包括加载、验证、准备、解析、初始化B.准备阶段为静态变量分配内存并赋零值C.解析阶段将常量池中的符号引用替换为直接引用D.初始化阶段执行静态代码块13.下列关于垃圾回收的说法,正确的是?()A.垃圾回收器会回收所有不再使用的对象B.垃圾回收器会回收栈内存中的对象C.垃圾回收器会回收方法区中的类D.垃圾回收器会回收本地内存中的对象14.下列关于JVM参数的说法,正确的是?()A.`-XX:+UseSerialGC`启用SerialGCB.`-XX:MaxTenuringThreshold`设置新生代对象晋升老年代的年龄C.`-XX:SurvivorRatio`设置Eden区与Survivor区的比例D.`-XX:ParallelGCThreads`设置垃圾回收线程数15.下列关于线程安全的说法,正确的是?()A.堆内存是线程安全的B.方法区是线程安全的C.虚拟机栈是线程安全的D.程序计数器是线程安全的16.下列关于逃逸分析的说法,正确的是?()A.逃逸分析用于判断对象是否逃逸出方法B.逃逸分析可以优化对象分配到栈上C.逃逸分析可以优化同步操作D.逃逸分析是JVM编译优化的一部分17.下列关于JNI的说法,正确的是?()A.JNI是JavaNativeInterface的缩写B.JNI允许Java调用本地方法C.JNI需要加载本地库D.JNI会导致内存泄漏18.下列关于FullGC的说法,正确的是?()A.FullGC会回收整个堆内存B.FullGC会回收方法区C.FullGC的触发条件是老年代空间不足D.FullGC会导致较长时间的停顿19.下列关于JVM调优的说法,正确的是?()A.增加堆内存可以减少FullGC频率B.使用G1GC适合大堆内存C.设置`-Xms`和`-Xmx`相同可以避免堆动态扩展D.减少线程数可以减少GC压力20.下列关于ThreadLocal的说法,正确的是?()A.ThreadLocal存储线程局部变量B.ThreadLocal会导致内存泄漏C.ThreadLocal使用弱引用存储键D.ThreadLocal可以保证线程安全简答题(4题,每题10分,共40分)1.请简述“双亲委派模型”的流程,并说明其优势及常见打破场景。2.请简述堆内存的“新生代-老年代”划分及对象分配流程。3.请简述垃圾回收器的触发条件(如MinorGC、MajorGC、FullGC)。4.请简述JVM内存模型(JMM)与线程可见性、有序性的关系。代码题(2题,每题15分,共30分)1.以下代码可能导致什么问题?如何优化?```javapublicclassStackOverflowDemo{privatestaticintdepth=0;publicstaticvoidrecursion(){depth++;recursion();//无终止条件递归}publicstaticvoidmain(String[]args){recursion();}}```2.以下代码可能导致什么问题?如何优化?```javaimportjava.util.ArrayList;importjava.util.List;publicclassMemoryLeakDemo{privatestaticList<String>list=newArrayList<>();publicstaticvoidaddData(){for(inti=0;i<10000;i++){list.add("Data"+i);}}publicstaticvoidmain(String[]args){addData();//未清理list,可能导致内存泄漏}}```场景题(1题,20分)1.线上服务突然出现频繁FullGC,CPU占用率飙升,响应时间变长,请简述排查步骤。试卷答案选择题(20题,每题3分,共60分)1.C、D2.A、C、D3.A4.B5.D6.B、C、D7.B8.A、C9.A、C、D10.B、D11.A、D12.A、B、C、D13.A、C14.A、B、C、D15.C、D16.A、B、C、D17.A、B、C18.A、B、C、D19.A、B、C、D20.A、B、C、D简答题(4题,每题10分,共40分)1.双亲委派模型流程:类加载器收到请求后,先委派给父类加载器,递归至启动类加载器,父类无法加载时子类才尝试加载。优势:防止恶意代码替换核心API;避免重复加载;保证核心库稳定性。打破场景:SPI机制(如JDBC);热部署(如Tomcat);代码热插拔(如OSGi)。2.堆内存划分:新生代(Eden区、Survivor区From/To)和老年代。对象分配流程:新对象优先在Eden分配;Eden满触发MinorGC,存活对象复制到Survivor区;对象在Survivor间移动并年龄递增;年龄达到阈值晋升老年代;老年代满触发MajorGC或FullGC。3.垃圾回收触发条件:MinorGC:Eden区空间不足;MajorGC:老年代空间不足;FullGC:整个堆(包括方法区)空间不足或手动调用System.gc();元空间不足也会触发FullGC。4.JMM与线程可见性、有序性关系:JMM定义线程与主内存交互规则,通过主内存与工作内存同步保证可见性(如volatile、synchronized);通过内存屏障和禁止重排序保证有序性(如volatile、final关键字)。代码题(2题,每题15分,共30分)1.问题:StackOverflowError(栈溢出)。原因:递归无终止条件,无限创建栈帧。优化:添加终止条件(如depth>10000return)或改用循环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论