运维开发网

JVM虚拟机面试题(2021最新版)

运维开发网 https://www.qedev.com 2021-04-19 10:30 出处:51CTO 作者:麒麟攻城狮
前言作为Java的从业者,在找工作的时候,一定会被问及关于JVM相关的知识。JVM知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。在这里我们将详细的整理常见的JVM面试题目,并给出标准答案,这里小编也整理了一份思维导图分享给到大家,提供给大家学习参考。小编分享的这份金三银四Java后端开发面试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Ja

前言

作为 Java 的从业者,在找工作的时候,一定会被问及关于 JVM 相关的知识。JVM 知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。在这里我们将详细的整理常见的 JVM 面试题目,并给出标准答案,这里小编也整理了一份思维导图分享给到大家,提供给大家学习参考。

JVM虚拟机面试题(2021最新版)

小编分享的这份金三银四Java后端开发面试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、 分布式&数据结构与算法等26个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!【持续更新中!】

完整版Java面试题地址:2021最新面试题合集集锦。

序号 专题 内容 链接
1 中间件 Java中间件面试题(2021最新版) ​ https://blog.51cto.com/14994509/2692669
2 微服务 Java微服务面试题(2021最新版) ​ https://blog.51cto.com/u_14994509/2694841
3 并发编程 Java并发编程面试题(2021最新版) https://blog.51cto.com/u_14994509/2703303
4 Java基础 Java基础知识面试题(2021最新版) https://blog.51cto.com/blogger/success/2706687
5 Spring Boot Spring Boot面试题(2021最新版) https://blog.51cto.com/u_14994509/2709421
6 Redis Redis面试题(2021最新版) https://blog.51cto.com/u_14994509/2711546
7 Spring MVC Spring MVC面试题(2021最新版) https://blog.51cto.com/u_14994509/2711562
8 Spring Cloud Spring Cloud面试题(2021最新版) https://blog.51cto.com/u_14994509/2716500
9 MySQL优化 MySQL优化面试题(2021最新版) https://blog.51cto.com/u_14994509/2716504
10 JVM JVM性能调优面试题(2021最新版) 持续更新中!
11 Linux Linux面试题(2021最新版) 持续更新中!
12 Mybatis Mybatis面试题(2021最新版) 持续更新中!
13 网络编程 TCP,UDP,Socket,Http网络编程面试题(2021最新版) 持续更新中!
14 设计模式 设计模式面试题(2021最新版) 持续更新中!
15 大数据 大数据面试题100道(2021最新版) 持续更新中!
16 Tomcat Tomcat面试题(2021最新版) 持续更新中!
17 多线程 多线程面试题(2021最新版) 持续更新中!
18 Nginx Nginx_BIO_NIO_AIO面试题(2021最新版) 持续更新中!
19 memcache memcache面试题(2021最新版) 持续更新中!
20 java异常 java异常面试题(2021最新版) 持续更新中!
21 Java虚拟机 Java虚拟机面试题(2021最新版) 持续更新中!
22 Java集合 Java集合面试题(2021最新版) 持续更新中!
23 Git常用命令 Git常用命令(2021最新版) 持续更新中!
24 Elasticsearch Elasticsearch面试题(2021最新版) 持续更新中!
25 Dubbo Dubbo面试题(2021最新版) 持续更新中!

1.什么情况下会发生栈内存溢出。

JVM虚拟机面试题(2021最新版)

2.详解JVM内存模型

思路: 给面试官画一下JVM内存模型图,并描述每个模块的定义,作用,以及可能会存在的问题,如栈溢出等。

我的答案:

JVM内存结构

JVM虚拟机面试题(2021最新版)

3.JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。

JVM虚拟机面试题(2021最新版)

4. JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代

JVM虚拟机面试题(2021最新版)

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

JVM虚拟机面试题(2021最新版)

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

思路: 先画出Java内存模型图,结合例子volatile ,说明什么是重排序,内存屏障,最好能给面试官写 以下demo说明。

我的答案:

1)Java内存模型图:

JVM虚拟机面试题(2021最新版)

Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中 保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要自己的工作内存和主存之间进行数据同步进行。

2)指令重排序。

在这里,先看一段代码

public class PossibleReordering { static int x = 0, y = 0; static int a = 0, b = 0; public static void main(String[] args) throws InterruptedException { Thread one = new Thread(new Runnable() { public void run() { a = 1; x = b; } });Thread other = new Thread(new Runnable() { public void run() { b = 1; y = a; } }); one.start();other.start(); one.join();other.join(); System.out.println(“(” + x + “,” + y + “)”);}

运行结果可能为(1,0)、(0,1)或(1,1),也可能是(0,0)。因为,在实际运行时,代码指令可能并不是严格按照代码语句顺序执行的。大多数现代微处理器都会采用将指令乱序执行(out-of-order execution,简称OoOE或OOE)的方法,在条件允许的情况下,直接运行当前有能力立即执行的后续指令,避开获取下一条指令所需数据时造成的等待3。通过乱序执行的技术,处理器可以大大提高执行效率。而这就是

指令重排

JVM虚拟机面试题(2021最新版)

7.简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。

JVM虚拟机面试题(2021最新版)

双亲委派模型图:

JVM虚拟机面试题(2021最新版)

8.说说你知道的几种主要的JVM参数

JVM虚拟机面试题(2021最新版)

JVM虚拟机面试题(2021最新版)

JVM虚拟机面试题(2021最新版)

9.怎么打出线程栈信息。

JVM虚拟机面试题(2021最新版)

10.强引用、软引用、弱引用、虚引用的区别?

JVM虚拟机面试题(2021最新版)

JVM虚拟机面试题(2021最新版)

11.内存模型以及分区,需要详细到每个区放什么。

JVM虚拟机面试题(2021最新版)

12.堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。

JVM虚拟机面试题(2021最新版)

13.简述 java 垃圾回收机制?

JVM虚拟机面试题(2021最新版)

14.java 中垃圾收集的方法有哪些?

JVM虚拟机面试题(2021最新版)

JVM虚拟机面试题(2021最新版)

15.java 内存模型

JVM虚拟机面试题(2021最新版)

JVM虚拟机面试题(2021最新版)

16.java 类加载过程?

JVM虚拟机面试题(2021最新版)

[图片上传失败...(image-1724a6-1618753895697)]

17. 简述 java 类加载机制?

虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的 java 类型。

18. 类加载器双亲委派模型机制?

当一个类收到了类加载请求时,不会自己先去加载这个类,而是将其委派给父类,由父类去加载,如果此时父类不能加载,反馈给子类,由子类去完成类的加载。

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

JVM虚拟机面试题(2021最新版)

20.简述 java 内存分配与回收策率以及 Minor GC 和 Major GC

  • 对象优先在堆的 Eden 区分配。
  • 大对象直接进入老年代.
  • 长期存活的对象将直接进入老年代当 Eden 区没有足够的空间进行分配时,虚拟机会执行一次 Minor GC.Minor Gc 通常发生在新生代的 Eden 区,在这个区的对象生存期短,往往发生 Gc 的频率较高,回收速度比较快;Full Gc/Major GC 发生在老年代,一般情况下,触发老年代 GC的时候不会触发 Minor GC,但是通过配置,可以在 Full GC 之前进行一次 Minor GC 这样可以加快老年代的回收速度。
0

精彩评论

暂无评论...
验证码 换一张
取 消