| 1. 語言發展史與編譯模型 | B→C→K&R C→C89/C99/C11/C17/C23、編譯四階段 (預處理/編譯/組譯/鏈接)、翻譯單元、連結模型 (靜態/動態)、ABI 基礎 | 說清 `gcc -E -S -c` 產物差異、解釋 `undefined reference` vs `multiple definition`、畫出符號解析流程 |
| 2. 型別系統與變數定義 | 基本型別 (整數/浮點/複數/布林)、定寬型別 (stdint.h)、衍生型別 (指標/陣列/結構/聯合/函式/void)、型別限定詞 (const/volatile/restrict/_Atomic)、儲存類別 (auto/register/static/extern/_Thread_local)、對齊 (_Alignas/_Alignof)、初始化規則 (靜態/自動/指定初始化器/複合字面常數) | 手寫 `struct` 對齊計算、解釋 `const int*` vs `int* const`、驗證 `static` 區域變數 vs 全域 `static` 差異、用 `offsetof` 驗證成員偏移 |
| 3. 運算子與表達式 | 算術/邏輯/位元/移位/賦值/條件/逗號/型別轉換/大小/對齊/泛型選擇、運算子優先級/結合性/求值順序/序列點/未定義行為 (UB) 邊界 (如 `i=i++`、`a[i]=i++`)、整數提升/常見算術轉換 | 列出 15 級優先級表、識別 10 個經典 UB 例、手推混合型別表達式結果型別/值、用 `-fsanitize=undefined` 捕獲 UB |
| 4. 程式流程控制 | 選擇 (if/switch/條件運算子)、迴圈 (for/while/do-while/break/continue/goto)、標籤/跳轉、斷言 (assert/static_assert)、編譯期條件 (#if/#ifdef/#elif/#else/#endif) | 重寫 `goto` 版狀態機為結構化版、設計 `switch` 跳躍表優化、用 `static_assert` 檢查編譯期約束 |
| 5. 陣列、函式、結構體 | 多維陣列/變長陣列 (VLA)/柔性陣列成員、函式原型/定義/遞迴/可變參數 (stdarg.h)/內建函式/屬性、結構體/聯合/位欄/匿名結構/聯合、柔性陣列成員模式、指定初始化器 | 手寫動態陣列 (Vector)、手寫可變參數日誌函式、設計位欄壓縮旗標、用柔性陣列實作變長結構體 |
| 6. 指標與記憶體管理 (C 靈魂) | 指標算術/型別/多級/void*/函式指標/限定詞/別名 (restrict)、動態分配 (malloc/free/calloc/realloc/aligned_alloc)、記憶體對齊/填充/佈局、所有權語意/生命週期/洩漏/雙重釋放/野指標/使用後釋放、自定義分配器 (arena/pool/slab/bump)、核心/用戶空間映射 (mmap/munmap/mprotect) | 手寫分配器 (含對齊/大小類/統計)、用 AddressSanitizer/Valgrind 定位 5 類記憶體 Bug、畫出任意結構體記憶體佈局圖、實作無侵入式鏈表 (Linux list_head) |
| 7. 面向物件基礎 (C++ 門檻) | 類別/物件/封裝/繼承/多型/虛函式/vptr/vtable/物件模型/建構子/解構子/複製/移動/賦值/運算子多載/友元/靜態成員/巢狀類別/區域類別 | 用 C 手寫模擬單繼承/虛函式表/動態派發、解釋菱形繼承/虛繼承佈局、識別物件切割/切片問題、實作 RAII 包裝器 (unique_ptr/shared_ptr 簡化版) |
| 8. 類別進階 (C++ 核心) | 模板/泛型程式設計/特化/偏特化/變參模板/概念 (C++20)/SFINAE/類型萃取/標準庫容器/演算法/迭代器/智慧指標/RAII/異常安全/標準庫設計哲學 | 手寫 `vector`/`string`/`optional`/`variant`/`function` 核心、用概念約束模板參數、分析 STL 分配器/迭代器失效規則、實作無鎖佇列 (C++20 atomic) |
| 9. 重載與運算子 | 函式重載/運算子重載 (算術/比較/邏輯/位元/賦值/下標/呼叫/解引用/箭頭/型別轉換/新刪)、ADL/友元重載、避免濫用/驚喜行為 | 為自訂型別實作完整算術/比較/流輸出/下標/呼叫運算子、解釋為何 `operator&&`/`operator||`/`operator,` 不應重載 |
| 10. 模板與元編程 (C++ 進階) | 模板參數 (型別/非型別/模板)、變參模板/折疊運算式、特化/偏特化、SFINAE/`enable_if`/`void_t`/concepts、型別萃取/特性/轉換、編譯期計算/遞迴/元函式、CRTP/政策類別/混入、編譯期反射 (C++26 提案) | 手寫 `tuple`/`variant`/`function`/`any` 核心、用 concepts 重寫 SFINAE 版、實作編譯期維度檢查/單位轉換/序列化框架雛形 |