華為4面技術5面HR
記憶體模型
- 記憶體模型定義為什麼要有記憶體模型為什麼要重排序,重排序在什麼時候排如何約束重排序規則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 都能讓執行緒等待,有什麼區別?
-
所謂 sleep 不會釋放鎖,wait 會釋放鎖,釋放鎖後重新獲取時它的上下文資料如何處理的?
-
釋放鎖會讓 CPU 進行上下文切換嗎?
-
容器與工具
-
阻塞和非阻塞有什麼區別,他們可以用什麼方式實現
-
佇列(Queue)提供哪些操作
-
阻塞佇列提供了哪些獲取元素的方法,有什麼區別?
-
阻塞佇列有哪些實現?為什麼要分有界無界?
-
CountDownLatch 怎麼實現的,什麼時候考慮用?
-
CyclicBarrier 怎麼實現的,什麼時候考慮用?
-
Semaphore 怎麼實現的,什麼時候考慮用?
-
如何在兩個執行緒間共享資料?
-
Exchanger 怎麼實現的,什麼時候考慮用?
-
ConcurrentHashMap 實現?
-
fork/join 框架是什麼?
JVM 虛擬機器面試題
- 記憶體管理
- 為什麼需要 JVM?
- 簡單描述 JMM 和 JVM 兩個概念
- JVM 記憶體管理
- 永久代、元空間、方法區的關係
- 類載入過程
- 雙親委派模式有什麼好處
- 如何覆蓋 JDK 提供的元件,比如覆蓋 ArrayList 的實現
- new 一個物件的過程發生了什麼(類載入、變數初始化、記憶體分配)
- 物件的死亡過程
- JVM 可能會丟擲哪些 OOM
- 垃圾回收演算法有哪些?優缺點比較
- 熟知的垃圾回收器有哪些,簡單描述每個應用場景
- CMS 和 G1 的垃圾回收步驟是?
- G1 相對於 CMS 的優缺點
- 效能監控與調優
- 如何監控 GC
- 常見 OutOfMemoryError 有哪些
- 常見的 JDK 診斷命令有哪些,應用場景?
- CPU 較高,如何定位問題
- 記憶體佔用較高,如何定位大物件
- 記憶體洩漏時,如何實時跟蹤記憶體變化情況
- 記憶體洩漏時,如何定位問題程式碼
- 大型專案如何進行效能瓶頸調優?
- 虛擬機器子系統
- 位元組碼是如何在 JVM 中進行流轉的(棧幀)
- 方法呼叫的底層實現
- 方法重寫和過載的實現過程
- invokedynamic 指令實現
- 如何修改位元組碼
- JIT 引數配置如何影響程式執行?
- 虛擬機器有哪些效能優化策略
最後在提醒大夥幾句:HR面試基本和國內其他的公司HR面試差別不大,包括職業規劃、職業經歷、離職原因、以及相關的背景調查等幾個基礎方面。
在和HR的溝通當中還是見仁見智,關鍵在於自己的職業規劃以及自我定位是否清晰。在這輪溝通中就顯得十分的重要。
最後提供免費的Java架構學習資料,學習技術內容包含有:Spring,Dubbo,MyBatis, RPC, 原始碼分析,高併發、高效能、分散式,效能優化,微服務 高階架構開發等等。
最後在出來放一波福利吧!希望可以幫助到大家!
千千萬萬要記得:多刷題!!多刷題!!
之前演算法是我的硬傷,後面硬啃了好長一段時間才補回來,演算法才是程式設計師的靈魂!!!!
篇幅有限,以下只能截圖分享部分的資源!!
(1)多執行緒(這裡以多執行緒為代表,其實整理了一本JAVA核心架構筆記集)
(2)刷的演算法題(還有左神的演算法筆記)
(3)面經+真題解析+對應的相關筆記(很全面)
(4)視訊學習(部分)
ps:當你覺得學不進或者累了的時候,視訊是個不錯的選擇
其實以上我所分享的所有東西,有需要的話我這邊可以免費分享給大家,但請一定記住獲取方式:點選這裡前往免費獲取
在這裡,最後只一句話:祝大家offer拿到手軟!!