JVM春招快速学习指南

embedded/2025/2/13 16:34:38/

1.说在前面

在Java相关岗位的春/秋招面试过程中,JVM的学习是必不可少的。本文主要是通过《深入理解Java虚拟机》第三版来介绍JVM的学习路线和方法,并对没有过JVM基础的给出阅读和学习建议,尽可能更加快速高效的进行JVM的学习与秋招面试的备战。

2.JVM是什么

在介绍JVM的学习备战路线和方法之前,先对JVM是什么做一个介绍,通过JVM是什么来理解为什么要学习JVM。

JVM即Java Virtual Machine,Java虚拟机,简单来说就是一台虚拟的计算机,平时编写的Java代码就需要借助JVM来运行。

详细点说,JVM内部实现了内存管理,例如JVM能够给我们Java代码中的对象进行内存分配、当对象没用的时候进行垃圾回收。而内存是我们操作系统的东西,所以JVM就相当于一个中间调度者,我们的Java代码编译生成字节码,字节码交给JVM,JVM调用操作系统的东西来实现代码的运行。过程如下图所示

在这里插入图片描述

通过上图不难得出Java“编译一次,到处运行”的原因,我们的Java代码都是 .java文件,通过编译生成 .class文件,然后class文件交给JVM,其他的执行细节都由JVM来完成,所以只要不同的操作系统上都安装了JVM就能够实现“编译一次,到处运行”。

到这里,大概已经明白了JVM是什么,JVM能够干什么,当然JVM的重要性也不言而喻,所以接下来介绍JVM的学习路线。

3.JVM学习指南

如果是准备面试的话,JVM的学习一共需要两个阶段,第一阶段主要通过看书来掌握JVM的理论基础和内涵,第二个阶段则是系统的看八股文(面试题)来达到一个复习和应对面试的效果

下图展示了《深入理解Java虚拟机》一书的目录,我把书的目录按照面试中出现的频率进行了划分。

在这里插入图片描述

选读: 选读部分主要是JVM实践和调优的部分,如果当前面试时间比较紧迫就可以跳过这一个部分。但有时间的话还是推荐阅读这一部分,JVM调优相对其它章节难度较大,但在校招的面试中是绝对的加分项

了解: 了解的部分是书中第六章,类文件结构,这部分主要介绍了Class文件的结构,这部分需要有一定的了解

掌握: 掌握部分是第八章的字节码执行引擎以及十二、十三章的并发部分。第八章的字节码分析,是比JVM调优稍微简单点的面试加分项,书中的分析也十分到位,作者几乎已经把知识给你嚼碎了,只差你自己送到胃里,所以把整个部分归纳为了掌握。至于十二和十三章,如果对Java并发编程有过学习推荐仔细阅读,会有不一样的收获。但如果备战学习的过程中还没有进行并发编程的学习,那么这两章可以先放一放,暂时不看,在Java并发编程的学习体系中更系统的去学习会更好。

熟悉: 第二章和第三章归纳为了熟悉,第二章是JVM学习的理论基础所以这一章必须深入理解并记忆。第三章垃圾回收则是面试的大热门,并且学习的成本相对上面的JVM调优和字节码指令要低,垃圾回收的知识体系结构划分的很清晰,所以学习难度相对不大。

(书中还有一个第一章,第一章讲讲Java发展史,然后教你装了个JDK,但我们所有人电脑上都已经有JDK了,所以第一章可看可不看吧,看了拓宽一下视野)

看完书之后就可以看面试题了,这里推荐库森和Guide的网站,网站上归纳了很完善的面试题。

库森:https://www.javalearn.cn/#/doc/JVM/面试题

Guide:https://javaguide.cn/java/jvm/memory-area.html#前言


http://www.ppmy.cn/embedded/161901.html

相关文章

爬虫瑞数5.5案例:某钢材交易官网(面向对象补环境)

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、瑞数简介 瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装…

AI前端开发:赋能开发者,提升解决实际问题的能力

近年来,人工智能技术飞速发展,深刻地改变着各行各业。在软件开发领域,AI写代码工具的出现更是引发了一场革命,尤其是前端开发领域,AI的应用正在显著提升开发者的解决实际问题的能力。本文将探讨AI前端开发如何提升效率…

使用verilog 实现cordic 算法 ---- 向量模式

分享个人写的 coridic 向量模式的RTL: cordic 算法向量模式主要作用是求出向量的模值以及 arctan (x/y) 值; 首先从仿真图去了解cordic 算法向量模式的 作用,不同数据测试; 后续拓展:将旋转模…

【Elasticsearch】bucket_sort

Elasticsearch 的bucket_sort聚合是一种管道聚合,用于对父多桶聚合(如terms、date_histogram、histogram等)的桶进行排序。以下是关于bucket_sort的详细说明: 1.基本功能 bucket_sort聚合可以对父聚合返回的桶进行排序&#xff…

基于 openEuler 构建 LVS-DR 群集。

1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。 2. 基于 openEuler 构建 LVS-DR 群集。 1.LVS(Linux Virtual Server)负载均衡群集的NAT模式和DR模式各有优势,具体如下: NAT模式优势 - 部署…

ollama部署deepseek实操记录

1. 安装 ollama 1.1 下载并安装 官网 https://ollama.com/ Linux安装命令 https://ollama.com/download/linux curl -fsSL https://ollama.com/install.sh | sh安装成功截图 3. 开放外网访问 1、首先停止ollama服务:systemctl stop ollama 2、修改ollama的servic…

如何通过 bugreport 分析 Android 系统日志?

📢 1. 职业规划篇 来聊聊安卓职业规划?整机开发大专能做么? 📢 2.基础篇 基础篇.前言 基础篇.编译环境搭建 基础篇.源码目录简介 基础篇.系统 mk_bp 讲解 基础篇.开机动画定制 基础篇.定制桌面壁纸、导航方式 基础篇.系统属性、ap…

Java进阶:Dubbo

分布式RPC框架Apache Dubbo 1. 软件架构的演进过程 软件架构的发展经历了由单体架构、垂直架构、SOA架构到微服务架构的演进过程,下面我们分别了解一下这几个架构。 1.1 单体架构 架构说明: 全部功能集中在一个项目内(All in one&#xf…