对于JVM面试,面试官可以循序渐进从理论、实践各种角度深入,也未必是要求面试者什么都懂。但如果你懂得原理,一定会成为面试中的加分项。

1、字节码篇

  • 什么是Java虚拟机(墨迹天气)

  • JVM的组成(凡预科技、杭州比智公司)

  • JVM的组成(字节跳动)

  • int a = 1;JVM如何取得a的值(圆通)

  • 什么是Java虚拟机(JVM),为什么要使用?(JVM = Japanese Vedio’s Man )(阿里)

1
2
虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。
常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Java虚拟机,简称JVM)
  • 说说Java虚拟机的生命周期及体系结构。(阿里)
1
2
3
虚拟机的启动

Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
1
2
3
4
5
6
7
8
9
虚拟机的退出,有如下的几种情况:

① 某线程调用Runtime类或System类的exit方法,或 Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。

② 程序正常执行结束

③ 程序在执行过程中遇到了异常或错误而异常终止

④ 由于操作系统出现错误而导致Java虚拟机进程终止
  • 类文件结构有几个部分?(百度)
  • 知道字节码吗?字节码都有哪些?Integer x = 5;int y = 5;比较 x == y 都经过哪些步骤?(百度)
  • Java中的参数传递时传值呢?还是传引用? (阿里)
  • Java中有没有指针的概念? (阿里)
  • 为什么不把基本类型放堆中呢? (阿里)
  • Java虚拟机中,数据类型可以分为哪几类? (阿里)

2、类的加载篇

  • 双亲委派好处有哪些?(亚信)

  • JVM底层怎么加载class文件的?(蚂蚁金服)

  • 基本数据类型在JVM中的存储位置?(龙湖地产)

  • Java 类加载过程?(苏宁)

  • 类加载器双亲委派模型机制?(苏宁)

  • 什么是类加载器,类加载器有哪些?(苏宁)

  • 描述一下 JVM 加载 Class 文件的原理机制?(国美)

  • 什么是tomcat类加载机制?(猎聘)

  • 简单说说你了解的类加载器(拼多多)

  • 可以打破双亲委派么,怎么打破。(拼多多)

  • 深入分析ClassLoader(蚂蚁金服)

  • 双亲委派机制 (蚂蚁金服)

  • 描述一下 JVM 加载 Class 文件的原理机制? (蚂蚁金服)

  • 类加载器的双亲委派模型是什么? (蚂蚁金服)

  • 一面:类加载过程 (蚂蚁金服)

  • 一面:双亲委派机制及使用原因 (蚂蚁金服)

  • 类加载的时机 (百度)

  • Java 类加载过程? (百度)

  • 类加载器都有哪些?(百度)

  • 简述 Java 类加载机制?(百度)

  • 手写一个类加载器Demo (百度)

  • Class的forName(“Java.lang.String”)和Class的getClassLoader()的loadClass(“Java.lang.String”)有什么区别? (百度)

  • JVM中类加载机制,类加载过程,什么是双亲委派模型? (腾讯)

  • 类加载器有哪些? (腾讯)

  • 双亲委派模型介绍一下 (小米)

  • JVM类加载机制 (滴滴)

  • 一面:讲一下双亲委派模型,以及其优点 (滴滴)

  • 什么是类加载器,类加载器有哪些?(字节跳动)

  • Java类加载过程 (美团)

  • 描述一下JVM加载class文件的原理机制 (美团)

  • 什么是类的加载? (京东)

  • 哪些情况会触发类的加载? (京东)

  • 讲一下JVM加载一个类的过程 (京东)

  • JVM的类加载机制是什么? (京东)

  • 类加载器的双亲委派模型是什么? (京东)

  • 双亲委派机制可以打破吗?为什么 (京东)

3、内存篇

