面試官提供的「超級標準答案」框架
螞蟻金服平台技術事業部架構師面試分為三大板塊:Java 基礎、J2EE 基礎、框架相關。每題給出標準回答要點,考察深度理解而非背誦。
一、Java 基礎 (11 題)
- Java 基類 Object 及其方法:
getClass/clone/toString/equals/hashCode/registerNatives (對象);notify/notifyAll/wait (線程);finalize (GC)。
- equals vs ==:
== 比引用地址;equals 比邏輯內容,Object.equals 默認同 ==,子類覆寫 (如 String 逐字符比較)。
- hashCode 作用:HashMap/HashSet 雜湊桶索引,提升查找效能。
Object.hashCode 返回引用地址,子類覆寫實現分佈均勻算法。
- hashCode 與 equals 契約:equals 相等 → hashCode 必相等;hashCode 相等 → equals 不一定相等 (允許碰撞,但碰撞率不可太高)。
- 如何停止線程:標記位 +
join() 等待;或利用 Thread.interrupt() + InterruptedException 協作式中斷。
- Thread.setDaemon(true):守護線程 (GC、監聽器),所有用戶線程結束則 JVM 退出,daemon 自動終止。必須在
start() 前調用,子線程自動為 daemon。
- ClassLoader 委派模型:樹狀結構,雙親委派 (先問父加載器,找不到再自己載)。典型結構:Bootstrap → Extension → Application (System) → WebApp ClassLoader (隔離)。
- 常用集合結構:Set{HashSet/TreeSet}、List{ArrayList/LinkedList/Vector}、Map{HashMap/Hashtable/TreeMap}。
- 字節流 vs 字符流:InputStream/OutputStream 處理二進制;Reader/Writer 處理文本 (含編碼轉換)。字符 = 編碼後的字節序列 (如 UTF-8 1-4 字節)。
- 字節/字符流轉換:
InputStreamReader/OutputStreamWriter 橋接,指定 Charset。
- GC 基礎:不可達對象回收;引用計數/可達性分析;分代假設 (新生代/老年代)。
二、J2EE 基礎 (6 題)
- JSP 工作原理:JSP → Servlet (.java) → .class → 執行;本質是 Servlet。
- Session 原理:JSESSIONID 索引伺服器端數據;ID 存 Cookie 或 URL 重寫;數據存儲方式由容器決定 (內存/資料庫/Redis)。
- Web 層集群 Session 解決方案:Sticky Session (IP Hash) / Session Replication / Session 集中存儲 (Redis) / 無狀態 (JWT)。
- JMS 模型:Queue (P2P,一條消息一個消費者) / Topic (Pub/Sub,一條消息多個訂閱者)。
- 事務隔離級別:READ_UNCOMMITTED/READ_COMMITTED/REPEATABLE_READ/SERIALIZABLE;Oracle 默認 READ_COMMITTED,MySQL 默認 REPEATABLE_READ。
- 全局事務 (XA) 原理:兩階段提交 (Prepare/Commit);資源管理器 (DB/JMS) 實現 XAResource,事務管理器協調。
三、框架相關 (5 題)
- Spring 核心理念:IOC/DI (控制反轉/依賴注入) 解耦對象裝配;AOP (面向切面) 橫切關注點 (事務/安全/日誌);IOC 使 AOP 易實現。
- MyBatis vs Hibernate:MyBatis 半自動 (手寫 SQL,靈活、調優易);Hibernate 全自動 (對象映射、HQL、二級緩存、攔截器),適合標準 CRUD。
- OOA/OOD 耦合問題:A 直接依賴 B → A 擴展需改代碼 (違反開閉原則);B 變更波及 A (穩定性差)。
- 解耦方案:A 依賴介面 I,B 實現 I;或引入適配器 B' 實現 I 內部委託 B。
- 設計模式列舉與場景:單例 (全局唯一)、工廠 (創建解耦)、代理 (增強/控制訪問)、模板方法 (骨架固定步驟可變)、策略 (算法族可換)、觀察者 (事件通知)、裝飾者 (動態加職責)、適配器 (介面不兼容轉換)。
備戰建議
- 每道題準備「定義 → 原理 → 源碼關鍵點 → 實戰坑點 → 優化方案」五層話術。
- 手寫核心組件:簡易 IOC 容器、動態代理、線程池、一致性 Hash、Bloom Filter。
- 深度閱讀 Spring/MyBatis/Netty/Redis 核心源碼,建立「源碼級」理解。
- 系統性複習《Java 並發編程實戰》、《深入理解 JVM》、《Effective Java》、《DDIA》。
螞蟻架構師面試重「基本功極致深度、源碼級掌握、系統性工程思維」,平時多寫技術博客、多做源碼筆記、多參與開源貢獻,臨場自然從容。