下面我將為你提供 10道經典Java面試題,並附上 參考答案和考察點,這些題目在面試中高頻出現,涵蓋了Java基礎、集合、多線程、JVM等核心知識點。
Java面試題目10道
1. 請解釋Java中的多態性及其實現方式
參考答案:
多態性是指同一個方法名在不同對象上有不同的實現方式。
- 實現方式:
- 方法重寫(Override) :子類重寫父類的方法。
- 方法重載(Overload) :同一個類中方法名相同,參數列表不同。
- 優點:提高代碼複用性和擴展性。
考察點:OOP基礎,多態的原理和應用。
2. HashMap和Hashtable的區別
參考答案:
|
特性
|
HashMap
|
Hashtable
|
|
線程安全
|
不安全
|
安全(synchronized)
|
|
效率
|
高
|
低
|
|
允許null鍵值
|
允許一個null鍵
|
不允許null鍵和值
|
|
初始容量
|
16
|
11
|
|
擴容機制
|
2倍
|
2倍+1
|
考察點:集合框架,併發編程。
3. 什麼是Java內存模型(JMM)?
參考答案:
JMM定義了線程和主內存之間的抽象關係,規定所有變量存儲在主內存,線程操作需要將變量加載到工作內存。
- 核心特性:
- 原子性:操作不可分割。
- 可見性:一個線程修改的狀態對其他線程可見。
- 有序性:避免指令重排序導致的問題。
- 實現:通過
volatile、synchronized和final關鍵字。
考察點:JVM內存模型,併發編程基礎。
4. 解釋Java中的垃圾回收(GC)機制
參考答案:
GC是自動管理內存的機制,回收不再使用的對象。
- 回收算法:
- 標記-清除:標記無用對象,然後清除。
- 複製算法:將內存分為兩塊,複製存活對象到另一塊。
- 標記-整理:標記後將存活對象移動到一端。
- 垃圾收集器:Serial、Parallel、CMS、G1等。
考察點:JVM內存管理,GC原理。
5. 線程池的參數有哪些?
參考答案:
ThreadPoolExecutor的核心參數:
- 核心線程數:常駐線程數量。
- 最大線程數:線程池允許的最大線程數。
- 空閒時間:非核心線程空閒後的存活時間。
- 時間單位:空閒時間的單位。
- 工作隊列:存放任務的隊列(如
ArrayBlockingQueue)。 - 拒絕策略:任務過多時的處理方式(如
AbortPolicy)。
考察點:併發編程,線程池原理。
6. 什麼是死鎖?如何避免死鎖?
參考答案:
死鎖是多個線程互相等待對方釋放資源導致的無限等待。
- 必要條件:
- 互斥條件
- 請求與保持條件
- 不可剝奪條件
- 循環等待條件
- 避免方法:
- 按順序申請資源
- 超時等待
- 避免嵌套鎖
考察點:併發編程,死鎖排查與預防。
7. 接口和抽象類的區別
參考答案:
|
特性
|
接口(Interface)
|
抽象類(Abstract Class)
|
|
方法
|
只能是抽象方法(Java 8後可有默認方法)
|
可以有抽象和非抽象方法
|
|
變量
|
只能是常量
|
可以有各種類型變量
|
|
繼承
|
多繼承
|
單繼承
|
|
關鍵字
|
|
|
考察點:OOP基礎,接口和抽象類的設計思想。
8. 什麼是反射機制?
參考答案:
反射允許程序在運行時訪問和操作類的成員(屬性、方法、構造函數)。
- 應用場景:
- 框架開發(如Spring)
- 動態代理
- 序列化和反序列化
- 優缺點:
- 優點:靈活性高。
- 缺點:性能開銷大,破壞封裝性。
考察點:Java反射機制,動態編程。
9. String、StringBuilder和StringBuffer的區別
參考答案:
|
特性
|
String
|
StringBuilder
|
StringBuffer
|
|
可變性
|
不可變
|
可變
|
可變
|
|
線程安全
|
安全
|
不安全
|
安全(synchronized)
|
|
效率
|
低
|
高
|
中
|
|
適用場景
|
少量字符串操作
|
單線程大量操作
|
多線程大量操作
|
考察點:字符串處理,性能優化。
10. 什麼是Spring Bean的生命週期?
參考答案:
Spring Bean的創建到銷燬的過程:
- 實例化:創建Bean對象。
- 屬性賦值:注入依賴。
- 初始化:
- 調用
@PostConstruct標註的方法。 - 執行
InitializingBean#afterPropertiesSet()。
- 銷燬:
- 調用
@PreDestroy標註的方法。 - 執行
DisposableBean#destroy()。
考察點:Spring框架,Bean管理。
總結
這些題目覆蓋了Java面試的核心知識點,面試前建議結合實際項目經驗理解和記憶。祝你面試順利!