3.1 开头内容

  • JVM的内存结构,及各个结构的内容。(vivo)

  • 详细介绍一下内存结构(墨迹天气)

  • JVM有那些组成,堆,栈各放了什么东西?(搜狐、万达集团)

  • JVM的内存模型,线程独有的放在哪里?哪些是线程共享的?哪些是线程独占的?(万达集团)

  • JVM内存模型有哪些?(龙湖地产)

  • Java虚拟机中内存划分为那些区域(高德地图)

  • JVM内存模型(中国计算机研究院、亚信)

  • 讲一下为什么JVM要分为堆、方法区等?原理是什么?(小米、搜狐)

  • JVM的内存模型,线程独有的放在哪里?哪些是线程共享的?哪些是线程独占的?(菜鸟)

  • 简单说一下JVM内存结构(浪潮)

  • JVM内存结构(花旗银行)

  • JVM 内存分哪几个区,每个区的作用是什么?(唯品会)

  • 详解JVM内存模型(360)

  • JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存。(拼多多)

  • 说一下JVM内存模型吧,有哪些区?分别干什么的? (百度)

  • JVM的内存结构划分是什么样子的? (支付宝)

  • JVM 内存分哪几个区,每个区的作用是什么? (蚂蚁金服)

  • Java虚拟机内存模型能说说吗? (蚂蚁金服)

  • JVM内存分布/内存结构? (蚂蚁金服)

  • 讲讲JVM分区 (携程)

  • 一面:讲一下JVM内存布局 (滴滴)

  • Java的内存分区 (字节跳动)

  • 讲讲JVM运行时数据库区 (字节跳动)

  • JVM内存模型以及分区,需要详细到每个区放什么。 (天猫)

  • JVM 内存分哪几个区,每个区的作用是什么? (拼多多)

  • JVM的内存布局以及垃圾回收原理及过程讲一下 (京东)

3.2 程序计数器

  • JVM计数器如何记数(京东-物流)

3.3 栈

  • 堆和栈的区别、谁的性能更高(艾绒软件)

  • 栈是如何运行的(OPPO)

  • JVM有哪些组成,堆,栈各放了什么东西。(新浪)

  • Java 中堆和栈有什么区别?(国美)

  • 什么情况下会发生栈内存溢出。(360)

  • 栈和堆的区别?(蚂蚁金服)

  • 什么情况下会发生栈内存溢出。 (京东)

  • Java中,栈的大小通过什么参数来设置? (阿里)

  • 怎么理解栈、堆?堆中存什么?栈中存什么? (阿里)

  • 为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗? (阿里)

  • 说一下什么情况发生栈溢出 (滴滴)

3.4 堆与MinorGC MajorGC

  • 什么时候对象会进入老年代?(顺丰)

  • 初始堆大小和最大堆大小一样,问这样有什么好处?(亚信)

  • 老年代的垃圾回收机制什么时候触发,自动触发的阈值是多少(蚂蚁金服)

  • 新生代的垃圾回收什么时候触发(蚂蚁金服)

  • 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。(京东-物流)

  • Minor GC 与 Full GC 分别在什么时候发生?(腾讯)

  • 简述 Java 内存分配与回收策略以及 Minor GC 和Major GC(国美)

  • Java 堆的结构是什么样子的?(猎聘)

  • JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor(字节跳动)

  • 什么时候发生Full GC(58)

  • 计算下多长时间触发一次Minor GC(蚂蚁金服)

  • 堆的结构?为什么两个survivor区? (蚂蚁金服)

  • Eden和Survior的比例分配 (蚂蚁金服)

  • JVM内存分区,为什么要有新生代和老年代 (小米)

  • JVM的内存结构,Eden和Survivor比例。 (京东)

  • JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。 (京东)

  • JVM内存分区,为什么要有新生代和老年代? (美团)

  • JVM的内存结构,Eden和Survivor比例。 (京东)

  • JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。 (京东)

  • 堆大小通过什么参数设置? (阿里)

  • 简述 Java 内存分配与回收策略以及 Minor GC 和Major GC (百度)

  • JVM垃圾回收机制,何时触发Minor GC等操作 (蚂蚁金服)

  • JVM的一次完整的GC流程(从ygc到fgc)是怎样的(蚂蚁金服)

  • JVM中最大堆大小有没有限制? (阿里)

  • 描述JVM中一次full gc过程 (腾讯)

