| 接口 | 實現類 | 底層結構 | 特點 | 面試高頻點 |
| List | ArrayList | 動態數組 | 查快增刪慢、擴容 1.5倍 | 擴容機制、fail-fast、隨機訪問 |
| LinkedList | 雙向鏈表 | 增刪快查慢、實現 Deque | 首尾操作、棧/隊列用法 |
| Vector/Stack | 數組/繼承 Vector | 同步、已過時 | 不推薦使用、替代方案 |
| Set | HashSet | HashMap 鍵 | 無序、唯一、非線程安全 | hashCode/equals 契約、LinkedHashSet 有序 |
| TreeSet | 紅黑樹 | 有序、O(log n) | Comparable/Comparator、自然順序 |
| Map | HashMap | 數組+鏈表/紅黑樹(JDK8) | 無序、K/V 可 null | put/get 流程、擴容、紅黑樹轉換、死循環 |
| LinkedHashMap | HashMap+雙向鏈表 | 插入/訪問順序 | LRU 緩存實現 (removeEldestEntry) |
| TreeMap | 紅黑樹 | 有序 | NavigableMap API、範圍查詢 |
| Hashtable/Properties | 數組+鏈表 | 同步、K/V 不可 null | 已過時、ConcurrentHashMap 替代 |
| ConcurrentHashMap | 分段鎖(JDK7)/CAS+synchronized+節點(JDK8) | 高并發、無鎖讀 | 擴容機制、size() 計算、JDK7vs8 差異 |
工具類:Collections(排序、二分查找、同步包裝、空集合)、Arrays(排序、複製、比較、流轉換)
三、多線程與并发核心
- 線程創建:繼承 Thread / 實現 Runnable / Callable+FutureTask / 線程池
- 同步機制:
synchronized(對象鎖/類鎖、可重入、JDK6+ 鎖優化:偏向/輕量級/膨脹)、volatile(可見性/有序性/禁止指令重排)、Lock (ReentrantLock/ReadWriteLock/StampedLock)、ThreadLocal(ThreadLocalMap、內存洩漏防護)
- 線程池:
ThreadPoolExecutor 7 大參數、拒絕策略、核心/最大/隊列/存活時間、Executors 四大預定義池(生產禁用,OOM 風險)
- 并发工具:CountDownLatch/CyclicBarrier/Semaphore/Exchanger/Phaser、CompletableFuture (JDK8)、ForkJoinPool
- JUC 集合:ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、BlockingQueue 族
四、其他高頻模塊
- 日期時間:Date/Calendar 缺陷 → JDK8
LocalDate/LocalDateTime/Instant/DateTimeFormatter/ZoneId(不可變、線程安全、領域驅動)
- 正則表達式:Pattern/Matcher、常用規則(郵箱、手機、身份證、URL)、貪婪/懶惰/佔有模式
- IO/NIO:流體系、緩衝流、NIO 三大核心(Channel/Buffer/Selector)、零拷貝、Netty 基礎
- 序列化:Serializable/Externalizable、serialVersionUID、單例破壞與修復、JSON/XML 替代方案
- 網絡編程:Socket/ServerSocket、TCP/UDP、URL/HttpURLConnection、NIO 非阻塞
- 郵件發送:JavaMail API、SMTP/POP3/IMAP、附件、內嵌圖片、SSL/TLS
五、JDK 版本新特性演進(面試必考)
| 版本 | 核心特性 | 實戰影響 |
| JDK 5 | 自動裝箱拆箱、枚舉、靜態導入、可變參數、泛型、增強 for、Scanner、內省、註解 | 語法糖大豐收、類型安全、元編程基石 |
| JDK 6 | Compiler API、輕量級 HttpServer、腳本引擎 (JSR 223)、註解處理器、JAX-WS/JAXB/STaX、內嵌 Derby、Desktop/Tray、Console | 動態編譯、WebService 標準化、腳本互操作 |
| JDK 7 | Switch 支持 String、類型推斷 (鑽石操作符 <>)、數值下劃線、二進制字面量、多异常捕獲 (|)、try-with-resources (ARM)、InvokeDynamic | 資源自動管理、語法簡化、動態語言支持 |
| JDK 8 | Lambda 表達式、函數式接口、方法引用、Stream API、新日期時間、Optional、接口默認/靜態方法、重複註解、類型註解、Nashorn JS 引擎 | 函數式編程、流式處理、空指針防護、接口演進、現代 Java 基石 |
六、面試加分項(源碼級理解)
- HashMap JDK7 vs JDK8 put 流程、擴容、紅黑樹轉換閾值 (64/8)
- ConcurrentHashMap JDK7 分段鎖 vs JDK8 CAS+synchronized+Node
- ThreadLocal 內存洩漏原理與 remove() 最佳實踐
- synchronized 鎖升級全過程(偏向→輕量級→重量級)
- JVM 內存模型、GC 算法、類加載雙親委派、四大引用
- Spring IOC/AOP 原理、Bean 生命周期、循環依賴解決、事務傳播/隔離
總結
Java 基礎知識體系龐大,建議按語法→集合→并发→JDK演進→JVM/源碼→框架原理層層深入。掌握核心數據結構、并发模型、版本演進邏輯,面試與架構設計皆游刃有餘。項目源碼分享見個人公告 JavaCommon 項目。
- 上一篇文章: 【Java每日一題】20170110:引用傳遞陷阱——方法內 new 對象能否改變外部引用?
- 下一篇文章: MyBatis 學習筆記(一):框架原理深度剖析——從原生 JDBC 痛點到 MyBatis 核心架構
Copyright ©
程式碼之家 All Rights Reserved