热门话题白皮书HR资料
3w字!5大JVM知识点精讲,高频面试真题详解!(附免费领取JVM学习笔记)
2024.02.02


Tips:本文适用于开发岗及的同学,全文干货~


写在前面


本文面向准备参加秋招和春招且求职意向为互联网大厂Java岗的同学。本文的核心目的是帮助各位同学在面试中面对JVM问题时能有良好的表现,但是希望各位同学不要死记硬背,在反复的学习中形成自己的理解,这样才会获得面试官的青睐。


先给大家看一些常见的面试题,如果当你在面试时遇到这些问题,你会怎么去回答面试官呢?


  1. 请谈谈对JVM内存模型的理解

  2. 堆内存和栈内存的区别

  3. 直接内存如何使用

  4. 哪些运行时内存是私有的,哪些是共有的

  5. 类加载和对象实例化的区别

  6. 类加载器,尤其是双亲委派

  7. 对象实例化时的内存分配策略及内容

  8. 对象实例化时是否有线程安全问题

  9. 是否了解对象本身的内存布局

  10. 对象有几种访问方式?各自的优缺点

  11. 一个对象到底占用多大内存空间

  12. 了解JVM工具么?(看你是否知道这些工具是干嘛的)

  13. 有调优经验么?(看你对这些工具的使用熟练度)

  14. 为什么要做垃圾回收?哪些内存区域执行垃圾回收?

  15. 怎么判断一片内存应该被执行垃圾回收?

  16. 谈谈垃圾回收算法

  17. 谈谈垃圾回收器


对于以上问题,你知道应该怎么回答才能获得面试官的青睐吗?


对于以上高频考点,我们对JVM的重点内容进行了总结和详解。


JVM重要知识点为以下5大点:


  • JVM内存模型篇

  • JVM类加载

  • JVM对象实例化

  • JVM工具及调优

  • JVM垃圾回收算法及垃圾回


一、JVM内存模型篇


本节内容较为重要且偏理论,需要同学们反复理解记忆。其中涉及的运行时数据区域部分具有相当多的细节点,因此在理解时建议大家自己多在纸上画画架构图辅助记忆,例如:



本内容在面试中有90%的概率被提及。


那么针对刚开始的前4道题的回答,这里有一个万变不离其宗的模板,模板结构如下:


  • 简述JVM为什么使用内存,使用内存都做什么?

  • 内存被分为哪些区域?(直接内存,运行时区域)

  • 运行时区域由哪些部分组成?各自都有哪些特性?在JVM中起到什么作用?是否私有?会不会出现OutOfMemory?

  • 对虚拟机栈理解深刻的同学可以额外回答下栈上分配以及逃逸分析等加分点

  • 对堆理解深刻的同学可以通过讲堆与GC关系,从而引导面试官问一些垃圾回收的问题

  • 方法区重点讲常量池以及Java版本变化对方法区的影响

  • 讲一讲自己在写代码时new的对象到底在哪个区域上存储


二、JVM类加载


本节内容主要是理论,有少量源码需要掌握。在理解时同样要结合图片,在面试时脑海里只要浮现出图片,很容易就将理论内容讲出来。



双亲委派部分需要同学们必须掌握,甚至能自己手写伪代码。如果基础较深,可以讲讲双亲委派被破坏的场景,结合一些框架的设计思路讲效果更佳。


三、JVM对象实例化


本节内容主要是理论,与JVM类加载有较大关联。


本节内容在面试中有60%的概率会被提及,开头提及的7到11题即属于这一部分的内容常考题。


对象内存布局部分基础较深的同学可以讲讲对TLAB的理解,这块儿是家分点。美团面试官喜欢抠对象头的内存空间如何分配,如果能精确到具体字节数以及32位与64区别将会得到加分。此外,对象头部分也涉及轻重锁,可以适当引导面试官问一些多线程的问题。


四、JVM工具及调优


本节内容理论较少,实战偏多。同学们需要跟着文章中的指引实操一遍,然后自己基于手头的Java项目进行调优。


这部分内容需要同学们不断精进,要有自己调优的体验,在面试中通过罗列具体的数据使面试官信服。感兴趣的同学可以进一步深入学习垃圾回收,因为很多线上问题都是由于FullGC导致的,一些调优经验可以缓解线上频繁GC的问题。


五、JVM垃圾回收算法及垃圾回收


本节内容很理论,理解起来确实有些困难,但是同学们切勿死记硬背,对于面试官来说,他们想要知道的是你对于知识点的理解,而非你搬运的知识。


对于面试中垃圾回收相关的一切问题,均可以用下面这套模板,同学们根据自己的水平可以增减内容:


对于15题:


  • 引用计数&可达性分析,内容及优缺点分析

  • 可达性分析的细节,哪些对象作为根对象开始分析?

  • 有些面试官可能会问循环计数是否有解决方案,这块是加分点


对于16题:


  • 介绍四种垃圾回收算法

  • 垃圾回收算法与是否分代的关系


对于17题:


  • 常见垃圾回收器各自的特性,适用于哪个代?各自的优缺点

  • 基础好的同学可以着重对比CMS和G1,最好有调优经验,这部分是加分点

  • 谈谈GC对内存分配的影响(优先Eden、大对象及长期存活对象晋升以及空间担保分配)

  • 基础好的同学可以谈谈近几年衍生出的新垃圾回收器,例如ZGC的特性,这块是加分点

  • 基础好的同学可以跳出JVM的局限,谈谈其他语言的GC,并和JVM对比,这块是加分点



以上内容全部总结于牛客大学官方自制专刊《Java面试必问—JVM考点精讲》



校招竞争日益激烈,企业招聘的门槛也随之越来越高,大厂hc少之又少,名副其实“挨踢”行业。


在这个庞大的技术知识体系下,不知道学什么、怎么学?


面试高频考点是什么、怎么回答才能得到面试官的青睐?



牛客官方团队联合大厂一面面试官打造,历时10个月零20天,每篇文章4轮审核,争取给到同学最详细的讲解和最高频的知识点。


本专刊针对Java面试考点,精讲JVM知识点,为大家的大厂求职路保驾护航!


针对如今校招痛点,深入详解JVM知识考点,列出高频真题并详细解答!探索JVM精髓!


专刊大纲



专刊服务


  1. 读者交流群,任何对于专刊本身或者服务方面的建议都可以随时与牛客运营小姐姐进行沟通

  2. 官方定期回复评论问题

  3. 赠送开发岗位对应求职资料(购买后加七七老师微信即可解锁)



专刊价格


原价39元,推文福利价29元(截止到4月16日晚24:00)


p.s.点击阅读原文或直接添加七七老师微信购买哦



最后,标题承诺给大家的免费福利:


JVM内存模型知识点精讲.html (点击即可免费阅读!



春招进度条已经快撑不住了


如果你是今年应届,请立马开始学习,抓住春招的触底反弹的机会!


如果你要开始参加今年下半年的秋招,也请开始制定学习计划,在提前批就快人一步!


牛客为你保驾护航!

你只负责沉下心好好学习!

逆风翻盘,惊艳所有人!



点击阅读原文直达优惠购买链接

▼▼▼

▼▼▼