3.5 对象分配

  • 什么时候对象会进入老年代?(渣打银行)

  • 什么是空间分配担保策略?(渣打银行)

  • 什么是空间分配担保策略?(腾讯、百度)

  • 什么是空间分配担保策略?(顺丰)

  • 问什么幸存者区15次进入老年区,懂原理吗?(58)

  • JVM的伊甸园区,from区,to区的比例是否可调?(花旗银行)

  • JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代(字节跳动)

  • 什么时候对象会进入老年代? (字节跳动)

  • 对象在堆内存创建的生命周期 (蚂蚁金服)

  • 重点讲讲对象如何晋升到老年代,几种主要的JVM参数 (蚂蚁金服)

  • 新生代和老年代的内存回收策略 (蚂蚁金服)

  • 什么时候对象可以被收回? (蚂蚁金服)

3.6 方法区

  • JVM的永久代中会发生垃圾回收么?(腾讯)

  • JVM的永久代中会发生垃圾回收吗? (美团)

3.7 总结

  • 讲一下为什么JVM要分为堆、方法区等?原理是什么?(UC、智联)

  • JVM的分区了解吗,内存溢出发生在哪个位置 (亚信、BOSS)

  • 简述各个版本内存区域的变化?(猎聘)

  • Java8的内存分代改进 (蚂蚁金服)

  • JVM的内存模型,Java8做了什么修改 (天猫)

  • OOM的错误,StackOverFlow错误,permgen space的错误 (蚂蚁金服)

3.8 String

  • new string()是放在哪里,还放在哪里?(搜狐、万达集团)

4、对象内存布局篇

  • new对象流程?(龙湖地产)

  • 对象创建方法,对象的内存分配,对象的访问定位。(360安全)

  • Java对象头里有什么 (蚂蚁金服)

  • 对象在JVM中是怎么存储的? (美团)

  • 对象头信息里面有哪些东西? (美团)

  • 二面:Java对象头里有什么 (蚂蚁金服)

5、GC篇

5.1 概述

  • 讲讲JVM的gc (携程)

  • GC是什么?为什么要有GC? (蚂蚁金服)

  • 什么情况下触发垃圾回收? (阿里)

5.2 垃圾回收器

  • 常见的垃圾回收器算法有哪些,各有什么优劣?(网易)

  • 常见的垃圾回收器算法有哪些,各有什么优劣?(阿里-天猫、UC)

  • 有哪些垃圾回收方法,jdk8的垃圾收集器是什么?(搜狐、万达集团)

  • G1原理。(亚信)

  • 几种垃圾回收器(亚信)

  • 垃圾回收器有哪些?都有哪些算法来实现?项目中用的垃圾回收器是什么?(平安)

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

  • 你知道那些垃圾回收器(高德地图)

  • 有些垃圾方法,8的垃圾收集器是什么。(新浪)

  • GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。

  • 请问吞吐量的优化和响应优先的垃圾收集器是如何选择的呢?(滴滴)

  • 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。(拼多多)

  • CMS 收集器与 G1 收集器的特点。 (蚂蚁金服)

  • G1回收器讲下回收过程 (蚂蚁金服)

  • 你知道哪几种垃圾回收器,各自的优缺点,重点讲一下cms和g1,包括原理,流程,优缺点 (蚂蚁金服)

  • CMS特点,垃圾回收算法有哪些?各自的优缺点,他们共同的缺点是什么? (天猫)

  • 讲一下CMS垃圾收集器垃圾回收的流程,以及CMS的缺点 (抖音)

  • Java的垃圾回收器都有哪些,说下g1的应用场景,平时你是如何搭配使用垃圾回收器的 (滴滴)

  • 说几个垃圾回收器,cms回收器有哪几个过程,停顿几次,会不会产生内存碎片。老年代产生内存碎片会有什么问题。 (小米)

  • JVM有哪三种垃圾回收器? (阿里)

  • 吞吐量优先选择什么垃圾回收器?响应时间优先呢? (阿里)

  • 常见的垃圾回收器算法有哪些,各有什么优劣? (字节跳动)

  • CMS和G1了解么,CMS解决什么问题,说一下回收的过程。(字节跳动)

  • CMS回收停顿了几次,为什么要停顿两次。(字节跳动)

  • CMS过程是怎样的?内部使用什么算法做垃圾回收? (美团)

  • g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择 (携程)

