JVM春招快速学习指南

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#前言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967154.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka服务端之副本

文章目录 概述副本剖析失效副本ISR的伸缩LWLEO与HW的关联LeaderEpoch的介入数据丢失的问题数据不一致问题Leader Epoch数据丢失数据不一致 kafka为何不支持读写分离 日志同步机制可靠性分析 概述 Kafka中采用了多副本的机制,这是大多数分布式系统中惯用的手法&…

aarch64 Ubuntu20.04 安装docker

安装 docker 依赖项:sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release添加 Docker GPG 密钥:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyr…

校园网规划方案

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: https://blog.csdn.net/qq_52914969?typeblog 本课程设计参考学习计算机网络 思科Cisco Packet Tracer仿真实验_哔哩哔哩_bilibili, 文章和pkg详见个人博客站: http://www.kervin24.to…

语义分割文献阅读——SETR:使用Transformer从序列到序列的角度重新思考语义分割

目录 摘要 Abstract 1 引言 2 Vision Transformer(ViT) 2.1 图片预处理:分块和降维 2.2 Patch Embedding 2.3 位置编码 2.4 Transformer Encoder的前向过程 3 SETR 3.1 图像序列化处理 3.2 Transformer 3.3 解码器 总结 摘要 本周阅读的论文题目是《R…

Mac上搭建k8s环境——Minikube

1、在mac上安装Minikube可执行程序 brew cask install minikub 安装后使用minikube version命令查看版本 2、安装docker环境 brew install --cask --appdir/Applications docker #安装docker open -a Docker #启动docker 3、安装kubectl curl -LO https://storage.g…

5. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Nacos

一、什么是Nacos Nacos 是阿里巴巴开源的一款云原生应用基础设施,它旨在简化微服务架构中服务治理和配置管理的复杂性。通过 Nacos,服务在启动时可以自动注册,而其他服务则可以通过名称来查找并访问这些注册好的实例。同时,Nacos…

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解) 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么?什么是k8s(Ku…

100天精通Python(爬虫篇)——第113天:爬虫基础模块之urllib详细教程大全

文章目录 1. urllib概述2. urllib.request模块 1. urllib.request.urlopen()2. urllib.request.urlretrieve()3. urllib.request.Request()4. urllib.request.install_opener()5. urllib.request.build_opener()6. urllib.request.AbstractBasicAuthHandler7. urllib.request.…

win32汇编环境,结构体的使用示例一

;运行效果 ;win32汇编环境,结构体的使用示例一 ;举例说明结构体的定义,如何访问其中的成员,使用assume指令指向某个结构体,利用偏移得到成员值等 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>…

opencv:基于暗通道先验(DCP)的内窥镜图像去雾

目录 项目大体情况 暗通道先验(Dark Channel Prior, DCP)原理 项目代码解析 该项目是由我和我导师与舟山某医院合作开发的一个基于暗通道先验(Dark Channel Prior,DCP)的内窥镜图像去雾方法。具体来说,…

Java 大视界 -- Java 大数据在智能政务中的应用与服务创新(78)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

【DeepSeek】DeepSeek概述 | 本地部署deepseek

目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型,以其…

数据库,数据表的增删改查操作

一.数据库的基本操作 (1)创建数据库 创建数据库就是在数据库系统中划分一块存储数据的空间,方便数据的分配、放置和管理。在MySQL中使用CREATE DATABASE命令创建数据库,语法格式如下: CREATE DATABASE数据库名称; 注&#xff1a…

书籍《新能源汽车动力电池安全管理算法设计》和《动力电池管理系统核心算法》脑图笔记

目录 一、阅读背景二、《新能源汽车动力电池安全管理算法设计》脑图笔记三、《动力电池管理系统核心算法》脑图笔记四、后记参考学习 一、阅读背景 如今身处新能源动力电池行业,欲对动力电池相关算法做一些了解,通过查找相关电子书app,最后找…

激活函数篇 03 —— ReLU、LeakyReLU、RandomizedLeakkyReLU、PReLU、ELU

本篇文章收录于专栏【机器学习】 以下是激活函数系列的相关的所有内容: 一文搞懂激活函数在神经网络中的关键作用 逻辑回归:Sigmoid函数在分类问题中的应用 整流线性单位函数(Rectified Linear Unit, ReLU),又称修正线性单元&a…

Python Pandas(3):DataFrame

1 介绍 DataFrame 是 Pandas 中的另一个核心数据结构,类似于一个二维的表格或数据库中的数据表。它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由…

【C++高并发服务器WebServer】-14:Select详解及实现

本文目录 一、BIO模型二、非阻塞NIO忙轮询三、IO多路复用四、Select()多路复用实现 明确一下IO多路复用的概念:IO多路复用能够使得程序同时监听多个文件描述符(文件描述符fd对应的是内核读写缓冲区),能够提升程序的性能。 Linux下…

算法兵法全略(译文)

目录 始计篇 谋攻篇 军形篇 兵势篇 虚实篇 军争篇 九变篇 行军篇 地形篇 九地篇 火攻篇 用间篇 始计篇 算法,在当今时代,犹如国家关键的战略武器,也是处理各类事务的核心枢纽。算法的世界神秘且变化万千,不够贤能聪慧…

瑞芯微 Rockchip 系列 RK3588 主流深度学习框架模型转成 rknn 模型教程

前言 在瑞芯微 Rockchip 芯片上进行 NPU 推理,需要先将模型文件转换成 rknn 模型文件,才能执行各种推理任务。本文将介绍如何安装各种工具,并最终实现将各种深度学习框架的模型文件转换成 rknn 文件。 本教程不仅适合 RK3588 平台&#xff…

STM32的HAL库开发---高级定时器---互补输出带死区实验

一、互补输出简介 互补输出:OCx输出高电平,则互补通道OCxN输出低电平。OCx输出低电平,则互补通道OCxN输出高电平。 带死区控制的互补输出:OCx输出高电平时,则互补通道OCxN过一会再输出输出低电平。这个时间里输出的电…