大廠面試系列(一)::JVM基礎

JVM面試題

字節碼相關

  • 知道字節碼嗎?字節碼都有哪些?

JMM內存模型

  • 說說JVM的主要組成部分以及做用?
  • jvm內存模型,內存屏障
  • 對象必定分配在堆棧對象不必定分配在堆上,JIT能夠實現棧上分配
  • java線程模型和jvm線程模型區分
  • Java堆的內存結構? 在什麼地方會發生OOM? 如何分析OOM發生的緣由? 讓你本身實現OOM,你會怎麼作?
  • 什麼東西分配在堆上和棧上?
  • 一個對象從建立到銷燬都是怎麼在這些部分裏存活和轉移的?
  • JVM 運行時區域 常見的堆內存溢出狀況
  • 棧溢出的情形(遞歸,調節-Xss

類加載器

  • 什麼是雙親委派模型?
  • 類加載器的本質
  • 類加載器爲何有三層結構
  • 怎麼自定義類加載器作容器隔離?
  • 講講類加載機制唄?都有哪些類加載器,這些類加載器都加載哪些文件?
  • 手寫一下類加載Demo
  • Classloader做用
  • 講一講類加載器工做機制?你知道強引用、弱引用和軟引用嗎?爲何要有這些東西?他們有什麼做用?你在項目中用過嗎?
  • 說一下java類加載器的工做機制?類加載在那個區域進行的?
  • 你本身定義的類能被最頂級的類加載器加載嗎?爲何? 自定義的類會被什麼類加載器加載? 如何加載一個不在根目錄下的類?
  • 什麼是雙親委派模型?爲何Java的類加載器要使用雙親委派模型? 1五、如何自定義本身的類加載器,本身的類加載器和Java自帶的類加載器關係如何處理?
  • 什麼是tomcat/jboss類加載機制?

GC垃圾回收

  • 簡單闡述下垃圾回收機制
  • 堆的原理和分代瞭解嗎
  • GC方式有哪些?它們的原理是什麼?
  • CMS和G1各自使用的算法以及優缺點
  • 內存分配策略(如何在Eden和老年代中分配)、回收策略(Minor GC、Full GC)
  • 談談你對上面GC中回收對象中提出的對象有什麼理解?回收那些對象,須要怎麼分辨?
  • 你瞭解的垃圾收集算法有哪些?
  • 你瞭解那些垃圾收集器?
  • 線上發送頻繁fullgc如何處理?
  • 新生代,老年代說下?
  • 通常新生代逃過幾回gc()會被劃分到老年代?
  • survivor區做用
  • jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等
  • 你知道哪幾種垃圾收集器,各自的優缺點,重點講下CMS
  • 新生代垃圾收集是否會停頓 ,cms是否會停頓,在何時停頓
  • 講講 GC,清除,整理,交換(survivor 區域),CMS 執行的過程
  • 什麼狀況會致使內存泄露,內存溢出,你怎麼解決的。
  • gc怎麼回收對象的,用了什麼算法 說一下分治算法思想
  • JVM垃圾回收機制,什麼時候觸發MinorGC等
  • 新生代和老生代的內存回收策略 ,Eden和Survivor的比例分配等
  • Java 8的內存分代改進
  • 簡述java內存分配與回收策略以及Minor GC和Major GC?
  • 內存溢出通常發生在哪一個區?永久代會不會致使內存溢出?
  • 棧溢出通常拋出什麼異常?jvm設置棧的大小,參數?
  • 說說GC的過程 強制young gc會有什麼問題? 知道G1麼? 回收過程是怎麼樣的?
  • CMS GC有什麼問題? 怎麼避免產生浮動垃圾?
  • 若是web服務器忽然出現頻率很高的FullGC,多是什麼緣由?你會怎麼去排查呢?
  • 「只對堆進行gc 」這句話對不對?調用system.gc()立刻就執行gc嗎?
  • GC的機制是什麼?垃圾回收器的基本原理是還說呢麼?是否能夠當即回收內存?怎麼樣主動的通知JVM進行垃圾回收?
  • 頻繁老年代回收怎麼分析和解決?
  • 何時一個對象會被GC? 接着問爲何要在這種時候對象纔會被GC? GC策略都有哪些分類?這些策略分別都有什麼優劣勢?都適用於什麼場景? 舉個實際的場景,讓選擇一個GC策略?而後問什麼要選擇這個策略?
  • 內存的哪些部分會參與GC的回收?
  • 線程池中的線程爲何不會被GC回收
  • JVM 簡述 G1,可預測停頓時間,是怎麼作到的?
  • CMS和G1的區別,講一講CMS垃圾收集的步驟,哪些步驟是併發哪些是並行。知道哪些垃圾收集算法
  • 觸發Full GC 的場景有哪些? 說說G1垃圾回收器?老年代,年輕代如何分配?
  • 垃圾回收基本原理、幾種常見的垃圾回收器的特性、重點了解CMS(或G1)以及一些重要的參數 內存區域:能說清jvm的內存劃分 常見問題 CMS GC回收分爲哪幾個階段?分別作了什麼事情? CMS有哪些重要參數? Concurrent Model Failure和ParNew promotion failed什麼狀況下會發生? CMS的優缺點? 有作過哪些GC調優? 爲何要劃分紅年輕代和老年代? 年輕代爲何被劃分紅eden、survivor區域? 年輕代爲何採用的是複製算法? 老年代爲何採用的是標記清除、標記整理算法 什麼狀況下使用堆外內存?要注意些什麼? 堆外內存如何被回收?
  • g1收集器用的具體算法? 遇到過什麼線上問題?線程池用法不對,頻繁full GC怎麼處理的?回答內存dump,定位問題
  • GC的常見算法,CMS以及G1的垃圾回收過程,CMS的各個階段哪兩個是Stop the world的,CMS會不會產生碎片,G1的優點
  • 標記清除和標記整理算法的理解以及優缺點。
  • eden survivor區的比例,爲何是這個比例,eden survivor的工做過程。
  • JVM如何判斷一個對象是否該被GC,能夠視爲root的都有哪幾種類型。
  • 強軟弱虛引用的區別以及GC對他們執行怎樣的操做
  • Java是否能夠GC直接內存
  • JVM 內存分配策略 FullGC 的觸發條件有哪些
  • RememberedSet的做用
  • YGC和FGC發生的具體場景; 四、jstack,jmap,jutil分別的意義?如何線上排查JVM的相關問題?

JVM調優

  • 請問你作過哪些JVM優化?使用什麼方法?達到什麼效果?
  • 當出現了內存溢出,你怎麼排錯?
  • 用過哪些命令查看JVM的狀態、堆棧信息?
  • jvm內存調優用過哪些工具,jstate作什麼用的?如何dump出當前線程狀態?
  • 應用服務器的jvm調優實際經驗,如何作的,在哪裏用到的
  • 對象比較大,生命週期短,GC參數怎麼調優
  • 平時遇到內存溢出的情形,處理 答:-Xms和-Xmx,-XX:+HeapDumpOnOutMemoryError,讓虛擬機在出現內存溢出異常時Dump出當前的內存堆轉儲快照以便過後分析。

歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】!java

相關文章
相關標籤/搜索