- 2020秋招提前批
- C/C++相關開發
- 拿到騰訊、華為等offer

學習路線及時間安排
推薦時間為4個月,包括四部分:語言,計算機基礎知識,項目基礎知識,項目實踐。
- 語言
- 推薦學習1個月
- 學習方針:視頻為主,書籍為輔。
- 配套視頻:C語言,C++語言
- C++ Primer Plus
- 集中學習該書的1~8章,涉及C語言基礎語法及指針、結構體的使用。
- C和指針
- 該書全面深入的剖析了指針的概念與使用,是C語言的進階。
- C++ Primer
- 作為C++查詢的工具書,相當於新華詞典,里面會涉及C++的很多技術細節,實際工程中用到的並不會太多。平時遇到問題可以查詢該書,另外也可以作為面試的參考書。
- STL源碼解析
- 涉及C++標准模板庫的源碼實現,其中vector、map的實現需要重點關注,比如內存分配,底層數據結構等。

- 計算機基礎知識
- 推薦學習1個月
- 配套視頻:數據結構
- 數據結構
- 視頻為主,書籍為輔。看小甲魚的數據結構,該視頻以大話數據結構為藍本講解,了解鏈表,棧,隊列,二叉樹,哈希表,堆等基礎的數據結構。
- 算法
- 推薦直接刷題,先臨摹再實戰。推薦書籍劍指offer,左程雲大神的程序員代碼面試指南;刷題網站推薦牛客網。
- 操作系統
- 推薦書籍學習,重點看深入理解計算機系統的6,7,9,10章。主要理解線程,進程,虛擬內存及鎖機制。
- 計算機網絡
- 推薦書籍學習。主要理解TCP/UDP/HTTP三種協議。其中TCP/UDP以謝希仁老師的計算機網絡為主,HTTP以圖解HTTP協議為主。
- 設計模式
- 推薦書籍學習,大話設計模式。設計模式可以放在所有知識的最后進行學習。

- 項目基礎知識
- 推薦學習1個月
- 配套視頻:Linux,數據庫
- Linux基本命令
- 該部分主要以看視頻為主,記住常用的即可,其余的在實際使用時即用即搜。
- Linux系統編程
- 在Linux下進行編程,會涉及到與系統的交互,內存訪問,需要學習Linux系統API用法。
- 網絡編程
- 視頻為主,書籍為輔。書籍先看tcp/ip網絡編程查漏補缺,補齊網絡編程基礎知識,然后看Linux高性能編程。
- 數據庫
- 視頻為主,書籍為輔。MySQL和Redis數據庫是當前面試的熱門,書籍先看MySQL必知必會,再看Redis設計與實現。

- 項目實踐
- 項目名稱為Linux下C++輕量級Web服務器開發,實現web端用戶注冊,登錄功能,經壓力測試可以實現上萬的並發連接。(測試機器為Intel i7 7700,16G內存)
- 推薦學習1個月
- 線程池
- 涉及線程,鎖機制。使用一個工作隊列完全解除了主線程和工作線程的耦合關系:主線程往工作隊列中插入任務,工作線程通過競爭來取得任務並執行它。
- HTTP請求與響應
- 涉及Linux系統編程,網絡編程,TCP和HTTP協議。根據狀態轉移,通過主從狀態機封裝了http連接類。其中,主狀態機在內部調用從狀態機,從狀態機將處理狀態和數據傳給主狀態機。
- 注冊登錄
- 涉及少許網頁html知識。實現用戶名和密碼校驗,另外通過html文件設置action實現跳轉。
- 定時器
- 涉及Linux系統信號及數據結構的使用。由於非活躍連接占用了連接資源,嚴重影響服務器的性能,通過實現一個服務器定時器,處理這種非活躍連接,釋放連接資源。
- 數據庫連接池
- 涉及MySQL數據庫。建立數據庫連接池,通過重復使用這些已經建立的數據庫連接,解決頻繁建立連接的缺點,從而提高系統性能。
- 同步/異步日志系統
- 涉及設計模式,自定義阻塞隊列。同步/異步日志系統主要涉及了兩個模塊,一個是日志模塊,一個是阻塞隊列模塊,其中加入阻塞隊列模塊主要是解決異步寫入日志做准備。
- 壓力測試
- 閱讀Webbench源碼,對進程加深理解。通過Webbench創建多個進程,每個進程通過HTTP連接訪問服務器,完成壓力測試。

相關資料
- 電子書
- 鏈接:https://pan.baidu.com/s/1dD_F6aG5dIetaks0kIobAg
- 提取碼:buim
- 視頻
- 鏈接:https://pan.baidu.com/s/1tri7oj_R_J4QU__8RjZq7w
- 提取碼:emtp
- 項目
- Linux下C++輕量級Web服務器
- https://github.com/qinguoyi/TinyWebServer
- 知識總結