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

Java 面試必備基礎知識點大全:95 道核心題覆蓋語法、集合、IO、多線程、JVM、Web、框架

     編輯:Java 綜合教學

Java 核心知識體系檢測:95 道高頻面試題分模塊精講

本文匯總 Java 後端開發面試必考的 95 個核心知識點,按模塊劃分,每題給出標準答案要點,適合面試前系統性查漏補缺。

第一部分:Java 基礎 (1-25)

  1. Java 歷史:Sun Green 項目 → Oak → Java 1.0 (1996) → Oracle 收購 → LTS 版本 8/11/17/21。
  2. 核心特點:簡單、面向對象、分布式、安全、健壯、平台無關、多線程、動態。
  3. 三大版本:SE (桌面/基礎)、EE (企業/Web)、ME (嵌入式/移動)。
  4. JVM 功能:類加載、字節碼解釋/編譯、內存管理/GC、硬件交互抽象。
  5. 代碼安全性:編譯檢查、類加載驗證、字節碼校驗、沙箱機制。
  6. GC 機制:自動內存管理、可達性分析、分代收集、不可強制觸發、System.gc() 僅建議。
  7. 運行流程:.java → javac → .class → 類加載 → 校驗 → 解釋/編譯執行。
  8. 環境變量:JAVA_HOME(JDK 根)、PATH(%JAVA_HOME%\bin)、CLASSPATH(.;lib/*.jar)。
  9. 源文件結構:package → import → class → {field, constructor, method, main}。
  10. 註釋三種://、/* */、/** */ (Javadoc)。
  11. 標識符規則:字母/_/$ 開頭、區分大小寫、非關鍵字。
  12. 關鍵字辨析:true/false/null 是字面值非關鍵字;goto/const 保留未用。
  13. 8 大基本類型:byte/short/int/long/float/double/char/boolean,默認值、範圍、字節數必背。
  14. 字面值默認類型:整數 int、浮點 double;long 需 L、float 需 F。
  15. 變量分類:實例變量(堆、有默認值)、局部變量(棧、無默認值)、類變量(static)、常量(final)。
  16. 參數傳遞:基本類型+String 按值傳遞,引用類型按引用傳遞 (傳引用的值)。
  17. 對象創建:new 分配堆內存、調用構造器、返回引用。
  18. == vs equals():基本類型比值、引用類型比地址;equals 默認比地址,String/包裝類重寫比內容。
  19. 運算符:++i/i++、&& || 短路、& | 位/邏輯、>>/>>/<< 移位。
  20. 類型轉換:自動 (小→大)、強制 (大→小、風險)、向上造型 (父類引用指向子類對象)。
  21. 流程控制:if/else、switch (支援 String/JDK7+)、for/while/do-while、break/continue、增強 for。
  22. 數組:靜態初始化 int[] a={1,2}、動態 new int[5]、length 屬性、System.arraycopy、二維數組不規則。
  23. 構造器:同類名、無返回值、可重載、子類必調用父構造器 (super/隱式)。
  24. 訪問修飾符:private < default < protected < public;類只能 public/default。
  25. 包機制:管理命名空間、訪問控制、層次結構;常用包 java.lang/io/util/net/sql/text。
  26. 包裝類:8 個對應類、緩存池 (-128~127)、自動拆裝箱、parseXxx/valueOf/toString。

第二部分:面向對象進階 (26-50)

  1. 三大特性:封裝/繼承/多態。
  2. 繼承規則:單繼承、extends、構造器不繼承、super 調用父構造器必首行、方法覆蓋 (同名同參同返回、權限≥、異常≤)。
  3. this/super:this 調用本類構造器/成員,super 調用父類構造器/被覆蓋成員;static 禁用。
  4. 多態判定:new 誰調誰 (動態綁定),編譯看左邊、運行看右邊。
  5. 方法重載 vs 覆蓋:重載 (同類、同名、參數表不同、返回類型無關);覆蓋 (父子、同簽名、權限擴大)。
  6. static 規則:類級共享、只能訪問 static 成員、無 this/super、構造器不可 static、不可被覆蓋(隱藏)。
  7. final 規則:類不可繼承、方法不可覆蓋、變量不可改 (引用不可變、對象內容可變)、構造器不可 final。
  8. 抽象類 vs 接口:抽象類可有構造器/非抽象方法/字段;接口默認 public abstract 方法、public static final 常量、JDK8+ default/static/private 方法。
  9. 選擇原則:優先接口 (多實現、契約);需提供公共實現/非公共字段用抽象類。
  10. Object 核心:equals/hashCode 契約、toString、clone (淺拷貝/Cloneable)、finalize (已棄用)。
  11. String 不可變:final char[] value、方法返回新對象、常量池、intern() 入池。
  12. StringBuilder vs StringBuffer:非線程安全/線程安全、擴容機制、鏈式調用。
  13. 异常体系:Error(不可恢復) vs Exception;RuntimeException (非受檢) vs 受檢異常;try-catch-finally、throw/throws、try-with-resources、自定義異常繼承 Exception。
  14. 断言:assert condition: msg,需 -ea 啟用,僅用於開發自檢。
  15. 枚举:enum 隱式繼承 Enum、單例模式天然實現、可含字段/方法/實現接口、values()/valueOf()。

第三部分:集合框架 (51-65)

  1. Collection 繼承樹:List/Set/Queue;Map 獨立體系。
  2. List:ArrayList (動態數組、擴容 1.5倍、隨機訪問快)、LinkedList (雙向鏈表、增刪快)、Vector (同步、過時)。
  3. Set:HashSet (HashMap 鍵、無序唯一)、LinkedHashSet (有序)、TreeSet (紅黑樹、有序、需 Comparable/Comparator)。
  4. Map:HashMap (數組+鏈表/紅黑樹、JDK8 擴容機制)、LinkedHashMap (插入/訪問序)、TreeMap (有序)、Hashtable (同步、過時)、ConcurrentHashMap (CAS+Synchronized、分段鎖→CAS+同步)。
  5. 迭代器:Iterator (單向、fail-fast)、ListIterator (雙向、可增刪改)、forEachRemaining (JDK8+)。
  6. 工具類:Collections (排序、二分查找、同步包裝、單例集合)、Arrays。
  7. 泛型:擦除機制、<T>/<? extends T>/<? super T>、PECS 原則、類型推斷 (JDK7+ 鑽石操作符)。
  8. 自動拆裝箱:基本類型⇄包裝類、緩存池影響 == 比較、循環中裝箱性能陷阱。

第四部分:IO/NIO (66-75)

  1. 流分類:字節/字符、輸入/輸出、節點/處理 (裝飾器模式)。
  2. 核心類:File (路徑操作、不讀寫內容)、RandomAccessFile (隨機讀寫、指針)。
  3. 緩衝流:BufferedInputStream/Reader (8KB 默認)、flush() 強制輸出。
  4. 轉換流:InputStreamReader/OutputStreamWriter (字節⇄字符、指定編碼)、readLine()。
  5. 數據流:DataInput/OutputStream (基本類型序列化)。
  6. 對象流:ObjectInput/OutputStream、Serializable、transient、serialVersionUID、Externalizable 自定義協議。
  7. 打印流:PrintStream/PrintWriter、不拋異常、自動 flush、printf/format。
  8. NIO 核心:Buffer (position/limit/capacity)、Channel (雙向、非阻塞)、Selector (多路複用)、FileChannel (零拷貝 transferTo)。
  9. AIO (NIO.2):AsynchronousChannel、回調/CompletionHandler、Proactor 模型。

第五部分:多線程與併發 (76-85)

  1. 創建方式:Runnable/Thread/Callable+Future/線程池/CompletableFuture。
  2. 生命周期:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。
  3. 同步機制:synchronized (對象鎖/類鎖、可重入、JDK6+ 偏向/輕量級/重量級)、Lock (ReentrantLock、公平/非公平、Condition)、volatile (可見性、有序性、非原子性)。
  4. 線程通信:wait/notify/notifyAll (需持有鎖)、Condition.await/signal。
  5. 併發工具:CountDownLatch (一次性)、CyclicBarrier (可重置)、Semaphore (許可證)、Exchanger (交換)、Phaser (階段)。
  6. 線程池:ThreadPoolExecutor 7 參數、四大拒絕策略、Executors 四大預置池缺陷 (OOM 風險)、自定義線程工廠命名。
  7. JUC 容器:ConcurrentHashMap (CAS+Synchronized、size() 長加法)、CopyOnWriteArrayList (讀多寫少)、ConcurrentLinkedQueue (無鎖隊列)。
  8. ThreadLocal:ThreadLocalMap (弱引用 Key)、內存洩漏風險 (remove())、InheritableThreadLocal 父子傳遞。
  9. 死鎖條件:互斥、請求保持、不可剝佔、循環等待;預防:有序加鎖、tryLock 超時、LockSupport。

第六部分:JVM 與性能調優 (86-95)

  1. 運行時數據區:程序計數器、虛擬機棧、本地方法棧、堆、方法區 (元空間)、運行時常量池、直接內存。
  2. 對象創建:類加載檢查、分配內存 (指針碰撞/TLAB)、初始化零值、設置對象頭、執行 <init>。
  3. 對象訪問:句柄池 vs 直接指針 (HotSpot 直接指針)。
  4. GC 判定:引用計數 (循環引用失效) → 可達性分析 (GC Roots: 棧局部變量、靜態屬性、常量、JNI 引用)。
  5. GC 算法:標記-清除 (碎片)、標記-整理 (移動)、標記-複製 (浪費空間)、分代收集 (新生代複製、老年代標記-整理)。
  6. 收集器:Serial/ParNew/Parallel Scavenge (新生代)、CMS/G1/ZGC (老年代/混合)、Epsilon (無操作)。
  7. 類加載:加載→驗證→準備→解析→初始化→使用→卸載;雙親委派模型 (破壞: SPI、Tomcat、OSGi)。
  8. 調優參數:-Xms/Xmx、-Xmn、-XX:MetaspaceSize、-XX:+UseG1GC、-XX:MaxGCPauseMillis、-Xlog:gc*。
  9. 故障排查:jps/jstat/jmap/jstack/jcmd、Arthas、MAT、OOM/StackOverflow/元空間耗盡/類加載衝突分析套路。
  10. JMM:原子性、可見性、有序性;happens-before 規則、指令重排、volatile 內存語義、final 域安全發布。

掌握這 95 點核心考點,Java 後端面試基礎關將無懼挑戰。建議結合項目實戰場景,用「原理→配置→調優→故障案例」四維度深化理解。

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