5.3 垃圾回收算法

  • 什么时候对象可以被收回?(阿里-闲鱼)

  • 什么时候对象可以被收回?(拼多多)

  • GC算法都有哪些?他们之间的区别是什么?(菜鸟)

  • JVM的常用的GC算法(高得地图)

  • JVM的垃圾回收为什么采用分代GC。跟语言有关系吗?(阿里-钉钉)

  • 分代的意义说一下 (阿里-钉钉)

  • 而全GC时间较长 分代GC可以大大降低GC时间而且也可以保证heap不会过快增长(墨迹天气)

  • GC垃圾回收机制算法(数信互融科技发展有限公司)

  • GC的算法,复制算法和标记清除的优缺点?(迪原创新)

  • 常用的GC算法,如何确定哪些是要被清除的哪些是不能被清除(网易邮箱、美团)

  • 垃圾回收机制的几种回收算法(亚信)

  • GC算法都有哪些?他们之间的区别是什么?各自的适用场景?(B站)

  • GC分代算法(花旗银行)

  • 新生代的垃圾回收什么时候触发(花旗银行)

  • 老年代的垃圾回收机制什么时候触发,自动触发的阈值是多少(花旗银行)

  • GC 的两种判定方法:(360安全)

  • GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?(腾讯)

  • 如何判断一个对象是否存活?(唯品会)

  • Java 中垃圾收集的方法有哪些?(苏宁)

  • 你是用什么方法判断对象是否死亡?(滴滴)

  • 说一下GC算法,分代回收说下 (百度)

  • 垃圾收集策略和算法 (百度)

  • 说一下gc算法,分代回收说下 (百度)

  • 说一下gc算法,分代回收说下 (百度)

  • JVM有哪些回收算法,对应的收集器有哪些? (蚂蚁金服)

  • 如何判断一个对象是否存活? (蚂蚁金服)

  • JVM GC算法有哪些,目前的JDK版本采用什么回收算法 (蚂蚁金服)

  • 垃圾回收算法的实现原理。 (京东)

  • JVM场景问题, 标记清除多次后老年代产生内存碎片,引起full gc,接下来可能发生什么问题。 (小米)

  • Java怎么进行垃圾回收的?什么对象会进老年代? 垃圾回收算法有哪些?为什么新生代使用复制算法? (京东)

  • 讲一下JVM中如何判断对象的生死? (京东)

  • 如何选择合适的垃圾收集算法? (阿里)

  • 讲一讲垃圾回收算法。 (阿里)

  • JVM有哪些回收算法,对应的收集器有哪些? (拼多多)

  • 讲讲你知道的垃圾回收算法 (字节跳动)

  • Java对象的回收方式,回收算法。 (字节跳动)

  • JVM垃圾收集算法与收集器有哪些? (京东)

  • JVM场景问题, 标记清除多次后老年代产生内存碎片,引起full gc,接下来可能发生什么问题? (美团)

  • 分代垃圾回收过程? (美团)

  • GC如何分代的?各代用什么算法回收? (美团)

5.4 其 它

  • GC回收的是哪部分的垃圾?(vivo)

  • 什么是内存泄漏和什么是内存溢出(陌陌)

  • Java存在内存泄漏吗,内存泄漏的场景有哪些,如何避免(百度)

  • SafePoint 是什么(360安全)

  • Java 中会存在内存泄漏吗,简述一下?(猎聘)

  • 垃圾回收的优点和原理,并考虑 2 种回收机制?基本原理是什么?(瓜子)

  • 什么是分布式垃圾回收(DGC)?它是如何工作的?(瓜子)

  • 强引用、软引用、弱引用、虚引用的区别?(字节跳动)

  • 垃圾回收的优点和原理。 (蚂蚁金服)

  • 如何解决内存碎片的问题? (阿里)

  • 垃圾回收机制等 (支付宝)

  • Java GC机制?GC Roots有哪些? (拼多多)

  • JVM怎样判断一个对象是否可回收,怎样的对象才能作为GC root (腾讯)

  • 什么是Full GC?GC? major GC? stop the world (腾讯)

  • System.gc()和RunTime.gc()会做什么事情? (字节跳动)

  • Java GC机制?GC Roots有哪些? (字节跳动)

  • 哪些部分可以作为GC Root? (字节跳动)

  • Java GC机制?GC Roots有哪些? (抖音)

  • Java GC机制?GC Roots有哪些? (京东)

  • GC是什么?为什么要有GC? (美团)

  • 简述Java垃圾回收机制 (美团)

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

  • 垃圾回收的优点和原理。(美团)

  • 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?(美团)

  • 有什么办法主动通知虚拟机进行垃圾回收? (美团)

  • GC root如何确定,哪些对象可以作为GC Root? (美团)

  • 你开发中使用过WeakHashMap吗?(京东)

