<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          吶,這不就是你要的C++后臺(tái)開發(fā)學(xué)習(xí)路線嗎?

          共 4005字,需瀏覽 9分鐘

           ·

          2020-08-27 21:09

          校招形勢(shì)

          在去年結(jié)束的秋季招聘中,后臺(tái)開發(fā)或服務(wù)器開發(fā)的崗位需求一度火熱,甚至超過了算法崗。不少同學(xué)從諸神黃昏的算法崗戰(zhàn)場(chǎng)上退下,轉(zhuǎn)向更偏向工程能力的后臺(tái)開發(fā)崗,從而造成后臺(tái)開發(fā)崗位競(jìng)爭(zhēng)的大爆發(fā)。


          后臺(tái)開發(fā)工程師主流使用的編程語言有C++、Java、PHP以及目前慢慢流行的Golang等。本文就將以C++的角度,講講如何學(xué)習(xí)和準(zhǔn)備后臺(tái)開發(fā)的崗位。


          一、語言基礎(chǔ)


          無論是C++開發(fā)還是Java開發(fā),對(duì)于一個(gè)碼農(nóng)而言,最重要的就是對(duì)于編程語言的熟悉。同樣,無論從事哪種類型的崗位,首當(dāng)其沖的就是要掌握好語言基礎(chǔ)。


          C++是一門博大精深的編程語言,不僅擁有繼承于C語言的過程化程序設(shè)計(jì)思想,還包含有面對(duì)對(duì)象(OOP)的設(shè)計(jì)理念。強(qiáng)大而又復(fù)雜。相對(duì)來說,C++的學(xué)習(xí)成本較高,語言里面的坑較多。語言基礎(chǔ)的學(xué)習(xí)路線如下:


          1 語法基礎(chǔ)

          重點(diǎn)掌握:(務(wù)必熟悉底層機(jī)制原理)

          • 指針和引用的概念

          • 指針與內(nèi)存關(guān)系

          • 程序編譯過程

          • static、const、#define的用法和區(qū)別

          • C和C++區(qū)別

          • 內(nèi)存模型

          • 內(nèi)存中的棧和堆分配


          2 面對(duì)對(duì)象基礎(chǔ)

          (務(wù)必熟悉底層機(jī)制原理)

          • 面向?qū)ο罄斫?/p>

          • 析構(gòu)函數(shù)

          • 構(gòu)造函數(shù)

          • 拷貝構(gòu)造

          • 多態(tài)

          • 純虛函數(shù)和虛函數(shù)

          • 虛函數(shù)實(shí)現(xiàn)機(jī)制

          • 虛函數(shù)表

          • 訪問限定符 public、private、protected

          • 繼承原理、虛繼承、菱形繼承

          • 靜態(tài)綁定和動(dòng)態(tài)綁定

          • new/delete和malloc/free

          • 重載、重寫和隱藏


          3 語法進(jìn)階

          (務(wù)必熟悉底層機(jī)制原理)

          • 智能指針

          • 左值、右值引用和move語義

          • 類型轉(zhuǎn)換方式

          • 常用的設(shè)計(jì)模式

          • 線程安全的單例模式

          • 內(nèi)存溢出和內(nèi)存泄漏

          • C++11新特性

          • 靜態(tài)鏈接庫和動(dòng)態(tài)鏈接庫

          ?

          4 STL標(biāo)準(zhǔn)模板庫

          (務(wù)必能進(jìn)行源碼剖析)

          • 迭代器、空間配置器理解

          • 常用容器特點(diǎn)、用法以及底層實(shí)現(xiàn)vector、list、deque、set、map、unorderedmap

          ?

          5 推薦書籍

          • 《C++Primer》可作為工具書,隨手查閱

          • 《EffectiveC++》深入了解C++的程序設(shè)計(jì)規(guī)范

          • 《STL源碼剖析》剖析STL的源碼底層,非常具有學(xué)習(xí)價(jià)值

          • 有精力還可以看《深度探索C++對(duì)象模型》《more EffecticeC++》

          ?

          二、算法與數(shù)據(jù)結(jié)構(gòu)


          對(duì)于普通人而言,算法的學(xué)習(xí)最重要的是能夠形成基本的算法思維,懂得從程序設(shè)計(jì)的角度對(duì)高重復(fù)性的操作做優(yōu)化。這其中基本算法思想的掌握和常用數(shù)據(jù)結(jié)構(gòu)的理解是必不可少。這方面的學(xué)習(xí)更傾向于多看多想多練。

          ?

          1 常見算法類型

          (務(wù)必能夠手撕代碼)

          ?

          2 常用數(shù)據(jù)結(jié)構(gòu)

          (務(wù)必熟悉底層原理和實(shí)現(xiàn))

          • 鏈表、棧、隊(duì)列、樹(二叉樹、平衡二叉樹、紅黑樹、B樹、B+樹、哈夫曼樹、字典樹)、跳表、圖

          ?

          3 推薦書籍

          • 《大話數(shù)據(jù)結(jié)構(gòu)》適合入門學(xué)習(xí)

          • 《劍指offer》必刷66題

          • 《算法導(dǎo)論》盡量看,能啃完就是大神

          ?

          三、計(jì)算機(jī)網(wǎng)絡(luò)


          網(wǎng)絡(luò)相關(guān)的東西不是很多,關(guān)鍵在于對(duì)常見網(wǎng)絡(luò)協(xié)議簇的認(rèn)識(shí)和理解,以及一些常規(guī)操作底層設(shè)計(jì)實(shí)現(xiàn)的剖析。比如:


          ??????? | 輸入www.baidu.com會(huì)發(fā)生什么

          ????????| 微信掃描登錄會(huì)發(fā)生什么


          1 重點(diǎn)掌握知識(shí)點(diǎn)

          • OSI七層模型

          • TCP/IP五層模型

          • TCP/IP協(xié)議總結(jié)

          • TCP、UDP區(qū)別

          • TCP三次握手、四次揮手

          • TCP狀態(tài)轉(zhuǎn)換

          • TCP狀態(tài)中TIME_WAIT

          • TCP連接建立需要為什么不是兩次握手

          • TCP第三次握手失敗會(huì)出現(xiàn)什么

          • TCP長連接和短鏈接及優(yōu)缺點(diǎn)

          • TCP擁塞控制-慢啟動(dòng)、擁塞避免、快重傳、快啟動(dòng)

          • TCP如何保證可靠性傳輸

          • TCP如何解決粘包、拆包問題

          • TCP為什么可靠

          • UDP如何實(shí)現(xiàn)TCP可靠傳輸

          • IP地址和子網(wǎng)掩碼

          • ARP解析過程

          • DNS原理

          • HTTP狀態(tài)碼

          • HTTP1.0、HTTP1.1、HTTP2.0區(qū)別

          • HTTP和HTTPS區(qū)別

          • HTTPS加密過程

          • 非對(duì)稱加密和對(duì)稱加密算法

          • Nagle算法

          ?

          2 推薦書籍

          • 《計(jì)算機(jī)網(wǎng)絡(luò)自頂向下方法》教材書,可放手邊查閱

          • 《TCP/IP詳解》重點(diǎn)了解TCP、IP、UDP協(xié)議實(shí)現(xiàn)

          ?

          四、數(shù)據(jù)庫


          數(shù)據(jù)庫的一般使用其實(shí)不難,但是對(duì)于不同數(shù)據(jù)庫的特性、實(shí)現(xiàn)機(jī)制、應(yīng)用場(chǎng)景和性能優(yōu)化方面卻能夠難倒一大批面試者。同樣數(shù)據(jù)庫本身也是非常好的項(xiàng)目實(shí)例,往往能夠從中學(xué)習(xí)到許多程序設(shè)計(jì)的思想和模式。因此,對(duì)數(shù)據(jù)庫要明白怎么用、為什么用、怎么用得好這幾個(gè)方面的問題。


          1?重點(diǎn)掌握

          • 數(shù)據(jù)庫類別

          • 關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫區(qū)別

          ??????? MySQL:

          • SQL常見語句

          • MySQL內(nèi)鏈接,外鏈接(左鏈接、右鏈接、全鏈接)

          • MySQL索引類型和原理

          • MySQL事務(wù)實(shí)現(xiàn)原理ACID

          • MySQL數(shù)據(jù)存儲(chǔ)引擎

          • MySQL主從復(fù)制原理、作用和實(shí)現(xiàn)

          • MySQL日記系統(tǒng)redo log、binlog、undo log

          • MVCC實(shí)現(xiàn)原理

          • Sql優(yōu)化思路

          • 范式理論

          • 數(shù)據(jù)庫高并發(fā)解決方法

          ??????? Redis:????

          • Redis支持的數(shù)據(jù)類型

          • Redis持久化

          • Redis 架構(gòu)模式

          • 主從復(fù)制

          • 一致性哈希算法

          ?

          2 推薦書籍

          • 《高性能 Mysql》能夠加深對(duì)Mysql的理解和使用

          • 《Redis設(shè)計(jì)與實(shí)現(xiàn)》比較全面的書,可以多看看


          ?

          五、操作系統(tǒng)


          操作系統(tǒng)的問題會(huì)集中在進(jìn)程和線程,但是這一類的問題往往會(huì)以開放題的形式出現(xiàn)。主要考察的是對(duì)操作系統(tǒng)組件以及運(yùn)行過程的理解。比如:


          ? ? |?開機(jī)登錄系統(tǒng)發(fā)生了什么?

          ? ? |?復(fù)制粘貼是怎樣操作的?

          ?

          1 重點(diǎn)掌握

          • 物理內(nèi)存和虛擬內(nèi)存

          • 緩存IO和直接IO

          • 作業(yè)調(diào)度算法

          • 線程和進(jìn)程

          • 進(jìn)程和線程的調(diào)度

          • 線程的創(chuàng)建和結(jié)束

          • 線程狀態(tài)

          • 線程間通信與線程同步機(jī)制

          • 互斥鎖和信號(hào)量

          • 線程池

          • 消費(fèi)者和生產(chǎn)者

          • 死鎖

          • 并發(fā)和并行

          ?

          2 推薦書籍

          • 《深入理解計(jì)算機(jī)系統(tǒng)》很全面的書,這一本就夠用了


          六、Linux系統(tǒng)


          對(duì)Linux系統(tǒng)的熟練使用是后臺(tái)開發(fā)/服務(wù)器開發(fā)的必備技能點(diǎn)。這年頭,不會(huì)幾個(gè)Linux指令都不好意思說自己是敲代碼的。(客戶端和前端的同學(xué)表示不服)不管怎樣,對(duì)于Linux系統(tǒng)的掌握無論在哪個(gè)方向上,都會(huì)有用武之地的。


          1 Linux系統(tǒng)操作和命令

          • top命令

          • ps命令

          • netstat命令

          • awk命令

          • find命令

          • grep命令

          • wc命令

          • sed命令

          • head和tail命令

          • 正則表達(dá)式

          • 如何查找出現(xiàn)頻率最高的100個(gè)IP地址

          • linux如何統(tǒng)計(jì)文件中某個(gè)字符串出現(xiàn)的頻率

          • linux啟動(dòng)的第一個(gè)進(jìn)程

          • linux查看端口占用

          • linux查看CPU和內(nèi)存使用

          • Linux查看系統(tǒng)負(fù)載命令

          • Linux調(diào)試程序

          • Linux硬鏈接和軟連接

          • core dump

          • cmake和makefile

          • Shell腳本基本語法和使用

          ?

          2 推薦書籍

          • 《鳥哥私房菜》入門足夠了,多敲多寫才能更快掌握

          ?

          七、Linux網(wǎng)絡(luò)編程


          后臺(tái)開發(fā)是離不開網(wǎng)絡(luò)編程的,甚至簡單來說,后臺(tái)開發(fā)就是用厲害點(diǎn)的電腦去處理大規(guī)模的網(wǎng)絡(luò)請(qǐng)求。所以作為一名合格的后端開發(fā)人員,對(duì)Linux網(wǎng)絡(luò)編程的熟悉是必不可少的。


          1 重點(diǎn)掌握

          • 孤兒進(jìn)程、僵尸進(jìn)程和守護(hù)進(jìn)程

          • 進(jìn)程間通信方式signal、file、pipe、shm、sem、msg、socket

          • 線程同步機(jī)制線程:互斥量、鎖機(jī)制、條件變量、信號(hào)量、讀寫鎖

          • fork返回值

          • 五大IO模型:阻塞I/O、非阻塞I/O、I/O復(fù)用、信號(hào)驅(qū)動(dòng)I/O、異步I/O

          • IO復(fù)用機(jī)制

          • epoll與select/poll

          • LT水平觸發(fā)和ET邊緣觸發(fā)

          • Reactor和Proactor模式

          • 反向代理、負(fù)載均衡

          ?

          2 推薦書籍

          • 《UNIX環(huán)境高級(jí)編程》APUE 比較難啃,可以挑著看

          • 《Unix網(wǎng)絡(luò)編程》UNP 同樣比較難啃,可以挑著看

          • 《Linux多線程服務(wù)器端編程》Muduo網(wǎng)絡(luò)庫推薦看看源碼實(shí)現(xiàn)

          • 《深入理解Nginx》深入了解基于C的web服務(wù)器實(shí)現(xiàn)


          八、項(xiàng)目準(zhǔn)備


          如果以上的東西你都已經(jīng)準(zhǔn)備好了,那么相信你已經(jīng)了具備C++后臺(tái)開發(fā)能力。但是要記得,一個(gè)大型線項(xiàng)目的開發(fā),從來都不純粹是單一語言的設(shè)計(jì)和實(shí)現(xiàn)。


          因此用C++或者用Java或者用Golang或者用Python的區(qū)別或許沒那么大,它們都有擅長的地方,畢竟存在即真理。所以,如果你真的有精力的話,不妨還可以了解一下更深層次的技術(shù):

          • 海量日志處理和并行計(jì)算開發(fā)

          • 分布式技術(shù)框架、中間件等 Dubbo、Spring Cloud?、Zookeeper?、Kfaka

          • 流媒體分發(fā)技術(shù)CDN

          • ...


          當(dāng)然,這些都不是非常必要的。但是絕對(duì)是亮點(diǎn)!此外,你可以準(zhǔn)備一些基礎(chǔ)向的相關(guān)項(xiàng)目:

          • 網(wǎng)絡(luò)庫,可參考Muduo或者Nginx實(shí)現(xiàn)

          • web服務(wù)器/http服務(wù)器,可實(shí)現(xiàn)基本的http響應(yīng)請(qǐng)求和處理

          • 簡易版STL庫,展現(xiàn)C++的綜合代碼能力

          • 局域網(wǎng)聊天室開發(fā),涉及到網(wǎng)絡(luò)編程實(shí)現(xiàn)在線群聊

          • 分布式日志系統(tǒng)

          • 簡易版數(shù)據(jù)庫設(shè)計(jì)

          • 可參考一些C++常用庫,造一些輪子或者做些有趣的小工具。

          • ......更多靈感可查看歷史文章

            了解這些C++常用庫,或許能夠幫你找到合適的個(gè)人項(xiàng)目!



          總結(jié)

          在校園招聘中,對(duì)后臺(tái)開發(fā)的面試大多還是針對(duì)候選人的計(jì)算機(jī)基礎(chǔ)。大多數(shù)學(xué)生在校內(nèi)接觸不到太多高并發(fā)高可用的服務(wù)場(chǎng)景,甚至能上線的項(xiàng)目都很少,因此也很難要求校招生能夠真正具備后臺(tái)開發(fā)的能力。


          所以對(duì)于C++后臺(tái)開發(fā)崗而言,對(duì)C++/Linux的充分熟悉以及扎實(shí)的計(jì)算機(jī)基礎(chǔ)和有相關(guān)的學(xué)習(xí)經(jīng)歷,就已經(jīng)能夠滿足各大公司的要求了。當(dāng)然如果有在基礎(chǔ)架構(gòu)分布式開發(fā)等方面的經(jīng)驗(yàn),就更是各大廠搶手的香餑餑。

          ?

          本文所介紹的整體學(xué)習(xí)路線可覆蓋絕大多數(shù)大廠的面試題目和考察范圍,如今學(xué)習(xí)資料太多,選擇路線清晰的適合自己的才最重要。資料不必多,能理解掌握才是最關(guān)鍵的。?

          - end -

          瀏覽 66
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本大香蕉色 | 肏屄视频在线 | 一级a一级a爰片免费 | 男人天堂亚洲天堂 | 日韩乱伦网站 |