全職/大量時間投入:3-4 個月 系統掌握語法、數據結構、基本系統編程。
業餘/每天 1-2 小時:5-8 個月 達到同等水平。
關鍵變量:有效編碼時長 (而非日曆天數)、項目實戰深度、反思總結頻率。
| 階段 | 週數 | 核心目標 | 驗收標準 (必做項目) |
|---|---|---|---|
| 環境與語法入門 | 1-2 | 搭建工具鏈、掌握基本類型/流程控制/函數/數組/指針基礎 | 無參考寫出「猜數字遊戲」「九九乘法表」「字符串反轉」 |
| 指針與內存模型深度 | 3-5 | 多級指針、指針算術、數組指針互換、動態內存、函數指針 | 手寫 strcpy/strlen/strcmp、實現動態數組結構體 |
| 結構體/文件/預處理/多文件 | 6-8 | 自定義類型、鏈表節點、文本/二進制文件、模塊化編程、Makefile | 實現「學生信息管理系統」(鏈表+文件持久化+多文件編譯) |
| 數據結構與算法落地 | 9-14 | 鏈表/棧/隊列/樹/圖/堆/哈希表 C語言完整實現、LeetCode 易/中等題 | 手寫通用容器庫 (Vector/Map/Set)、通過「劍指 Offer」C版前 30 題 |
| 系統編程入門 | 15-20 | Linux API、進程/線程/信號/IPC/Socket、I/O 多路複用、GDB 進階調試 | 實現「多線程 HTTP 下載器」或「簡易聊天服務器/客戶端」 |
| 項目實戰與專項深化 | 21+ | 根據興趣選擇:嵌入式/內核/數據庫/編譯器/高性能網絡/安全 | 完成一個 2000+ 行、有文檀/測試/CI 的開源項目貢獻或自建項目 |
man 3 printf、C11 標準草案 (N1570)、GCC 手冊,而非依賴二手博客。git bisect 定位回歸,git log --oneline --graph 回顧成長。redis/sds.c (動態字符串)、nginx/src/core/ngx_alloc.c (內存池)、sqlite3.c (編譯器/虛擬機/存儲引擎整合)。「半年打牢基礎」的前提是每天 1.5-2 小時高質量主動編碼,並嚴格遵循 語法 → 指針/內存 → 模塊化/文件 → 數據結構/算法 → 系統編程 → 項目實戰 的認知階梯。時間不是稀缺資源,專注力與反思深度 才是。從今天開始,打開編輯器,寫下第一個 malloc,用 valgrind 驗證無洩漏,這條路就踏實了。