電腦科學基礎:程式/進程/執行緒、記憶體管理與 GC、作業系統核心概念(排程、死鎖、IPC、虛擬記憶體)、網路協定、資料結構與演算法複雜度速查。
FAQ - 常見面試問答
涵蓋 Java、後端、資料庫、串流系統等主題的面試問答整理。
綜合11 篇
Covers: 0. 用 Python 準備資料工程師面試 · 1. file format 和 storage system 差在哪? · 2. Cluster 和 Node 差在哪?
Covers: 1) 資料建模有哪些設計 schema?請舉例說明 · 2) 星型和雪花哪個比較好? · 3) 什麼是事實表、維度表?
Covers: 總覽 · 行為回合在評估什麼 · 為什麼它重要
Covers: 1. Docker 基礎 · 容器 vs 虛擬機 · Dockerfile 重要概念
一份實用、不綁語言的筆記:怎麼找出並修掉效能問題,最後再附上 Java 專屬的技巧。
Python 語言本身:物件模型、可變性、函式與裝飾器、迭代器、OOP、記憶體管理、型別註記、打包,以及面試官真的會探的那些坑。
Python 實際上怎麼跑並發:GIL、執行緒與行程與 asyncio 的取捨、同步原語,以及該怎麼選。
一個程式怎麼被載入、在記憶體裡怎麼擺、又怎麼被執行 —— 系統與語言內部機制面試常問的 那些概念。
Java14 篇
把系統的寫入模型與讀取模型拆開:CQRS 帶來什麼(簡單、可擴展、速度)、代價是什麼(最終一致性、投影器、重複的程式碼),以及什麼時候值得這樣做。
Java 面試會用到的物件導向基本功:四大支柱、interface 與 abstract class 的取捨、組合優於繼承、SOLID 與日常原則,以及物件的幾份契約。
語言的核心機制:primitive 與參考型別、字串、初始化順序、Object 的方法、巢狀類別、反射、I/O 與日期時間 API。
集合框架:整個階層、ArrayList 與 LinkedList 的差別、HashMap 與 ConcurrentHashMap 的內部結構,以及每個操作的 Big-O。
真正會在 Java 面試與 code review 出現的 GoF 模式,每個都附最小範例,以及 JDK 或 Spring 已經用它的地方。
Throwable 階層、checked 與 unchecked 的差別、try/catch/finally 的運作細節、try-with-resources,以及應用程式裡處理例外的設計準則。
Java 8 的函數式工具箱:lambda、方法參考、內建的函數式介面、Stream API、collector,以及 Optional。
型別參數、型別抹除(type erasure)以及由它衍生的一切:有界型別、通配符與 PECS、泛型方法,還有為什麼泛型陣列不合法。
Java 8 之後改了什麼:var、record、sealed 型別、模式比對、text block、模組系統,以及虛擬執行緒。
怎麼寫出正確的並發 Java:執行緒生命週期、synchronized 與 ReentrantLock、CAS 與 atomic、執行緒池、CompletableFuture、ThreadLocal 以及並發集合。
容器(IoC/DI、bean 生命週期與 scope)、AOP、@Transactional 的語意、Spring MVC 的請求路徑、Spring Boot 的自動組態,以及測試。
Java 的測試驅動開發:red-green-refactor 循環、JUnit 5、AAA 結構、mock,以及什麼才值得測。
一條執行緒寫的值什麼時候會被另一條看到:原子性、可見性、順序性、happens-before,以及 volatile、synchronized、final 各自保證了什麼。
JVM 怎麼存放、執行與回收:執行期記憶體區域、物件的建立、垃圾回收與各種收集器、參考強度、類別載入、JIT,以及診斷一台生病的 JVM 要用的旗標與工具。
後端12 篇
設計一支 HTTP API:資源建模、狀態碼、冪等、分頁、版本管理、錯誤格式、認證授權,以及 REST 和 GraphQL、gRPC 的比較。
Covers: 1. Session(傳統方式) · 運作流程 · Session 儲存位置
Covers: 高流量模式 · 1. 冪等的請求處理 · 最初的設計(V0 — 面試白板版)
Covers: 執行緒池與 Executor 框架 · 1. ThreadPoolExecutor 細看 · 2. 拒絕策略比較
Covers: 進階並發 · 1. Fork/Join 框架 · 2. 無鎖程式設計
Covers: 設定隔離級別 · Session 級別(當前連線) · 全域級別(影響所有新連線)
常見 4xx / 5xx 錯誤碼各代表什麼、常見成因、client 端與 server 端該怎麼處理與排查(含哪些可以重試);不談設計 API 時該回哪個狀態碼與錯誤格式。
Covers: 1. 什麼是冪等性 · 2. 為什麼 LLM 工具特別需要冪等性 · 3. 基礎實作:Check-Act-Record
Covers: 問題 · 幾種做法 · 1. 原子遞減 DECR(Redis)
Covers: 1. HTTP Keep-Alive(持久連線) · 2. HTTP Pipelining · 3. Long Polling 長輪詢
設計「接收端」的 webhook 整合:簽章驗證、去重、快速 ACK、非同步處理、重試與 DLQ、亂序事件與可觀測性;不談一般 HTTP API 的設計,也不談長連線推播。
Covers: 1. 資料庫相關 · 1.1 資料庫隔離級別 (Transaction Isolation Levels) · ACID 特性
資料庫3 篇
Covers: 1) 資料庫的類型 · 2) 資料庫的性質 · 3) 資料庫設計
Covers: 1) array_to_string:陣列轉字串 · 2) cast:型別轉換 · 2’) to_char:型別轉換
SQL2 篇
Covers: 髒讀(dirty read)、更新遺失(lost update)、不可重複讀(unrepeatable read)、幻讀(phantom read) · MySQL 索引 · MySQL explain(執行計畫)
Covers: 1. 有兩張表 a(3k 筆)、b(4k 筆), · 2. SQL 裡 full outer Join 和 Union 差在哪? · 3. 找出某一季的訂單?(不要寫死)
Redis3 篇
Covers: Redis 資料結構 · Redis 部署模式 · Redis 為什麼快?
Redis 是一個強大的開源記憶體資料結構儲存系統,在現代後端系統裡被廣泛使用。 它常被用來做快取、session 儲存、即時分析與訊息系統等等。 對後端工程師來說,懂 Redis 是優化效能、建立可擴展系統的關鍵。
Covers: Sorted set (ZSET) · 🧠 Redis Sorted Set 入門 · ✅ Redis 排行榜的基本操作
Kafka1 篇
Covers: 1) 說明 Kafka 架構? · 1’) Kafka 的訊息結構? · 1’') Kafka 怎麼靠 index 找到 .log 檔?
Spark 與 Hadoop3 篇
Flink1 篇
Covers: 1. 什麼是 Apache Flink? · 2. 說明 Apache Flink 的架構? · 2’ 說明 Apache Flink 的執行圖與它的階段?
串流處理1 篇
Covers: 從零寫一個簡單的串流 · 把多條輸入串流合併成一條
💡 提示:這些問答是為技術面試準備時的快速查閱而寫的。
在 GitHub 上瀏覽全部 FAQ。