2020年 Java 高級面試題
自我面試
- 背書式的學習對技術的提高幫助很小。
- 本篇內容不涉及答案,答案須要去相關專欄學習。
- 把面試看做是費曼學習法中的回顧、授課環節。首先咱們能講給本身聽,若是不滿意再回爐學習總結,如此反覆。
專欄學習地址:java
1、併發編程面試題
內存模型
-
內存模型面試
- 定義
- 爲何要有內存模型
- 爲何要重排序,重排序在何時排
- 如何約束重排序規則
- happens-before
- 什麼是順序一致性
- CAS 實現的原理,是阻塞仍是非阻塞方式?何時用,使用時須要考慮的問題
- 處理器和 Java 分別怎麼保證原子操做
- 保證了原子性就能保證可見性嗎?
- final 內存語義?何時用,使用時須要考慮的問題
- volatile 內存語義,何時用,用的時候須要考慮什麼問題
- synchronized 內存語義,何時用,和鎖比較一下優缺點
- synchronized 中涉及的鎖升級流程
- 鎖的內存語義,舉例說明,加鎖失敗時候的處理流程
- 比較下 CAS 、volatile 、synchronized、Lock 區別
- 原子操做類底層實現機制?自增操做是怎麼保證原子性的?
線程
- 線程的狀態有哪些
- 如何在 Java 中實現線程?
- 如何在 Java 中啓動一個線程?
- 設計線程中斷的意義是什麼
- Java 中 interrupted 和 isInterrupted 方法的區別?
- 如何中止一個線程?
- 線程 join 方法幹什麼用?
- 有三個線程 T1,T2,T3,怎麼確保它們按順序執行?
- 線程的等待通知機制實現機制?
- 爲何應該在循環中檢查等待條件?
- 爲何 wait 和 notify 方法要在同步塊中調用?
- 爲何 wait, notify 和 notifyAll 這些方法不在 thread 類裏面?
- ThreadLocal 是什麼,怎麼實現的
- 線程池是什麼,提交一個任務進去,處理流程?
- Executor 框架介紹
- JUC 包中提供了哪些配置好的線程池,差別化是什麼
- 什麼是 FutureTask?
鎖
- Lock 接口提供了哪些實現類
- AQS 是什麼,提供了哪些方法
- AQS 中獨佔鎖和共享鎖的操做流程大致描述一下
- 重入鎖有什麼好處,何時考慮用
- 讀寫鎖有什麼好處,何時考慮用?讀鎖是什麼類型的鎖,寫鎖呢?
- 說下讀寫鎖裏的鎖降級流程,何時能夠考慮用這個機制
- park 方法是怎麼實現的
- 鎖的等待通知機制 Condition 是怎麼實現的,有了線程的等待通知機制爲何還要設計 Condition?
- 死鎖怎麼產生的,如何避免
- 說說 Java 中有哪些鎖
- sleep、wait、park、Condition 都能讓線程等待,有什麼區別?
容器與工具
- 阻塞和非阻塞有什麼區別,他們能夠用什麼方式實現
- 隊列(Queue)提供哪些操做
- 阻塞隊列提供了哪些獲取元素的方法,有什麼區別?
- 阻塞隊列有哪些實現?爲何要分有界無界?
- CountDownLatch 怎麼實現的,何時考慮用?
- CyclicBarrier 怎麼實現的,何時考慮用?
- Semaphore 怎麼實現的,何時考慮用?
- 如何在兩個線程間共享數據?
- Exchanger 怎麼實現的,何時考慮用?
- ConcurrentHashMap 實現?
- fork/join 框架是什麼?
2、JVM 虛擬機面試題
內存管理
- 爲何須要 JVM?
- 簡單描述 JMM 和 JVM 兩個概念
- JVM 內存管理
- 永久代、元空間、方法區的關係
- 類加載過程
- 雙親委派模式有什麼好處
- 如何覆蓋 JDK 提供的組件,好比覆蓋 ArrayList 的實現
- new 一個對象的過程發生了什麼(類加載、變量初始化、內存分配)
- 對象的死亡過程
- JVM 可能會拋出哪些 OOM
- 垃圾回收算法有哪些?優缺點比較
- 熟知的垃圾回收器有哪些,簡單描述每一個應用場景
- CMS 和 G1 的垃圾回收步驟是?
- G1 相對於 CMS 的優缺點
性能監控與調優
- 如何監控 GC
- 常見 OutOfMemoryError 有哪些
- 常見的 JDK 診斷命令有哪些,應用場景?
- CPU 較高,如何定位問題
- 內存佔用較高,如何定位大對象
- 內存泄漏時,如何實時跟蹤內存變化狀況
- 內存泄漏時,如何定位問題代碼
- 大型項目如何進行性能瓶頸調優?
虛擬機子系統
- 字節碼是如何在 JVM 中進行流轉的(棧幀)
- 方法調用的底層實現
- 方法重寫和重載的實現過程
- invokedynamic 指令實現
- 如何修改字節碼
- JIT 參數配置如何影響程序運行?
- 虛擬機有哪些性能優化策略
歡迎關注本站公眾號,獲取更多信息