如何成為一名合格的 C/C++開(kāi)發(fā)者

在大多數(shù)開(kāi)發(fā)人員的認(rèn)知中,C/C++ 是一門(mén)非常難學(xué)的編程語(yǔ)言,很多人知道它的強(qiáng)大,但因?yàn)?b>“難”造成的恐懼讓很多人放棄。在我看來(lái),C/C++?一旦學(xué)成,其妙無(wú)窮,就像武俠小說(shuō)中的“九陽(yáng)神功”一樣,有了這個(gè)基礎(chǔ),學(xué)習(xí)任何語(yǔ)言和編程技術(shù)都非常快速!

本文就為大家分享我學(xué)習(xí)C/C++ 的經(jīng)驗(yàn),不少人都說(shuō)看完這篇文章感覺(jué)醍醐灌頂,想一看再看,希望你也能有所收獲!

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

01

C/C++ 當(dāng)前的應(yīng)用領(lǐng)域

通常情況下,C++ 可以看成是 C 的一個(gè)超集。

C?語(yǔ)言目前主要用于像操作系統(tǒng)一類偏底層的應(yīng)用開(kāi)發(fā),包括像?Windows/Linux?這樣的大型商業(yè)操作系統(tǒng),以及嵌入式操作系統(tǒng)、嵌入式設(shè)備上的應(yīng)用,還有一些開(kāi)源的軟件,也會(huì)選擇?C?開(kāi)發(fā)。

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

我們?cè)賮?lái)說(shuō)說(shuō)?C++,C++?的應(yīng)用領(lǐng)域目前有三大類:

第一類就是我們目前見(jiàn)到的各種桌面應(yīng)用軟件,尤其?Windows?桌面軟件,如?QQ、安全類殺毒類軟件、各種瀏覽器等;

另外就是一些基礎(chǔ)軟件和高級(jí)語(yǔ)言的運(yùn)行時(shí)環(huán)境,如大型數(shù)據(jù)庫(kù)軟件、Java?虛擬機(jī)、C#?的?CLR、Python?編譯器和運(yùn)行時(shí)環(huán)境等;

第三類就是一些業(yè)務(wù)型應(yīng)用軟件的后臺(tái),像游戲的服務(wù)器后臺(tái),如魔獸世界的服務(wù)和一些企業(yè)內(nèi)部的應(yīng)用系統(tǒng)。

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

02

C++ 語(yǔ)言基礎(chǔ)與進(jìn)階

2.1?基礎(chǔ):

這里說(shuō)的基礎(chǔ)不是狹義上的?C++?語(yǔ)言基礎(chǔ),而是包括?C++?開(kāi)發(fā)這一生態(tài)體系的基礎(chǔ),筆者認(rèn)為的基礎(chǔ)包括:

C++?語(yǔ)言本身熟練使用程度。

必須結(jié)合一個(gè)具體的操作系統(tǒng)平臺(tái),所以得熟悉某個(gè)操作系統(tǒng)平臺(tái)的?API?函數(shù),比如?Linux,以及該操作系統(tǒng)的原理。

網(wǎng)絡(luò)通信,網(wǎng)絡(luò)通信在這里具體一點(diǎn)就是?Socket?編程。

說(shuō)了這么多,你可能會(huì)覺(jué)得很抽象。舉個(gè)具體例子,假設(shè)我們現(xiàn)在要開(kāi)發(fā)一個(gè)類似電驢這樣的軟件,軟件界面如下圖:

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

如上圖所示,假設(shè)操作系統(tǒng)選擇 Windows,使用語(yǔ)言使用 C++,這款產(chǎn)品的實(shí)現(xiàn)技術(shù)分為?UI?和網(wǎng)絡(luò)通信部分,下面將詳細(xì)介紹這兩部分。

UI 部分

無(wú)論你是在閱讀別人的項(xiàng)目還是需要自己開(kāi)發(fā)這樣的項(xiàng)目,在確定了這款軟件使用的 UI 庫(kù),您就需要對(duì)?Windows 的窗口、對(duì)話框、消息產(chǎn)生、派發(fā)與處理機(jī)制進(jìn)行了解。

接著,根據(jù)上圖中的軟件功能,大致分為三大模塊,即資源、下載和分享。這三大塊是可以使用一個(gè)Windows Tab?控件去組織,這個(gè)時(shí)候您需要了解?Windows?Tab?控件的特性。

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

網(wǎng)絡(luò)通信部分

網(wǎng)絡(luò)通信部分,主要有兩大塊,第一個(gè)是程序啟動(dòng)時(shí),與服務(wù)端的交互;第二個(gè)就是文件下載與分享的?P2P?網(wǎng)絡(luò)。

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

2.2?進(jìn)階:

如果您達(dá)到了我上面說(shuō)的三點(diǎn)后,可以再找一些高質(zhì)量的開(kāi)源項(xiàng)目去實(shí)戰(zhàn)一下。需要注意的是,最好找一些沒(méi)有復(fù)雜業(yè)務(wù)或者您熟悉其業(yè)務(wù)的開(kāi)源項(xiàng)目(如開(kāi)源的?IM?系統(tǒng))。

我個(gè)人學(xué)習(xí)一套陌生的開(kāi)源項(xiàng)目時(shí),總是喜歡將程序用調(diào)試器正常跑起來(lái),然后再中斷下來(lái),統(tǒng)計(jì)當(dāng)前的線程數(shù)目,然后通過(guò)程序入口?main?函數(shù)從主線程追蹤其他工作線程是如何創(chuàng)建的;接著,分析和研究每個(gè)線程的用途以及線程之間交互的,這就是先整體把握,然后找感興趣的細(xì)節(jié)去學(xué)習(xí)

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

03

關(guān)于 C++ 的面試

關(guān)于?C++?面試,面試的要求到底是側(cè)重代碼量、項(xiàng)目經(jīng)驗(yàn),還是側(cè)重操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)這種基礎(chǔ)知識(shí)?

如果你是想進(jìn)入大型互聯(lián)網(wǎng)公司的應(yīng)屆生:

應(yīng)該優(yōu)先好好準(zhǔn)備算法和數(shù)據(jù)結(jié)構(gòu)知識(shí)以應(yīng)對(duì)面試,這是大型互聯(lián)網(wǎng)公司面試頻率最高的考察范圍。

如果是社會(huì)人士參加的?C++?職位的面試:

如果是大型互聯(lián)網(wǎng)公司,雖然社招問(wèn)的更多的是項(xiàng)目經(jīng)驗(yàn),但適當(dāng)準(zhǔn)備一些基礎(chǔ)的算法和數(shù)據(jù)結(jié)構(gòu)知識(shí)也是非常有用的。

在學(xué)習(xí)C/C++可以加入我們的學(xué)習(xí)交流QQ群: 954607083 ,領(lǐng)取C/C++學(xué)習(xí)資料

另外,C++ 是一門(mén)講究深度的編程技能,對(duì)于有一定工作年限的面試者,面試官往往會(huì)問(wèn)很多原理性的細(xì)節(jié),這就要求廣大 C++ 開(kāi)發(fā)者在平常多留心、多積累、多思考技術(shù)背后的原理

本文轉(zhuǎn)載自 | Chat-《如何成為一名合格的 C/C++開(kāi)發(fā)者》

作者 | 范蠡

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容