Checked (受檢) : 編譯期強制處理 (try-catch 或 throws),如 IOException、SQLException。代表可預期、可恢復的錯誤。
Unchecked (非受檢) : 繼承 RuntimeException,編譯期不強制處理,如 NullPointerException、IllegalArgumentException。通常代表程式邏輯錯誤。
throw:方法體內拋出具體異常實例:throw new IOException()。throws:方法簽名上宣告可能拋出的異常類型:void read() throws IOException。永遠執行 (除非 System.exit() 或 JVM 崩潰)。核心用途:資源釋放 (關閉流、釋放鎖、斷開資料庫連線)。Java 7+ 建議使用 try-with-resources 自動管理。
已棄用 (Deprecated since Java 9)。不可靠、效能差、無法保證執行時機。替代方案:Cleaner、PhantomReference 或 try-with-resources。
ArrayList:陣列實作,隨機存取 O(1),尾端新增 O(1) 擴容均攤,中間增刪 O(n)。
LinkedList:雙向鏈表,循序存取優,首尾增刪 O(1),隨機存取 O(n)。
實務建議: 90% 場景用 ArrayList,頻繁首尾操作用 ArrayDeque (非執行緒安全) 或 LinkedList。
1.7:Segment 分段鎖 (預設 16 段),ReentrantLock。
1.8:放棄 Segment,採用 CAS + synchronized (鎖頭節點) + 紅黑樹,細粒度鎖、效能更優。
addBatch() / executeBatch() 大幅提升大量寫入效能。啟動時預建連線物件池,借用/歸還替代建立/關閉。關鍵參數:initialSize、maxActive、maxIdle、minIdle、maxWait、validationQuery (驗證連線有效性)、testOnBorrow、removeAbandoned。
init():載入實例化時執行一次,初始化資源。service() (doGet/doPost):每請求一執行緒調用,處理業務邏輯。destroy():容器卸載前執行一次,釋放資源。| 特性 | forward (轉發) | sendRedirect (重導向) |
|---|---|---|
| 請求對象 | 同一個 request/response | 新請求 (瀏覽器發起第二次請求) |
| 地址列 | 不變 | 變為新 URL |
| 速度 | 快 (伺服器內部) | 較慢 (經瀏覽器) |
| 適用場景 | 同一 Web 應用內流程控制 | 跨應用、登入後導向、防止表單重複提交 |
request, response, session, application, out, pageContext, config, page, exception。
關鍵步驟: 定義 Remote 介面 → 實作類繼承 UnicastRemoteObject → rmic 生成 Stub → 啟動 rmiregistry → 註冊 (Naming.bind) → 客戶端查找 (Naming.lookup) → 透過 Stub 呼叫遠端方法。
此題庫涵蓋 Java 後端開發核心知識體系。面試重點不在背誦定義,而在於理解原理 (為什麼)、取捨 (何時用什麼)、避坑 (常見誤區)。建議結合原始碼 (如 HashMap、ConcurrentHashMap、ThreadPoolExecutor) 深度掌握。