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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895112.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895112.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895112.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek API 調用 - Spring Boot 實現

DeepSeek API 調用 - Spring Boot 實現 1. 項目依賴 在 pom.xml 中添加以下依賴&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depe…

認識Electron 開啟新的探索世界一

一、Electron輕松入門 1.搭建開發環境&#xff1a; 一般情況下開發者會使用node.js來創建electron項目&#xff0c;node.js是一個基于Chrome V8引擎的javascript運行環境&#xff0c;所以首先需要到官網去下載安裝node.js 下載鏈接&#xff1a;https://nodejs.org/enhttps://no…

MySQL下載過程

MySQL Enterprise Edition Downloads | Oracle mysql官方下載網址&#xff08;9.2版本&#xff09; 下面的示例是5.7的包&#xff0c;過程是一樣的 port&#xff1a;3308&#xff08;默認的是3306&#xff0c;筆者下了一個占用了該端口&#xff09; root&#xff1a;123456 問題…

【學術投稿】第五屆計算機網絡安全與軟件工程(CNSSE 2025)

重要信息 官網&#xff1a;www.cnsse.org 時間&#xff1a;2025年2月21-23日 地點&#xff1a;中國-青島 簡介 第五屆計算機網絡安全與軟件工程&#xff08;CNSSE 2025&#xff09;將于2025年2月21-23日在中國-青島舉行。CNSSE 2025專注于計算機網絡安全、軟件工程、信號處…

Qt:QWidget核心屬性

目錄 QWidget核心屬性 enab geometry WindowFrame的影響 windowTitle windowIcon qrc文件管理資源 windowOpacity cursor font toolTip focusPolicy styleSheet QWidget核心屬性 在Qt中使用QWidget類表示"控件"&#xff0c;如按鈕、視圖、輸入框、滾動…

Linux TCP 編程詳解與實例

一、引言 在網絡編程的領域中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;協議因其可靠的數據傳輸特性而被廣泛應用。在 Linux 環境下&#xff0c;使用 C 或 C 進行 TCP 編程可以實現各種強大的網絡應用。本文將深入探討 Linux TCP 編程的各個方面&…

原生redis實現分布式鎖

用 原生 Redis&#xff08;Jedis、Lettuce&#xff09; 實現分布式鎖&#xff0c;可以參考 Redisson 的原理&#xff0c;但需要自己處理鎖的自動續期、故障恢復等細節。核心思路是使用 Redis 的 SET NX EX 或 SET PX NX 命令來實現互斥鎖&#xff0c;并利用 Lua 腳本 保障原子性…

論文筆記:Rethinking Graph Neural Networks for Anomaly Detection

目錄 摘要 “右移”現象 beta分布及其小波 實驗 《Rethinking Graph Neural Networks for Anomaly Detection》&#xff0c;這是一篇關于圖&#xff08;graph&#xff09;上異常節點診斷的論文。 論文出處&#xff1a;ICML 2022 論文地址&#xff1a;Rethinking Graph Ne…

神經網絡常見激活函數 6-RReLU函數

文章目錄 RReLU函數導函數函數和導函數圖像優缺點pytorch中的RReLU函數tensorflow 中的RReLU函數 RReLU 隨機修正線性單元&#xff1a;Randomized Leaky ReLU 函數導函數 RReLU函數 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…

Vue(6)

一.路由板塊封裝 &#xff08;1&#xff09;路由的封裝抽離 目標&#xff1a;將路由板塊抽離出來 好處&#xff1a;拆分板塊&#xff0c;利于維護 // 路由的使用步驟 5 2 // 5個基礎步驟 // 1. 下載 v3.6.5 // 2. 引入 // 3. 安裝注冊 Vue.use(Vue插件) // 4. 創建路由對象…

【python】matplotlib(animation)

文章目錄 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折線圖2.2、條形圖2.3、散點圖 3、參考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 庫中用于創建動畫的一個…

【東莞常平】戴爾R710服務器不開機維修分享

1&#xff1a;2025-02-06一位老客戶的朋友剛開工公司ERP服務器一臺戴爾老服務器故障無法開機&#xff0c;于是經老客戶介紹找到我們。 2&#xff1a;服務器型號是DELL PowerEdge R710 這個服務器至少也有15年以上的使用年限了。 3&#xff1a;客戶反饋的故障問題為&#xff1a;…

Spring AI -使用Spring快速開發ChatGPT應用

前言 Spring在Java生態中一直占據大半江山。最近我發現Spring社區推出了一個Spring AI項目&#xff0c;目前該項目還屬于Spring實驗性項目&#xff0c;但是我們可以通過該項目&#xff0c;可以非常快速的開發出GPT對話應用。 本篇文章將會對SpringAI進行簡單的介紹和使用&#…

經典排序算法復習----C語言

經典排序算法復習 分類 交換類 冒泡快排 分配類 計數排序基數排序 選擇類 選擇排序 堆排序 歸并類 歸并排序 插入類 直接插入排序 希爾排序 折半插入排序 冒泡排序 基于交換。每一輪找最大值放到數組尾部 //冒泡排序 void bubSort(int* arr,int size){bool sorte…

BFS解決拓撲排序(3題)

目錄 拓撲排序 1.如何排序&#xff1f; 2.如何形成拓撲排序 3.如何建圖 1.看數據稠密度 2. 根據算法流程靈活建圖 1.課程表 2.課程表2 3.火星詞典 拓撲排序 找到做事情的先后順序&#xff0c;拓撲排序的結果可能不是唯一的 1.如何排序&#xff1f; 1.找出圖中入度為…

kafka 3.5.0 raft協議安裝

前言 最近做項目&#xff0c;需要使用kafka進行通信&#xff0c;且只能使用kafka&#xff0c;筆者沒有測試集群&#xff0c;就自己搭建了kafka集群&#xff0c;實際上筆者在很早之前就搭建了&#xff0c;因為當時還是zookeeper&#xff08;簡稱ZK&#xff09;注冊元數據&#…

Unity項目接入xLua的一種流程

1. 導入xlua 首先導入xlua&#xff0c;這個不用多說 2. 編寫C#和Lua交互腳本 基礎版本&#xff0c;即xlua自帶的版本 using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using System; using System.IO;[Serializable] public…

四次揮手詳解

文章目錄 一、四次揮手各狀態FIN_WAIT_1CLOSE_WAITFIN_WAIT_2LAST_ACKTIME_WAITCLOSE 二、雙方同時調用close()&#xff0c;FIN_WAIT_1狀態后進入CLOSING狀態CLOSING狀態 三、TIME_WAIT狀態詳解(1) TIME_WAIT狀態下的2MSL是什么MSL &#xff08;報文最大生存時間&#xff09;為…

【嵌入式 Linux 音視頻+ AI 實戰項目】瑞芯微 Rockchip 系列 RK3588-基于深度學習的人臉門禁+ IPC 智能安防監控系統

前言 本文主要介紹我最近開發的一個個人實戰項目&#xff0c;“基于深度學習的人臉門禁 IPC 智能安防監控系統”&#xff0c;全程滿幀流暢運行。這個項目我目前全網搜了一圈&#xff0c;還沒發現有相關類型的開源項目。這個項目只要稍微改進下&#xff0c;就可以變成市面上目前…

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 創建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…