6、执行引擎篇

  • 你是怎么指定JVM启动模式?(字节跳动)

  • 那你知道-server和-client的区别吗?(美图)

7、调优工具篇

  • 怎么获取 Java 程序使用的内存?堆使用的百分比?(国美)

  • 讲讲你理解的性能评价及测试指标?(瓜子)

  • JVM的进程有哪些线程启动,有了解吗?(神州租车)

  • 你使用过Java虚拟机性能监控和故障处理工具吗?(美图)

  • 说说你知道的几种主要的JVM参数(京东)

  • 怎么打出线程栈信息。(字节跳动)

  • JVM的参数,你知道的说一下 (百度)

8、调优篇

  • JVM调优调的哪些参数?在哪里写这些参数? (亚信)

  • 说到内存泄漏,问有没有碰到,内存泄漏怎么解决?(拼多多)

  • 常用的性能优化方式有哪些?(百度金融)

  • 内存泄漏是怎么造成的?(拼多多、字节跳动)

  • 虚拟机如何调优?(顺丰)

  • 内存调优怎么调?有几种方式?参数都有什么?(顺丰)

  • 栈溢出导致的原因?如何解决?(搜狐)

  • JVM调优策略 (杭州鲁尔物联科技有限公司、燕梭金融、汇博云通)

  • JVM调优调的哪些参数?问这样有什么好处?在哪里写这些参数(浪潮)

  • 几种常用的内存调试工具你知道哪些?(搜狐)

  • 如何优化减少Full GC?(阿里-闲鱼)

  • 当出现了内存溢出,你怎么排错。 (京东)

  • 有实际的JVM性能调优案例吗?重点需要关注哪些核心参数? (滴滴)

  • OOM说一下?怎么排查?哪些会导致OOM? OOM出现在什么时候 (腾讯)

  • 内存泄漏与内存溢出的区别 (字节跳动)

  • Java存在内存溢出的现象吗(字节跳动)

  • Java中会存在内存泄漏吗,请简单描述。 (美团)

  • JVM性能调优都做了什么?(支付宝)

  • 有做过JVM内存优化吗? (小米)

  • 从SQL、JVM、架构、数据库四个方面讲讲优化思路 (小米)

  • JVM的编译优化 (蚂蚁金服)

  • JVM性能调优都做了什么 (蚂蚁金服)

  • JVM诊断调优工具用过哪些? (蚂蚁金服)

  • JVM怎样调优,堆内存栈空间设置多少合适.. (蚂蚁金服)

  • JVM相关的分析工具使用过的有哪些?具体的性能调优步骤如何 (蚂蚁金服)

  • 如何进行JVM调优?有哪些方法? (阿里)

  • 如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决? (阿里)

  • JVM如何调优、参数怎么调? (字节跳动)

  • 从SQL、JVM、架构、数据库四个方面讲讲优化思路 (拼多多)

  • JVM诊断调优工具用过哪些? (京东)

  • 每秒几十万并发的秒杀系统为什么会频繁发生GC? (京东)

  • 日均百万级交易系统如何优化JVM? (京东)

  • 线上生产系统OOM如何监控及定位与解决? (京东)

  • 高并发系统如何基于G1垃圾回收器优化性能? (京东)