C/C++后端开发学习路线总结(附带实习学习经历分享)
大家好哇,九月份了;不知道大家的工作或者實(shí)習(xí)都安排的怎么樣了?反正獅作為一個(gè)過(guò)來(lái)人只能在各種論壇上面看到都是哀鴻遍野;暗自驚心感慨現(xiàn)在年輕人不好混啊~
然后呢,獅最近后臺(tái)收到不少C/C++后端怎么學(xué)的邀請(qǐng)回答;那這里就再發(fā)一次關(guān)于C/C++后端開發(fā)學(xué)習(xí)路線總結(jié)及實(shí)習(xí)經(jīng)歷分享
除了知乎呢,還有某DN,某破站上也有太多的讀者詢問(wèn)我這樣的問(wèn)題:新手怎么學(xué)?要學(xué)到什么樣子才能找工作?有什么學(xué)習(xí)資料推薦?
其實(shí)學(xué)習(xí)路線一類的文章網(wǎng)絡(luò)上也有不少,但我看了很多,大部分都是羅列了許多的課程和知識(shí)點(diǎn),卻缺少一個(gè)類似時(shí)間軸的東西,告訴大家按照什么樣的節(jié)奏來(lái)推進(jìn),所以呢,我希望補(bǔ)上這一個(gè)重要的信息。
這份學(xué)習(xí)路線,包含了從新手到工作分階段所需要學(xué)習(xí)的內(nèi)容、詳細(xì)的知識(shí)點(diǎn)、可以參考的書單、電子書資源等等。給大家看C/C++后端開發(fā)的,最后一段附帶我一個(gè)小老弟的實(shí)習(xí)與學(xué)習(xí)經(jīng)歷,發(fā)車~
路線圖
開局一張圖,內(nèi)容全靠編,沒(méi)錯(cuò),咱們先來(lái)看一張全局圖,先從總體上有個(gè)宏觀的認(rèn)識(shí)。
這張圖有點(diǎn)大,由于微信對(duì)圖片壓縮的厲害,如果想要高清版的,可以私信獅:C++自動(dòng)獲取。
基礎(chǔ)部分到處都能學(xué),這里就不做過(guò)多贅述了;如若是想轉(zhuǎn)行或者轉(zhuǎn)崗C/C++后端的,獅之后也會(huì)寫一個(gè)更加詳細(xì)基礎(chǔ)的分享;這里就先將學(xué)習(xí)路線分為十個(gè)板塊來(lái)進(jìn)行。
一、精進(jìn)基石
1.數(shù)據(jù)結(jié)構(gòu)與算法
- 隨處可見的紅黑樹
- 磁盤存儲(chǔ)鏈?zhǔn)降腂樹與B+樹
- 海量數(shù)據(jù)去重的Hash與BloomFilter,bitmap
2.設(shè)計(jì)模式
- 創(chuàng)建型設(shè)計(jì)模式
- 結(jié)構(gòu)型設(shè)計(jì)模式
3.c++新特性
- stl容器,智能指針,正則表達(dá)式
- 新特性的線程,協(xié)程,原子操作,lamda表達(dá)式
4.Linux工程管理
- Makefile/cmake/configure
- 分布式版本控制git
- Linux系統(tǒng)運(yùn)行時(shí)參數(shù)命令
二、高性能網(wǎng)絡(luò)設(shè)計(jì)
1.網(wǎng)絡(luò)編程
- 網(wǎng)絡(luò)IO與select,poll,epoll
- reactor的原理與實(shí)現(xiàn)
- http/https服務(wù)器的實(shí)現(xiàn)
- websocket協(xié)議與服務(wù)器實(shí)現(xiàn)
2.網(wǎng)絡(luò)原理
- 服務(wù)器百萬(wàn)并發(fā)實(shí)現(xiàn)
- redis,memcached,nginx網(wǎng)絡(luò)組件
- Posix API與網(wǎng)絡(luò)協(xié)議棧
- UDP的可靠傳輸協(xié)議QUIC
3.協(xié)程框架NtyCo的實(shí)現(xiàn)
- 協(xié)程設(shè)計(jì)原理與匯編實(shí)現(xiàn)
- 協(xié)程調(diào)度器實(shí)現(xiàn)與性能測(cè)試
4.用戶態(tài)協(xié)議棧NtyTcp的實(shí)現(xiàn)
- 用戶態(tài)協(xié)議棧設(shè)計(jì)實(shí)現(xiàn)
- tcp/ip定時(shí)器與滑動(dòng)窗口
- 手把手設(shè)計(jì)實(shí)現(xiàn)epoll
5.高性能異步io機(jī)制io_uring
- 與epoll媲美的io_uring
- io_uring的使用場(chǎng)景
三、基礎(chǔ)組件設(shè)計(jì)
1.池式組件
- 手寫線程池與性能分析
- 內(nèi)存池的實(shí)現(xiàn)與場(chǎng)景分析
- 異步請(qǐng)求池的實(shí)現(xiàn)
- mysql連接池的實(shí)現(xiàn)
2.高性能組件
- 原子操作CAS與鎖實(shí)現(xiàn)
- 無(wú)鎖消息隊(duì)列實(shí)現(xiàn)RingBuffer
- 定時(shí)器方案紅黑樹,時(shí)間輪,最小堆
- 手寫死鎖檢測(cè)組件
- 手寫內(nèi)存泄漏檢測(cè)組件
- 手把手實(shí)現(xiàn)分布式鎖
3.開源組件
- Libevent/Libev框架實(shí)戰(zhàn)的那些坑
- 異步日志方案log4cpp
- 應(yīng)用層協(xié)議設(shè)計(jì)ProtoBuf/Thrift
四、中間件開發(fā)
1.redis
- redis相關(guān)命令詳解及其原理
- redis協(xié)議與異步方式
- 存儲(chǔ)原理與數(shù)據(jù)模型
- 主從同步與對(duì)象模型
2.MySQL
- SQL語(yǔ)句,索引,視圖,存儲(chǔ)過(guò)程,觸發(fā)器
- MySQL索引原理以及SQL優(yōu)化
- MySQL事務(wù)原理分析
- MySQL緩存策略
3.Kafka
- Kafka使用場(chǎng)景與設(shè)計(jì)原理
- Kafka存儲(chǔ)機(jī)制
4.gRPC
- gRPC的內(nèi)部組件關(guān)聯(lián)
- 基于http2的gRPC通信協(xié)議
5.nginx
- nginx反向代理與系統(tǒng)參數(shù)配置conf原理
- nginx過(guò)濾器模塊實(shí)現(xiàn)
- nginx Handler模塊實(shí)現(xiàn)
五、開源框架
1.skynet
- skynet設(shè)計(jì)原理
- sky net網(wǎng)絡(luò)層封裝以及l(fā)ua/c接口編程
- sky net重要組件以及手撕游戲項(xiàng)目
2.分布式API網(wǎng)關(guān)
- 高性能web網(wǎng)關(guān)Openresty
- Kong動(dòng)態(tài)負(fù)載均衡與服務(wù)發(fā)現(xiàn)
3.DPDK
- DPDK環(huán)境與testpmd/I3fwd/skeletion
- DPDK的用戶態(tài)協(xié)議棧
- 千萬(wàn)級(jí)流量并發(fā)的dns處理
- 高性能數(shù)據(jù)處理框架vpp
- DPDK的虛擬交換機(jī)框架OVS
4.高性能計(jì)算CUDA
- gpu并行計(jì)算cuda的開發(fā)流程
- 音視頻編解碼中的并行計(jì)算
六、云原生
1.Docker
- Docker風(fēng)光下的內(nèi)核功能
- Docker容器管理與鏡像操作
- Docker網(wǎng)絡(luò)管理
- Docker云與容器編排
2.Kubernetes
- K8S環(huán)境搭建
- Pod與Service的用法
- K8S集群管理
- K8S二次開發(fā)與K8S API
七、性能分析
1.性能與測(cè)試工具
- 測(cè)試框架gtest以及內(nèi)存泄漏檢測(cè)
- 性能工具與性能分析
- 火焰圖的生成原理與構(gòu)建方式
2.觀測(cè)技術(shù)bpf與ebpf
- 內(nèi)核bpf的實(shí)現(xiàn)原理
- bpf對(duì)內(nèi)核功能的觀測(cè)
3.內(nèi)核源碼機(jī)制
- 進(jìn)程調(diào)度機(jī)制
- 內(nèi)核內(nèi)存管理運(yùn)行機(jī)制
- 網(wǎng)卡nic與網(wǎng)絡(luò)協(xié)議棧的關(guān)系
- 文件系統(tǒng)組件
八、分布式架構(gòu)
1.RocksDB
- 不一樣的kv存儲(chǔ)RocksDB的使用場(chǎng)景
- RocksDB的特殊操作
2.云原生分布式數(shù)據(jù)庫(kù)TiDB
- TiDB存儲(chǔ)引擎的原理
- TiDB集群方案與Replication的原理
3.分布式服務(wù)
- 內(nèi)核級(jí)支持的分布式存儲(chǔ)Ceph
- 注冊(cè)服務(wù)中心Etcd
九、項(xiàng)目實(shí)戰(zhàn)
1.圖床共享云存儲(chǔ)
- fastdfs架構(gòu)分析和配置
- fastdfs存儲(chǔ)原理
- 分布式fastdfs存儲(chǔ)集群部署
- 高負(fù)載nginx/fastcgi
- 文件傳輸和接口設(shè)計(jì)
- 產(chǎn)品上云公網(wǎng)發(fā)布/測(cè)試用例
2.微服務(wù)即時(shí)通訊
- IM即時(shí)通訊項(xiàng)目框架分析和部署
- IM消息服務(wù)器/文件傳輸服務(wù)器
- 消息服務(wù)器/路由服務(wù)器
- 數(shù)據(jù)庫(kù)代理服務(wù)器設(shè)計(jì)
- 文件服務(wù)器和docker部署
- 產(chǎn)品上云公網(wǎng)發(fā)布/公網(wǎng)測(cè)試上線
十,配套參考書籍資料
1. MySQL:《高性能MySQL 第3版》
2.Nginx: 《深入理解Nginx:模塊開發(fā)與架構(gòu)分析(第2版)》(陶輝)
3.Redis:Redis設(shè)計(jì)與實(shí)現(xiàn) (黃健宏)
4.Linux內(nèi)核:《深入理解Linux內(nèi)核架構(gòu)》 (郭旭 譯)
5.數(shù)據(jù)結(jié)構(gòu)與算法:《算法導(dǎo)論》(第3版)
6. 性能分析:《性能之巔 洞悉系統(tǒng)、企業(yè)與云計(jì)算》 8
7.MongoDB:《MongoDB權(quán)威指南》
8.Ceph:《Ceph分布式存儲(chǔ)學(xué)習(xí)指南》(Ceph中國(guó)社區(qū))
9.Docker:《Docker容器與容器云(第2版)》。
10.TCP/IP:《Tcp/1p詳解卷一卷二卷三》 8
11.Linux系統(tǒng)編程:《Unix環(huán)境高級(jí)編程》
12.計(jì)算機(jī):《深入理解計(jì)算機(jī)系統(tǒng)》
13. DPDK:《深入淺出DPDK》 8
14.k8s:《Kubernates權(quán)威指南》龔正等編著
15.bpf:《BPF之巔 洞悉Linux系統(tǒng)和應(yīng)用性能》
總結(jié)
以上就是做C/C++后端開發(fā),從新手入門到工作所需要學(xué)習(xí)的內(nèi)容整理了,可能并不全面,但掌握以上這些內(nèi)容足以勝任大部分的崗位要求了。
除了學(xué)習(xí)路線,我還整理了這個(gè)過(guò)程中學(xué)習(xí)的大量學(xué)習(xí)資料,配合上面的學(xué)習(xí)路線使用:
適宜工程師人群
1.從事業(yè)務(wù)開發(fā)多年,對(duì)底層原理理解不夠深入的在職工程師
2.從事嵌入式方向開發(fā),想轉(zhuǎn)入互聯(lián)網(wǎng)開發(fā)的在職工程師
3.從事Qt/MFC等桌面開發(fā)的,薪資多年漲幅不大的在職工程師
4.從事非開發(fā)崗位(算法崗,運(yùn)維崗,測(cè)試崗),想轉(zhuǎn)后臺(tái)開發(fā)崗位的在職工程師
5.工作中技術(shù)沒(méi)有挑戰(zhàn),工作中接觸不到新技術(shù)的在職工程師
6.自己研究學(xué)習(xí)速度較慢,不能系統(tǒng)構(gòu)建知識(shí)體系的開發(fā)人員
7.了解很多技術(shù)名詞,但是深入細(xì)問(wèn)又不理解的工程師
8. 計(jì)算機(jī)相關(guān)專業(yè)想進(jìn)入大廠的在校生(本科及以上學(xué)歷,有c/c基礎(chǔ))
這里就拿一個(gè)學(xué)弟的實(shí)習(xí)經(jīng)歷舉個(gè)例子(跟我關(guān)系比較好,啥都帶他)實(shí)習(xí)面試基本情況,參與面試的公司:CVTE、搜狐、東方財(cái)富、美團(tuán)、騰訊、字節(jié)跳動(dòng)、阿里巴巴
CVTE:筆試-技術(shù)面1-技術(shù)面2-hr面-offer(第一次面試,他是說(shuō)挺順利的)
阿里巴巴提前批:技術(shù)面1-掛(當(dāng)時(shí)沒(méi)復(fù)習(xí),問(wèn)他啥,啥不會(huì),其實(shí)阿里面的真不難)
東方財(cái)富:技術(shù)面1-HR面-掛(HR面把他掛了,看不懂)
字節(jié)跳動(dòng):技術(shù)面1-技術(shù)面2-技術(shù)面3-hr面-offer(字節(jié)3面面試官拖了他快半個(gè)月才面,當(dāng)時(shí)心態(tài)很差,同學(xué)都拿了大廠offer)
百度:技術(shù)面1-技術(shù)面2-技術(shù)面3(一個(gè)下午面完的,但是玩了一上午,百度打過(guò)來(lái)的2個(gè)電話沒(méi)接到,然后就沒(méi)了)
騰訊:技術(shù)面1-技術(shù)面2-技術(shù)面3-hr面(也挺順利,被我逼著復(fù)習(xí)了一頓,感覺(jué)跟阿里差不多)
后面其他公司筆試面試邀請(qǐng)都拒了。
然后是他的學(xué)習(xí)經(jīng)歷,原話:
2020年3~8月:疫情在家大概3月份開始準(zhǔn)備學(xué)習(xí)C++,因?yàn)樵诩倚蕵O低,玩三天學(xué)一天,到7、8月份也只是會(huì)用C++,然后寫了個(gè)MFC的小項(xiàng)目練了練手。
2020年9月:前半個(gè)月學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò),后半個(gè)月學(xué)習(xí)深入理解計(jì)算機(jī)系統(tǒng)(當(dāng)然第一遍只看懂個(gè)大概)
2020年10月-12月:寫多線程服務(wù)器項(xiàng)目(即改編muduo),這個(gè)過(guò)程中伴隨學(xué)習(xí)網(wǎng)絡(luò)編程、操作系統(tǒng)、C++各種知識(shí)(之前C++只學(xué)了皮毛)
2021年1月-2月:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法并刷題,刷了不到200題。(其中寒假在家玩了半個(gè)月)
2021年3月:開啟海投模式,先投了一批小公司,基本都簡(jiǎn)歷掛,總算有幾個(gè)小廠給了面試機(jī)會(huì),邊面試邊復(fù)習(xí)。3月中旬開始投大廠,除了美團(tuán)一面掛,字節(jié)、騰訊、百度面試都很順利,沒(méi)掛過(guò),清明之前拿到了字節(jié)的口頭offer。
2021年4月:字節(jié)的正式offer郵件。
(說(shuō)實(shí)話我的學(xué)習(xí)效率不是很高,因?yàn)槲蚁矚g睡懶覺(jué)。)
ps:他睡懶覺(jué)我是發(fā)現(xiàn)了,天天上午叫不動(dòng)...
結(jié)語(yǔ)
不管是轉(zhuǎn)崗還是實(shí)習(xí)選方向的兄弟們,一個(gè)合格的 C++開發(fā)者從來(lái)不怕找不到工作的,即使你日后從事 Java或者Go的工作,由于語(yǔ)言的原理都是相通的,所以你的學(xué)習(xí)成本會(huì)比別人小的多。
我仔細(xì)想了想自己這些年的語(yǔ)言史:大學(xué)寫了一年的C語(yǔ)言和VB,三年的C#;研究生寫了一年的Python,兩年的C++;工作了開始寫JavaScript、Go以及Vue、React這些框架。
你要問(wèn)我最喜歡哪門語(yǔ)言?
毫無(wú)疑問(wèn),絕對(duì)是是C++!
不為什么,就是喜歡它的嚴(yán)謹(jǐn)!
C++天下第一!!!
種一棵樹的最好時(shí)間是十年前,其次就是現(xiàn)在,真心希望學(xué)弟學(xué)妹們以及一些想要轉(zhuǎn)計(jì)算機(jī)的小伙伴們加油!
別辜負(fù)了自己這么多年苦讀與工作經(jīng)歷;好好工作好好生活,想要相關(guān)資料或者學(xué)習(xí)路線圖的都可以私信獅,大庇天下寒士俱歡顏!!!
拜拜了您嘞~
總結(jié)
以上是生活随笔為你收集整理的C/C++后端开发学习路线总结(附带实习学习经历分享)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 每日新闻人声朗读器
- 下一篇: 妖精的尾巴手游快速升级辅助 爱蜂窝自动新