本文匯總 Java 面試高頻知識點,按「必看 (!)」、「進階 (%)」、「了解 (?)」三級標註,涵蓋計算機基礎、數據庫、C/C++、Java 基礎/高級、J2EE、面向對象、思維考察與推薦書單,適合系統性複習與查漏補缺。
標記說明
一、計算機基礎
數據結構
- ! ArrayList/Vector/LinkedList 存儲性能與特性差異
- % 棧/隊列/鏈表/樹/堆/圖;各種樹 (B/B+/R/紅黑/平衡/多路)
- ? 棧的兩種存儲結構
算法
- ! 排序算法分類、時間複雜度、穩定性對比
- ! 深度/廣度優先搜索 (DFS/BFS)
- % KMP、貪心、Hash、海量數據處理、全排列
- % 棧實現隊列/隊列實現棧、字符串/鏈表逆序
操作系統
- ? 虛擬內存管理、換頁算法、進程間通信 (IPC)
Linux
- % 常用命令 (load、查看文件、進程管理、網絡診斷)
計算機網絡
- ! TCP/UDP 差異、HTTP 請求響應全過程
- ! OSI 七層 / TCP-IP 四層模型 (每層功能/協議/應用)
- ! 三次握手/四次揮手、丟包/粘包/流量控制/擁塞控制
- ? 子網劃分
二、數據庫
理論與事務
- ! 範式 (1NF~3NF/BCNF)
- ! 事務 ACID、隔離級別 (Read Uncommitted ~ Serializable)
- % 樂觀鎖/悲觀鎖、全局事務原理
SQL 與引擎
- ! 分頁實現 (MySQL LIMIT / Oracle ROWNUM/分析函數)
- ! MySQL 引擎差異 (InnoDB/MyISAM)
- ! 內/左/右連接語義、Statement vs PreparedStatement
- ! JDBC 查詢單條記錄標準流程
- % 索引實現 (B+ 樹)、與 B/R 樹差異、性能優化 (千萬級)
三、C/C++ 基礎
- ! 面向對象三大特性、五大原則 (SOLID)
- ! new/delete vs malloc/free、構造/析構陷阱 (虛函數、異常)
- ! 補碼表示、進制轉換、手寫 strlen/strcpy/strcmp
- % C++ 繼承內存佈局、多態實現機制 (vptr/vtable)、內存洩漏檢測
四、Java 基礎 (必會關鍵字: void, byte, int, long, char, short, float, double, String, StringBuffer, StringBuilder, Array, Collection, Collections, List, ArrayList, LinkedList, Vector, Set, HashMap, TreeMap, LinkedHashMap, ConcurrentHashMap, synchronized, volatile, transient, implements, extends, public, private, protected, this, super, static, final, const, null, run, start, thread, enum, quicksort, mergesort, heapsort, bubblesort, selectsort, insertsort, stack, queue, list, heap, tree, avlTree, Btree, B+Tree, RTree, throw, throws, try, catch, finally, break, continue, instanceof)
核心語法與集合
- ! interface vs abstract class、多重實現/繼承規則
- ! Overload vs Override、abstract 能否與 static/native/synchronized 共存
- ! String 不可繼承、Constructor 不可 override、四種訪問權限差異
- ! List/Set/Map 與 Collection 關係、HashMap vs Hashtable
- ! String vs StringBuffer vs StringBuilder、字面量對象數
- ! == vs equals、hashCode 契約、char 存漢字原理
- ! Input/OutputStream vs Reader/Writer、字節/字符轉換
- ! start() vs run()、switch 支持類型、序列化/反序列化、自動裝箱拆箱、正則表達式
- % ConcurrentHashMap/TreeMap/LinkedHashMap 內部原理、自定義對象作 Key 要求
- % JDK 8 新特性 (Lambda、Stream、Optional、時間 API)
- ? Object 常用方法、海量數據查詢存儲
異常體系
- ! Error/Exception/RuntimeException 區別、3+ RuntimeException 例子
- ! 異常處理機制、內存溢出 vs 內存洩漏
五、Java 高級
多線程
- ! 實現方式 (Thread/Runnable/Callable/Future)、同步與併發方案
- ! 線程安全定義、不安全例子、synchronized 作用
- ! synchronized 方法鎖對象、同步塊鎖對象、可重入性
- % 守護線程、如何停止線程、volatile 內存語義
JVM 與 GC
- ! GC 判斷對象存活 (引用計數/可達性分析)、分代回收機制
- ! 循環引用能否被 GC、內存溢出成因、JVM 參數 (-Xms/-Xmx/-verbose)
- % 類加載器雙親委派、自定義加載器、NIO vs BIO 本質
- ? hashcode 算法、反射調用私有方法、泛型擦除機制、Socket 常見異常
六、J2EE / 企業級開發
Servlet/JSP
- ! Servlet 生命周期、Session 原理、禁用 Cookie 如何維持 Session
- ! Filter 應用場景、JSP vs Servlet、動態/靜態 include
- % Session 過期配置、異步 Servlet (Servlet 3.0+)
Web 框架
- ! MVC 概念、Struts 請求流程、Spring MVC vs Struts MVC
- % 熟悉框架深度原理 (IOC/AOP 實現、事務管理、Bean 注入方式)
- ? Service 嵌套事務回滾
HTTP 與安全
- ! GET/POST 差異、redirect vs forward、4xx/5xx 狀態碼含義
- ! Session vs Cookie、SQL 注入防範、XSS/CSRF 基礎
- % 跨域解決方案 (CORS/JSONP/代理)
中間件與其他
- ? Tomcat vs WebLogic、JBoss 端口配置、JMS 兩種模式、WebService 實現、集群 Session 同步
七、面向對象設計
- ! Singleton 多種實現 (餓漢/懶漢/雙重檢查/靜態內部類/枚舉)
- ! MVC 解決什麼問題
- % 低耦合高內聚、封裝原則、依賴倒置解耦、工廠 vs 抽象工廠
- % 常用設計模式 (策略、觀察者、裝飾者、模板方法、代理等)
- ? UML 圖類別與專案應用
八、思維與綜合能力考察
- 基礎知識中的思維深度:不僅知其然,更知其所以然,能自我分析總結
- 多角度系統分析:項目技術選型優劣勢、性能/擴展/維護權衡
- 項目深度挖掘:最有成就專案 → 角色 → 棘手問題 → 根因分析 → 解決過程 → 自我貢獻 → 未解決原因 → 補救方案 → 文檔/質量保障措施
- 估算與推導能力:杭州軟體工程師數量、淘寶商品數、網站最大併發數估算邏輯
九、推薦必讀書單
- 《程序員面試筆試寶典》
- 《Java 編程思想》 (Thinking in Java)
- 《Effective Java》 (Joshua Bloch)
- 《深入理解 Java 虛擬機》 (周志明)