
記憶體模型
- 記憶體模型定義為什麼要有記憶體模型為什麼要重排序,重排序在什麼時候排如何限制重排序規則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 架構是什麼?
2021Java進階面試題彙總解答,面試必會
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, 源碼分析,高并發、高性能、分布式,性能優化,微服務 進階架構開發等等。
總結
對于面試,一定要有良好的心态,這位小夥伴面試美團的時候沒有被前面阿裡的面試影響到,發揮也很正常,也就能順利拿下美團的offer。
小編還整理了大廠java程式員面試涉及到的絕大部分面試題及答案免費分享給大家,希望能幫助到大家,有需要的朋友可以看下面的免費領取方式!
↓↓↓
點選這裡免費下載下傳
↓↓
點選這裡免費下載下傳
[外鍊圖檔轉存中…(img-RT5ib9uK-1627556365368)]
[外鍊圖檔轉存中…(img-AAO63O0J-1627556365370)]
最後感謝大家的支援,希望小編整理的資料能夠幫助到大家!也祝願大家都能夠升職加薪!