FAQ - 常見面試問答

涵蓋 Java、後端、資料庫、串流系統等主題的面試問答整理。

綜合11 篇

電腦科學基礎:程式/進程/執行緒、記憶體管理與 GC、作業系統核心概念(排程、死鎖、IPC、虛擬記憶體)、網路協定、資料結構與演算法複雜度速查。

Covers: 0. 用 Python 準備資料工程師面試 · 1. file format 和 storage system 差在哪? · 2. Cluster 和 Node 差在哪?

Covers: 1) 資料建模有哪些設計 schema?請舉例說明 · 2) 星型和雪花哪個比較好? · 3) 什麼是事實表、維度表?

一份實用、不綁語言的筆記:怎麼找出並修掉效能問題,最後再附上 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,以及應用程式裡處理例外的設計準則。

型別參數、型別抹除(type erasure)以及由它衍生的一切:有界型別、通配符與 PECS、泛型方法,還有為什麼泛型陣列不合法。

怎麼寫出正確的並發 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 篇

Covers: 1. HTTP Keep-Alive(持久連線) · 2. HTTP Pipelining · 3. Long Polling 長輪詢

Covers: 1. 資料庫相關 · 1.1 資料庫隔離級別 (Transaction Isolation Levels) · ACID 特性

資料庫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 篇

Redis 是一個強大的開源記憶體資料結構儲存系統,在現代後端系統裡被廣泛使用。 它常被用來做快取、session 儲存、即時分析與訊息系統等等。 對後端工程師來說,懂 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。