| 週次 | 核心知識點 | 必做實作 |
|---|---|---|
| 1 | 型別、變數、常數、運算子、輸入輸出 (printf/scanf/fgets/sscanf)、編譯流程 | 單位換算器、簡易計算機、猜數字遊戲 |
| 2 | 控制流 (if/switch/for/while/do-while/break/continue/goto)、函式、遞迴、作用域、儲存類別 | 遞迴階乘/費波那契/河內塔、迴圈素數/完美數/水仙花數 |
| 3 | 陣列、字串 (char[] vs char*)、多維陣列、標準庫 string.h、排序搜尋 (qsort/bsearch) | 字串反轉/查找/分割、矩陣轉置/乘法、學生成績排序 |
| 4 | 指標 (核心):&/*/->/[]/算術/void*/函式指標/指標陣列/多級指標/const 指標、動態記憶體 (malloc/free/calloc/realloc)、結構體/聯合/位欄/位運算、檔案 I/O (fopen/fread/fwrite/fseek/ftell) | 手寫動態陣列 (push/pop/insert/erase/reserve/shrink_to_fit)、手寫單向/雙向鏈表、二進制檔案讀寫結構體陣列、位運算工具集 (置位/清位/翻轉/計數/掩碼) |
| 資料結構 | 核心操作 | C 實作關鍵點 |
|---|---|---|
| 動態陣列 | push/pop/insert/erase/reserve/shrink/capacity/size | 倍增策略、memmove、泛型 void* + 複製/銷毀函式 |
| 單/雙向鏈表 | push_front/back、pop_front/back、insert/erase/find/reverse | 哨兵節點、無侵入式 (Linux `list_head` 風格)、迭代器 |
| 堆疊/佇列 | push/pop/peek、enqueue/dequeue/front/back | 陣列環狀佇列、鏈表實作、無鎖環狀緩衝區 (單生產單消費) |
| 雜湊表 | insert/find/erase/rehash/load_factor | 開鏈/開放定址 (線性/二次/雙重)、FNV-1a/SipHash、漸進式 rehash (Redis dict) |
| 二元搜尋樹 / AVL / 紅黑樹 | insert/erase/find/lower_bound/upper_bound/inorder | 父指標/無父指標、旋轉、著色、非遞迴迭代器 |
| 堆 / 優先佇列 | push/pop/top/heapify/replace | 陣列隱式完全二元樹、配對堆/Fibonacci 堆 (進階) |
| 跳表 | insert/find/erase/range_query | 隨機層數、前向指標陣列、鎖自由版本 (進階) |
| Trie / 基數樹 | insert/find/erase/prefix_match/autocomplete | 陣列/映射子節點、壓縮路徑、雙數組 Trie (DAWG) |
| 圖 (鄰接表/矩陣) | add_edge、BFS/DFS、拓撲排序、Dijkstra/A*、Kruskal/Prim、最大流 (Dinic/ISAP) | 邊陣列 + head 陣列 (前向星)、動態邊、層次圖 |
| 專題 | 核心技術點 | 里程碑專案 |
|---|---|---|
| 進程/執行緒/同步 | fork/exec/wait、pthread_create/join/mutex/cond/rwlock、原子操作、無鎖資料結構 | 簡易 Shell (管道/重導向/內建命令/作業控制)、執行緒池、無鎖佇列 |
| 網路程式設計 | Socket API (BSD/Winsock)、epoll/kqueue/IOCP、非阻塞 I/O、協定解析 (HTTP/WS/DNS)、TLS (mbedTLS/OpenSSL) | HTTP/1.1 Server (靜態檔案/CGI/Keep-Alive/Chunked)、簡易 WebSocket Server |
| 記憶體管理 | 分配器 (slab/arena/bump/pool)、記憶體對齊、mmap/munmap、巨大頁、NUMA 感知 | 通用記憶體分配器 (可替換 malloc)、專用池 (物件/節點/緩衝區) |
| 編譯/鏈接/載入 | ELF/PE/COFF、符號解析、重定位、動態鏈接 (ld.so/dyld)、CMake 進階、交叉編譯 | 簡易動態載入器 (dlopen 替代)、靜態分析工具 (Clang LibTooling) |
| 效能分析與優化 | perf/valgrind/callgrind/gprof/flamegraph、快取友善、SIMD 內建函式、分支預測、編譯器優化旗標 | 熱點函式優化 (向量化/展開/內聯/資料佈局重組)、微基準測試框架 |
**沒有捷徑,只有腳步聲**。按此路線圖扎實走完前三階段 (約 6-12 個月),你將具備:
✅ 任意資料結構/演算法 C 手寫能力
✅ 系統級專案架構與工程化落地經驗
✅ 開源核心庫源碼無障礙閱讀能力
✅ 大廠系統/基礎設施/嵌入式崗核心競爭力
現在,打開終端機,`mkdir c_journey && cd $_`,旅程開始。