前言
本文梳理 Java 開發從入門到資深必須掌握的 21 個核心技術維度,每項給出關鍵知識點與面試高頻考點,可作為學習規劃與面試複習的清單。
-
JVM 內存模型與調優
- 運行時數據區(堆、棧、方法區、本地方法棧、程序計數器)
- 對象創建、佈局、訪問定位、類加載機制(雙親委派、打破委派)
- GC 算法:標記清除、複製、標記整理、分代收集;收集器:Serial、Parallel、CMS、G1、ZGC、Shenandoah
- 調優工具:jstat、jmap、jstack、jconsole、VisualVM、Arthas、Async Profiler
- 常見 OOM 場景與排查、GC 日誌分析、安全點、TLAB、逃逸分析
-
Java 程序運行機制
javac 編譯流程、字節碼結構、java 命令啟動參數
- ClassPath、ModulePath、-Xms/-Xmx/-XX:+UseG1GC 等核心參數
- 類加載器體系、自定義類加載器、熱部署原理
-
數據類型與包裝類
- 8 種基本類型大小、默認值、取值範圍
- 自動裝箱/拆箱、緩存機制、
== vs equals() 陷阱
String 不可變、常量池、StringBuilder/Buffer、intern()
-
對象創建與生命周期
- 實例化步驟:分配內存 → 初始化零值 → 設置對象頭 → 執行
<init>
- 繼承鏈初始化順序:靜態字段/塊 → 父類非靜態字段/塊 → 父構造器 → 子類非靜態字段/塊 → 子構造器
- finalize() 已棄用、Cleaner/PhantomReference 替代
-
訪問控制與封裝
- public/protected/default/private 修飾類、方法、字段的可見性矩陣
- 模塊化系統 exports/opens、反射破壞封裝
-
流程控制語句
- if-else、switch(JDK 12+ switch 表達式)、for/while/do-while、break/continue 標籤
- try-with-resources、多 catch、finally 執行保證、異常鏈
-
面向對象三大特性
- 封裝:信息隱藏、訪問器模式、JavaBean 規範
- 繼承:單繼承、方法覆寫規則、super、final、抽象類
- 多態:向上轉型、動態綁定、instanceof 模式匹配、接口默認/靜態/私有方法
-
static 關鍵字深度
- 靜態字段/方法/塊/內部類初始化時機、線程安全
- 不能與 abstract、this、super 共用;靜態導入
-
基礎核心類
Object:equals/hashCode/toString/clone/finalize/wait/notify 契約
String、StringBuilder、StringBuffer、正則表達式
Math、Random、System、Runtime
-
集合框架體系
- Collection → List/Set/Queue;Map 體系
- ArrayList/LinkedList、HashSet/LinkedHashSet/TreeSet、HashMap/LinkedHashMap/TreeMap/ConcurrentHashMap 底層結構、擴容、線程安全
- Collections 工具類、Stream 流式操作
-
異常處理體系
- Throwable → Error/Exception → RuntimeException/Checked Exception
- 自定義異常、異常轉換、全局異常處理、日誌最佳實踐
- try-catch-finally 字節碼實現、性能影響
-
IO 與 NIO
- BIO:FileInputStream、BufferedReader、裝飾者模式
- NIO:Channel、Buffer、Selector、零拷貝、Direct Buffer
- AIO (NIO.2):CompletionHandler、AsynchronousFileChannel
- Netty 架構:EventLoop、ChannelPipeline、零拷貝、內存池
-
多線程與併發
- 線程創建、狀態轉換、interrupt、ThreadLocal、InheritableThreadLocal
- synchronized 鎖升級、LockSupport、AQS 原理、ReentrantLock/ReadWriteLock/StampedLock
- 線程池:ThreadPoolExecutor 參數、拒絕策略、CompletableFuture 異步編排
- JMM:volatile、happens-before、指令重排、DCL 单例
- 並發集合:ConcurrentHashMap (JDK 8+ CAS+synchronized)、CopyOnWriteArrayList、LongAdder
- 鎖優化:偏向鎖、輕量級鎖、重量級鎖、鎖消除、鎖粗化
-
網絡編程
- TCP/UDP Socket、InetAddress、URL/URLConnection、HttpClient
- Netty/MINA 高性能網絡框架、序列化協議、心跳、重連
-
日期時間 API (JDK 8+)
- LocalDate/LocalTime/LocalDateTime/Instant/ZonedDateTime/Duration/Period
- DateTimeFormatter、時區、時段、與舊 Date/Calendar 互轉
- JSR-310 設計哲學:不可變、線程安全、領域驅動
-
XML/JSON 處理
- XML:DOM、SAX、StAX、JAXB、XStream
- JSON:Jackson、Gson、Fastjson、Moshi;序列化配置、日期格式、循環引用
-
Maven/Gradle 構建管理
- Maven:坐標、依賴傳遞/調解/排除、生命周期、插件、Profile、多模塊、私服
- Gradle:DSL、任務圖、增量構建、變體、Kotlin DSL
-
泛型系統
- 類型擦除、上下界通配符、PECS 原則、泛型方法、類型推斷
- 橋接方法、堆污染、@SuppressWarnings("unchecked")
-
註解與反射
- 元註解、標準註解、自定義註解、APT 編譯時處理
- 反射:Class、Field、Method、Constructor、setAccessible、性能優化
- 動態代理:JDK Proxy、CGLIB、ByteBuddy、Spring AOP 底層
-
RMI 遠程調用
- Stub/Skeleton、Registry、序列化、代碼基、安全管理器
- Spring RMI 支持、與 gRPC/Dubbo 對比
-
JNI 本地接口
- native 方法、javah/javac -h 生成頭文件、JNIEnv、jobject、局部/全局引用
- 數據類型映射、異常拋出、註冊本地方法、性能開銷、Panama 專案
使用建議
- 按優先級分三輪:核心語法與集合(1-10)→ 併發與 JVM(11-13,1)→ 框架原理與分布式(擴展)。
- 每項「能講清原理、寫出 Demo、排查過線上問題」才算掌握。
- 結合《Java 核心技術面試精講》、《Effective Java》、JDK 源碼、技術博客深度學習。