下面我將為你提供 10道經典Java面試題,並附上 參考答案和考察點,這些題目在面試中高頻出現,涵蓋了Java基礎、集合、多線程、JVM等核心知識點。


Java面試題目10道

1. 請解釋Java中的多態性及其實現方式

參考答案
多態性是指同一個方法名在不同對象上有不同的實現方式。

  • 實現方式
  1. 方法重寫(Override) :子類重寫父類的方法。
  2. 方法重載(Overload) :同一個類中方法名相同,參數列表不同。
  • 優點:提高代碼複用性和擴展性。

考察點:OOP基礎,多態的原理和應用。


2. HashMap和Hashtable的區別

參考答案

特性

HashMap

Hashtable

線程安全

不安全

安全(synchronized)

效率



允許null鍵值

允許一個null鍵

不允許null鍵和值

初始容量

16

11

擴容機制

2倍

2倍+1

考察點:集合框架,併發編程。


3. 什麼是Java內存模型(JMM)?

參考答案
JMM定義了線程和主內存之間的抽象關係,規定所有變量存儲在主內存,線程操作需要將變量加載到工作內存。

  • 核心特性
  1. 原子性:操作不可分割。
  2. 可見性:一個線程修改的狀態對其他線程可見。
  3. 有序性:避免指令重排序導致的問題。
  • 實現:通過volatilesynchronizedfinal關鍵字。

考察點:JVM內存模型,併發編程基礎。


4. 解釋Java中的垃圾回收(GC)機制

參考答案
GC是自動管理內存的機制,回收不再使用的對象。

  • 回收算法
  1. 標記-清除:標記無用對象,然後清除。
  2. 複製算法:將內存分為兩塊,複製存活對象到另一塊。
  3. 標記-整理:標記後將存活對象移動到一端。
  • 垃圾收集器:Serial、Parallel、CMS、G1等。

考察點:JVM內存管理,GC原理。


5. 線程池的參數有哪些?

參考答案
ThreadPoolExecutor的核心參數:

  1. 核心線程數:常駐線程數量。
  2. 最大線程數:線程池允許的最大線程數。
  3. 空閒時間:非核心線程空閒後的存活時間。
  4. 時間單位:空閒時間的單位。
  5. 工作隊列:存放任務的隊列(如ArrayBlockingQueue)。
  6. 拒絕策略:任務過多時的處理方式(如AbortPolicy)。

考察點:併發編程,線程池原理。


6. 什麼是死鎖?如何避免死鎖?

參考答案
死鎖是多個線程互相等待對方釋放資源導致的無限等待。

  • 必要條件
  1. 互斥條件
  2. 請求與保持條件
  3. 不可剝奪條件
  4. 循環等待條件
  • 避免方法
  1. 按順序申請資源
  2. 超時等待
  3. 避免嵌套鎖

考察點:併發編程,死鎖排查與預防。


7. 接口和抽象類的區別

參考答案

特性

接口(Interface)

抽象類(Abstract Class)

方法

只能是抽象方法(Java 8後可有默認方法)

可以有抽象和非抽象方法

變量

只能是常量

可以有各種類型變量

繼承

多繼承

單繼承

關鍵字

implements

extends

考察點:OOP基礎,接口和抽象類的設計思想。


8. 什麼是反射機制?

參考答案
反射允許程序在運行時訪問和操作類的成員(屬性、方法、構造函數)。

  • 應用場景
  1. 框架開發(如Spring)
  2. 動態代理
  3. 序列化和反序列化
  • 優缺點
  • 優點:靈活性高。
  • 缺點:性能開銷大,破壞封裝性。

考察點:Java反射機制,動態編程。


9. String、StringBuilder和StringBuffer的區別

參考答案

特性

String

StringBuilder

StringBuffer

可變性

不可變

可變

可變

線程安全

安全

不安全

安全(synchronized)

效率




適用場景

少量字符串操作

單線程大量操作

多線程大量操作

考察點:字符串處理,性能優化。


10. 什麼是Spring Bean的生命週期?

參考答案
Spring Bean的創建到銷燬的過程:

  1. 實例化:創建Bean對象。
  2. 屬性賦值:注入依賴。
  3. 初始化
  • 調用@PostConstruct標註的方法。
  • 執行InitializingBean#afterPropertiesSet()
  1. 銷燬
  • 調用@PreDestroy標註的方法。
  • 執行DisposableBean#destroy()

考察點:Spring框架,Bean管理。


總結

這些題目覆蓋了Java面試的核心知識點,面試前建議結合實際項目經驗理解和記憶。祝你面試順利!