整理高頻 Java 基礎面試題,涵蓋語言特性、集合、多線程、JVM、異常處理等核心知識點,附標準答案與解析,適合面試複習與知識查漏。
main 方法若聲明為 private 會怎樣?Main method not public。JVM 要求 public static void main(String[])。equals 時為何必須重寫 hashCode?equals 相等則 hashCode 必相等的約定,否則在 HashMap/HashSet 中會導致找不到元素或重複存放。== 與 equals 差異?== 比較引用地址;equals 比較內容(需類別重寫)。String、包裝類已重寫比較值。final、finally、finalize 差異?final 修飾常量/不可繼承類/不可覆寫方法;finally 異常處理塊;finalize GC 前回調(已棄用)。ArrayList vs LinkedList?ArrayList 底層陣列,隨機存取 O(1),增刪 O(n);LinkedList 雙向鏈表,增刪 O(1),隨機存取 O(n)。HashMap 原理(JDK 1.8)?put 計算 hash 定位桶位,鏈表長度 > 8 且陣列長度 > 64 轉紅黑樹。擴容 2 倍,重新計算索引。HashSet 如何保證唯一?HashMap 實現,Key 為元素,Value 為固定 PRESENT。依賴 hashCode/equals。ConcurrentHashMap 線程安全機制?synchronized 鎖頭節點,細粒度鎖 + 無鎖讀。synchronized vs Lock?synchronized 內建鎖,JVM 優化(偏向鎖、輕量級鎖、膨脹鎖),代碼簡潔;Lock API 豐富(可中斷、超時、公平、多條件),需手動釋放。volatile 作用?corePoolSize、maximumPoolSize、keepAliveTime、workQueue、ThreadFactory、RejectedExecutionHandler。volatile boolean stop 標誌 + interrupt() 打斷阻塞,在 run 中檢查標誌並處理 InterruptedException。Exception vs Error?Exception 可捕獲處理(受檢/非受檢);Error 嚴重錯誤(OOM、StackOverflow),通常不捕獲。@FunctionalInterface),Lambda 為其實例。配合 Stream API 實現聲明式處理。Optional 解決什麼問題?NullPointerException,強制調用者處理空值,提供 map/flatMap/filter/orElse 鏈式操作。面試不僅考記憶,更考理解深度與表達清晰度。建議針對每題:定義 → 原理 → 優缺點 → 實戰場景 → 避坑指南 結構化作答。持續關注 JDK 新版本特性(Records、Pattern Matching、Virtual Threads)保持競爭力。