首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 基礎核心知識點總結:26 條高頻面試必考題詳解

     編輯:Java 綜合教學

Java 基礎核心知識點總結:26 條高頻面試必考題詳解

整理了 Java 基礎階段最核心、最高頻的 26 個知識點,涵蓋語法特性、集合框架、異常處理、多線程、JVM 基礎等方向,適合面試複習與知識查漏補缺。

一、類與文件結構

1. 一個 Java 源文件能包含多個類嗎?有何限制?

可以,但只能有一個 public 類,且文件名必須與該 public 類名完全一致。非 public 類無數量限制。

二、流程控制

2. 如何跳出多重嵌套循環?

兩種主流方式:

  • 標籤跳出:在外層循環前定義標籤 (如 outer:),內層使用 break outer;
  • 標誌位控制:定義 boolean found = false;,外層循環條件加入 && !found,內層設置 found = true; break;

推薦使用標誌位,代碼可讀性更好,避免濫用標籤導致「面條代碼」。

三、核心語法區別

3. == vs equals()

比較方式基本類型引用類型
==比較值比較內存地址 (引用是否指向同一對象)
equals()不適用比較對象內容 (需類重寫,如 String、Integer 已重寫)

4. 靜態變量 vs 實例變量

維度靜態變量 (static)實例變量
歸屬類屬級對象屬級
內存方法區 (元空間)堆內存
生命周期類加載到類卸載對象創建到 GC 回收
調用方式類名.變量 / 對象.變量對象.變量
共享性所有實例共享一份每個實例獨有

5. static 方法能調用非 static 方法嗎?

不能。static 方法屬於類,加載時無需實例;非 static 方法屬於對象,需實例存在才能調用。static 方法中無 this 引用。

6. Integer vs int

特性intInteger
類型基本類型包裝類 (引用類型)
默認值0null
內存棧堆
適用場景計算、邏輯判斷集合泛型、Web 表單、需 null 語義場景

自動裝箱/拆箱:JDK 1.5+ 支持自動轉換,但頻繁轉換影響性能,高併發場景建議顯式控制。

7. 四大訪問修飾符權限表

修飾符同類同包子類(異包)其他包
public✓✓✓✓
protected✓✓✓✗
default (無)✓✓✗✗
private✓✗✗✗

8. Overload (重載) vs Override (重寫)

維度Overload 重載Override 重寫
發生位置同一類 / 父子類父子類之間
方法名相同相同
參數列表必須不同必須相同
返回類型可不同兼容/相同 (協變返回)
異常無限制子類異常範圍 ≤ 父類
訪問權限無限制子類權限 ≥ 父類
綁定時間編譯期 (靜態)運行期 (動態)

9. 構造器能被 override 嗎?

不能。構造器不參與繼承,子類無法覆蓋父類構造器,但可通過 super() 調用。構造器可 overload (重載)。

10. 接口繼承、抽象類繼承、main 方法規則

  • 接口可繼承多個接口 (extends)
  • 抽象類可繼承具體類 (但意義不大)
  • 抽象類可以包含 static void main(String[] args) 方法,可直接運行

四、面向對象三大特徵 + 多態機制

11. 封裝、繼承、多態、抽象

四大特徵核心:封裝隱藏細節,繼承復用擴展,多態統一接口不同行為,抽象提取共性忽略細節。

12. Java 多態實現機制

父類/接口引用指向子類/實現類對象。編譯期看左邊 (引用類型),運行期看右邊 (實例類型)。動態綁定由 JVM 方法表分發實現。

五、基本類型與常見關鍵字

13. 8 大基本數據類型

byte(1B) / char(2B) / short(2B) / int(4B) / long(8B) / float(4B) / double(8B) / boolean(~1bit)

14. final / finally / finalize

關鍵字作用典型場景
final修飾類/方法/變量:不可繼承/覆蓋/修改常量、不可變類、模板方法
finally異常處理塊:無論是否異常必執行資源關閉、鎖釋放、清理邏輯
finalize()Object 方法:GC 前調用 (已棄用)JDK 9+ 標記 @Deprecated,不建議依賴

六、異常處理體系

15. 異常層級結構

Throwable
├── Error (系統級,不可恢復:OOM, StackOverflow)
└── Exception (程序級,可恢復)
    ├── RuntimeException (非受檢:NPE, 索引越界, 類轉換)
    └── Checked Exception (受檢:IOException, SQLException)

16. 5 大常見 RuntimeException

  1. NullPointerException 空指針
  2. ArrayIndexOutOfBoundsException 數組越界
  3. ClassCastException 類轉換異常
  4. IllegalArgumentException 非法參數
  5. NumberFormatException 數字格式化異常

17. 異常處理關鍵字

  • try-catch:捕獲處理
  • throws:方法簽名聲明拋出
  • throw:主動拋出異常實例
  • finally:最終執行塊

七、多線程基礎

18. sleep() vs wait()

方法所屬類釋放鎖喚醒方式典型用途
sleep()Thread不釋放時間到/中斷暫停執行、讓出 CPU
wait()Object釋放notify()/notifyAll()/中斷線程間通信、條件等待

核心:wait() 必須在 synchronized 塊中調用,否則拋 IllegalMonitorStateException。

19. 啟動線程:run() 還是 start()?

start():創建新線程,由 JVM 調度執行 run()。
run():普通方法調用,不會創建新線程,在當前線程同步執行。

八、集合框架核心區別

20. HashMap vs Hashtable

維度HashMapHashtable
線程安全非線程安全同步方法,線程安全
Null 鍵/值允許一個 null key,多個 null value不允許 null
繼承體系Map 接口 (JDK 1.2)Dictionary 類 (舊版)
性能高低 (全表鎖)
遍歷方式Iterator (fail-fast)Enumerator + Iterator

多線程環境推薦 ConcurrentHashMap (JDK 8+ CAS + synchronized 細粒度鎖)。

21. List vs Map

  • List:有序、允許重複、單列元素 (索引訪問)
  • Map:無序 (LinkedHashMap 有序)、Key 唯一、Value 可重複、雙列元素 (鍵值對)

22. List / Set / Map 存取特點

集合父接口元素特性存取特點
ListCollection有序、可重複索引快速隨機訪問
SetCollection無序、不可重複基於 hashCode/equals 去重
MapMapKey 唯一、Value 可重複Key 快速查找 Value

九、常用類包接口速查

23. 高頻類、包、接口

  • 類:String、Integer、Date、ArrayList、HashMap、BufferedReader/Writer、FileReader/Writer
  • 包:java.lang、java.util、java.io、java.sql、java.net、java.text、java.time (JDK 8+)
  • 接口:List、Set、Map、Queue、Runnable、Callable、Comparator、Serializable、Closeable

十、JVM 基礎

24. 類加載機制

JVM 通過 ClassLoader 及其子類實現類加載,遵循雙親委派模型:Bootstrap → Extension → Application → Custom。生命周期:加載 → 驗證 → 準備 → 解析 → 初始化 → 使用 → 卸載。

25. GC (垃圾回收)

自動檢測對象是否可達 (GC Roots 可達性分析),回收不可達對象內存。主流算法:標記-清除、標記-整理、複製、分代收集 (新生代/老年代)。

26. Heap vs Stack

區域存儲內容生命周期線程隔離
Stack (棧)局部變量、方法幀、引用隨方法調用/返回線程私有
Heap (堆)對象實例、數組GC 管理線程共享

建議配合《Java 核心技術》、《Effective Java》、《深入理解 JVM》系統學習,實戰中多思考「為什麼這樣設計」與「邊界場景如何表現」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved