<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++ 學(xué)到什么程度可以找工作?

          共 9797字,需瀏覽 20分鐘

           ·

          2021-07-27 14:24

          置頂/星標(biāo)公眾號??,硬核文章第一時(shí)間送達(dá)!

          鏈接 | https://www.zhihu.com/question/400543720


          至少需要哪些知識?需要掌握到什么程度呢?


          https://www.zhihu.com/question/400543720/answer/1275849097
          簡單說,如果僅僅學(xué)C/C++本身的話,學(xué)到什么程度你都找不到工作。

          學(xué)習(xí)掌握某種編程語言的語法只是一個(gè)基礎(chǔ),一個(gè)起點(diǎn)。因?yàn)檎Z言只是一種工具,學(xué)會語法特性僅僅是知道這種工具長什么樣子、能擰能鉆能銑能刨,如此而已。

          想要找到工作,你需要能夠使用這件工具創(chuàng)造價(jià)值——你不能僅僅知道鋼銼能挫鐵,還要學(xué)會看圖紙、會在給你的料子上合理規(guī)劃、挫出符合圖紙要求的合格元件來。

          簡單說,如果分若干級別的話,可能如下:

          1、了解C++的常規(guī)語法,知道函數(shù)調(diào)用、類、虛函數(shù)、多態(tài)等的功能/原理;可以獨(dú)立完成課后習(xí)題。

          達(dá)到這個(gè)水平已經(jīng)可以勝任很多職位了;但需要在工作中繼續(xù)成長。幸好愿意招應(yīng)屆生的公司對新人的要求都不高,你有時(shí)間慢慢成長。
          但要注意,這里的要求是“獨(dú)立完成課后習(xí)題”,靠老師教、抄別人答案是不管用的。甚至抄完了死記硬背下來也是白搭。必須自己通過獨(dú)立思考解決問題。面試者有的是辦法試探出你有沒有自己解決問題的能力。
          如果課后題被“劇透”的太厲害的話,網(wǎng)上刷題也是條路子。還是那句話,別一味抄別人的代碼,你起碼要能獨(dú)立解決其中一小半的問題,這才能證明你的確知道這件工具的用法。

          2、能夠活用自己掌握的C++知識,獨(dú)立實(shí)現(xiàn)一些小型項(xiàng)目

          比如,寫個(gè)沙雕小游戲逗女朋友開心,寫個(gè)排課程序幫老師解憂,甚至寫個(gè)簡單的課程提醒程序提示你每天帶哪些書,等等。真正把“實(shí)踐任務(wù)”和“C++編程連起來”——現(xiàn)在很多公司其實(shí)干的就這活,沒什么技術(shù)含量。

          3、借助別人封裝好的API/庫,實(shí)現(xiàn)看起來更強(qiáng)更厲害的功能

          比如,借助算法庫里的MD5算法和OS提供的目錄遍歷API,把系統(tǒng)所有要害文件(應(yīng)用程序、DLL、注冊表等)的大小、修改時(shí)間、數(shù)字摘要都算出來、儲存到一個(gè)文件里。以后每隔幾天遍歷一次,檢查它們的大小、修改時(shí)間,如果有變化就計(jì)算數(shù)字摘要——也可以強(qiáng)制計(jì)算所有的數(shù)字摘要——從而找出哪些要害文件被修改了、這些修改是系統(tǒng)自己打的補(bǔ)丁呢,還是不法程序(病毒木馬流氓軟件等)的非法修改。

          這就是一個(gè)極為簡陋、但效果還行的反病毒工具。它的缺點(diǎn)是,這是個(gè)白名單工具,只能檢查到通過修改要害文件獲得執(zhí)行權(quán)的病毒/木馬,同時(shí)會對系統(tǒng)更新產(chǎn)生誤報(bào)。但仍然不失為一個(gè)效果不錯(cuò)的系統(tǒng)問題排查工具——因?yàn)镺S要害文件經(jīng)常是好些年不變的(現(xiàn)在你知道為何有時(shí)候有的殺毒軟件會殺系統(tǒng)文件甚至殺自己了吧?)。

          再比如,利用現(xiàn)成的深度學(xué)習(xí)庫/語音識別庫搞一些貌似高大上實(shí)則沒什么技術(shù)含量的人臉識別/語音識別/聲線識別程序——?jiǎng)e緊張,你能行。

          能折騰這些,你到公司基本上就可以算是個(gè)“能人”,可以跟風(fēng)做一些聽起來很帥但其實(shí)仍然沒什么技術(shù)含量的工作了。

          4、真正理解算法與數(shù)據(jù)結(jié)構(gòu),理解操作系統(tǒng)原理、計(jì)算機(jī)原理、數(shù)字電路原理以及編譯原理、數(shù)據(jù)庫原理、網(wǎng)絡(luò)原理等等基礎(chǔ)原理

          到了這個(gè)程度,你才算沒辜負(fù)“科班出身”這個(gè)頭銜,脫離了“碼農(nóng)”“調(diào)庫專家”“新技術(shù)層出不窮怎么都跟不上學(xué)不完”的半外行狀態(tài),可以從事一些較為硬核的、探索性的工作,幫公司開拓新應(yīng)用領(lǐng)域了。

          5、你仍然可以繼續(xù)深入。比如圖形圖像壓縮,比如加解密算法,比如網(wǎng)絡(luò)協(xié)議棧等,每一個(gè)子領(lǐng)域都夠很多專家投入一輩子的。不過這些領(lǐng)域經(jīng)常返璞歸真,C反倒會成為更常用的語言;而且往往需要高等數(shù)學(xué)作為發(fā)動(dòng)機(jī)。

          比如著名的卡馬克牛頓迭代法求平方根的倒數(shù)算法,其中用的魔幻數(shù)字就引出了好幾篇論文。專家們用卷積找出了一個(gè)魔幻數(shù)字,但是效果不如卡馬克數(shù)字。再后來有人暴力窮舉,這才找出一個(gè)優(yōu)于卡馬克魔幻數(shù)的新數(shù)字來。

          再比如,現(xiàn)在的CNN神經(jīng)網(wǎng)絡(luò),有次我提到要理解它你得懂卷積;于是跳出來幾個(gè)自以為很懂的出來杠我“我敢打賭,你是聽到這個(gè)東西的名字里有個(gè)卷積于是胡亂腦補(bǔ)。其實(shí)這東西和卷積沒半毛錢關(guān)系”……

          他們不知道,CNN里面的確沒有卷積符號、也沒有使用卷積計(jì)算公式;但它的實(shí)現(xiàn)思路就是卷積運(yùn)算。只不過它的設(shè)計(jì)者把卷積算法化用進(jìn)簡單的連續(xù)矩陣計(jì)算中,在深度神經(jīng)網(wǎng)絡(luò)中實(shí)現(xiàn)了“特征抽象和特征空間變換”——這是矩陣和卷積全都學(xué)到出神入化、用出來讓普通人看不懂、但內(nèi)行一看就知道還是新瓶裝舊酒的結(jié)果。

          其實(shí)前面提到的數(shù)據(jù)結(jié)構(gòu)與算法等基礎(chǔ)知識,會玩的同樣能玩到返璞歸真。比如有人隨隨便便三兩行代碼就把一個(gè)數(shù)組變成了環(huán)形緩沖區(qū),或者簡簡單單兩行聲明就搞定了一個(gè)遞歸算法。如果你積累不夠深厚、頭腦不夠靈活,這個(gè)東西就很難看懂。

          總之,這個(gè)領(lǐng)域是屬于創(chuàng)造者的。能踏入這個(gè)領(lǐng)域,那就不是你找工作,而是工作找你了。

          綜上,如果僅僅是學(xué)C++這門語言的話,學(xué)到什么程度你都不好找工作。

          你需要學(xué)的,是用C++這門語言去解決問題。能解決課后練習(xí)題是一個(gè)水平,能刷網(wǎng)上的算法題又是一個(gè)水平;能自己搞定簡單的實(shí)用項(xiàng)目是一個(gè)水平,能充分利用操作系統(tǒng)以及第三方軟件/庫給你提供的抽象(意味著你能理解他們的設(shè)計(jì)思路)實(shí)現(xiàn)幾乎所有東西又是一個(gè)水平;理解各種東西背后的原理是一個(gè)水平,把這些原理玩的出神入化又是一個(gè)水平;學(xué)會用數(shù)字認(rèn)識這個(gè)世界是一個(gè)水平,能夠化用高深的數(shù)學(xué)知識、信手解決沒人說得清的難題又是一個(gè)水平……

          一般來說,只要你能達(dá)到“用C++解決簡單問題”的水平,找工作就不成問題了;只是受限較多,只能從事一些較為初級的工作,極易陷入沒日沒夜機(jī)械的寫代碼的窘境,然后看著層出不窮的新技術(shù)欲哭無淚。

          你往前趕的越多,你代碼里的智慧和靈氣就越多;此時(shí)你才可以嘗試那些必須用巧力的工作,或者用巧力把繁重的工作變得簡單、甚至促進(jìn)你所在公司乃至全人類的開發(fā)效率。玩到這個(gè)程度,你才算真正踏入程序員的行列。


          https://www.zhihu.com/question/400543720/answer/1723466994
          應(yīng)屆畢業(yè)加入騰訊做游戲開發(fā),用的就是windows C++!
          先說下我應(yīng)屆加入騰訊的經(jīng)歷,供大家參考:
          大三就制定了加入騰訊游戲的目標(biāo),同時(shí)鎖定在圖形圖像開發(fā),這意味著要好好學(xué)習(xí)C++。
          因?yàn)榇髮W(xué)前兩年全荒廢了,所以大三是沖擊的一年。
          要學(xué)好C++,先了解C語言,當(dāng)年這是師兄告訴我的,今天回頭看非常對!

          譚浩強(qiáng)的《C語言程序設(shè)計(jì)》反復(fù)看,然后一行行在電腦上敲出來。

          當(dāng)時(shí)對計(jì)算機(jī)缺乏系統(tǒng)認(rèn)識,最難理解的就是指針,書上說它是個(gè)變量地址,那么問題來了,什么是地址?一不小心,指針就讓程序Crash了。直到讀研的時(shí)候,看了大學(xué)教材:《計(jì)算機(jī)組成原理》這本書,我才明白指針背后的含義。

          攻克完C語言之后,聽師兄師姐說數(shù)據(jù)結(jié)構(gòu)也是自學(xué)編程需要攻克的重難點(diǎn)。從數(shù)組到鏈表再到堆棧、二叉樹、平衡二叉樹、紅黑樹、B+/B-樹,簡直就像看天書。還記得二叉樹的先序,中序,后序遍歷就把我弄暈乎了。更別提后面的AVL樹的刪除以及B-樹。

          我應(yīng)付看不懂的方式也很粗暴:做筆記,勾選出沒看懂的部分,反復(fù)看。一遍不行看兩遍三遍四遍,直到所有內(nèi)容看懂為止,看懂后就上機(jī),上到天昏地暗上到頭暈?zāi)X脹。數(shù)據(jù)結(jié)構(gòu)這本書,記得來來回回看了10多遍,上機(jī)100小時(shí)以上。

          這之后開始系統(tǒng)的學(xué)習(xí)網(wǎng)絡(luò)、C++、VC,還記得有一本非常厚的書:《C++ Primer》,可以說上面的每一個(gè)例子,都上機(jī)造過輪子。

          隨后開始啃《Effective C++》、《More Effective C++》、《C++程序設(shè)計(jì)原理》、《深度探索C++對象模型》、《STL源碼剖析》、《計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)方法》、《TCP/IP詳解》。

          除了瘋狂自學(xué),畢業(yè)的壓力也很重,但掌握的東西越多,你對未來就越篤定。

          瘋狂學(xué)習(xí)的過程是枯燥且伴隨痛苦的,編譯報(bào)各種不通過的時(shí)候讓人無比抓狂,知識點(diǎn)學(xué)不會的時(shí)候會讓你懷疑自己的智商。

          曾經(jīng)看過的一部分書籍:


          成長的過程,潤物細(xì)無聲,極難察覺。但那段枯燥痛苦的學(xué)習(xí)和刷題歲月讓我未來的道路受益匪淺。畢業(yè)后,我也如愿拿到騰訊游戲年薪近15萬(多年前)的Offer,開啟了職場生涯。

          畢業(yè)后,擔(dān)任過360技術(shù)委員會成員,在C++這條路上走得更遠(yuǎn)了,再給大家一些系統(tǒng)的建議:

          一、C/C++入門階段

          這個(gè)階段全力以赴的話,5個(gè)月時(shí)間差不多可以掌握。
          剛?cè)腴T的時(shí)候我們主要是學(xué)習(xí)培養(yǎng)編程思維和動(dòng)手能力,深刻理解面向過程和面向?qū)ο蟮乃枷敕椒ǎ@對以后的程序員之路非常重要!
          所以學(xué)習(xí)語言更為重要:

          面向?qū)ο缶幊趟枷耄活惖姆庋b,構(gòu)造和析構(gòu)、靜態(tài)成員、對象管理;類的構(gòu)造(有參構(gòu)造函數(shù)、無參構(gòu)造、拷貝構(gòu)造、默認(rèn)構(gòu)造函數(shù))和析構(gòu);對象動(dòng)態(tài)管理、友元函數(shù)、友元類、操作符重載;C++編譯器對象管理模型分析;類對象的動(dòng)態(tài)管理(new/delete);友元函數(shù)和友元類;運(yùn)算符重載(一元運(yùn)算符、二元運(yùn)算符、運(yùn)算符重載難點(diǎn)、項(xiàng)目開發(fā)中的運(yùn)算符重載);類的繼承、多繼承及其二義性、虛繼承;多態(tài)(概念、意義、原理剖析、多態(tài)案例);虛函數(shù)、純虛函數(shù)、抽象類(面向抽象類編程思想案例);函數(shù)模板、類模板,模板的繼承。

          C++類型轉(zhuǎn)換;C++輸入輸出流(標(biāo)準(zhǔn)I/O 文件I/O 字符流I/O);C++異常處理(異常機(jī)制、異常類型、異常變量、異常層次結(jié)構(gòu)、標(biāo)準(zhǔn)異常庫);利用一些IDE開發(fā)工具:諸如Windows平臺VC系列:VC++6.0(比較古老) ;Visual Studio2013, Visual Studio2015,Visual Studio2017,Visual Studio2019;Mac平臺的XCode系列,還有CodeBlock,另附一些高級編輯器Notepad++, EditPlus,UE等一些開發(fā)工具的常用設(shè)置和一些常見快捷鍵的使用。

          這個(gè)階段推薦以下兩本書:

          《Essential C++》 這是一本內(nèi)容不多但很實(shí)用的C++入門書籍,強(qiáng)調(diào)快速上手與理解C++編程。本書主要圍繞一系列逐漸復(fù)雜的程序問題,以及用以解決這些問題的語言特性展開講解。你不只學(xué)到C++的函數(shù)和結(jié)構(gòu),也會學(xué)習(xí)到它們的設(shè)計(jì)目的和基本原理。

          《C++ Primer》 本書對C++基本概念、技術(shù)、以及現(xiàn)代C++編程風(fēng)格進(jìn)行了全面而且權(quán)威的闡述,是C++初學(xué)者的最佳指南;本書可以幫助你編寫實(shí)用的程序,而無需首先精通每個(gè)語言細(xì)節(jié)。對于中高級程序員,本書也是不可或缺的參考書。

          二、C/C++開發(fā)進(jìn)階

          這個(gè)階段非常刻苦的話,需要半年以上時(shí)間。
          在第二階段學(xué)習(xí)的時(shí)候,就是比較重要的了,C++開發(fā)的進(jìn)階之路,更是一個(gè)讓自己找份薪水比較體面的工作的籌碼。

          C++進(jìn)階之STL:

          STL = Standard Template Library,即標(biāo)準(zhǔn)模板庫。這是提高開發(fā)效率的極品工具。通過學(xué)習(xí)此階段,應(yīng)掌握泛型編程技巧,理解容器類在C++語言中的應(yīng)用模式,以及熟練掌握全部STL類的使用方法。

          C++進(jìn)階之設(shè)計(jì)模式:

          決定一個(gè)項(xiàng)目成敗最重要的因素是項(xiàng)目總體的設(shè)計(jì),通過本階段的學(xué)習(xí),可掌握面向?qū)ο缶幊讨兄匾囊画h(huán),是編碼前建模的技巧所在。單例模式;工廠模式;代理模式;迭代模式等,這些都是你要掌握的哦。

          C++進(jìn)階之?dāng)?shù)據(jù)結(jié)構(gòu)基礎(chǔ):

          這是所有編程語言中最應(yīng)該學(xué)習(xí)的部分,程序組成的基礎(chǔ)之一。順序存儲、鏈?zhǔn)酱鎯?、循環(huán)鏈表;
          雙向鏈表、棧(順序和鏈?zhǔn)?、隊(duì)列(順序和鏈?zhǔn)?;
          棧的應(yīng)用、樹基本概念及遍歷、二叉樹;
          排序算法、并歸算法、選擇、插入、快速、希爾。

          這個(gè)階段推薦以下幾本書:

          《Effective C++》和《More effective C++》 作者是Scott Meyers。你應(yīng)該熟讀它們,并清楚地理解每個(gè)項(xiàng)目。該書圍繞55條準(zhǔn)則,每一條都介紹了一個(gè)可讓你寫出更好的C++程序代碼的方法,并以特別設(shè)計(jì)過的例子詳加討論。

          《Exceptional C++(C++編程剖析)》和《More exceptional C++》 這兩本書中都包含了40個(gè)C++編程問題,這些問題會讓你磨練自己的技能,最終成為優(yōu)秀的C++程序員。這些問題是Herb Sutter精心挑選,與ISO/ANSI C++官方標(biāo)準(zhǔn)相一致,幫助程序員在設(shè)計(jì)、架構(gòu)和編碼過程中保持良好的風(fēng)格,從而使編寫的C++軟件更健壯、更高效。

          《Inside the C++ object model(深度探索C++對象模型)》 本書專注于C++面向?qū)ο蟪绦蛟O(shè)計(jì)的底層機(jī)制,包括結(jié)構(gòu)式語意、臨時(shí)性對象的生成、封裝、繼承,以及虛擬——虛擬函數(shù)和虛擬繼承,幫助你理解程序的底層實(shí)現(xiàn),以便寫出更高效的代碼。

          《The design and evolution of C++(C++語言的設(shè)計(jì)與演化)》 本書作者也是C++語言的設(shè)計(jì)者Bjarne Stroustrup,作者在書中綜合性地介紹了C++的發(fā)展歷史,C++中各種重要機(jī)制的本質(zhì)意義和設(shè)計(jì)背景,這些機(jī)制的基本用途和使用方法,討論了C++所適合的應(yīng)用領(lǐng)域及其未來的發(fā)展前景,既沒有忽略關(guān)鍵性的詳情,又沒有過多地陷入技術(shù)細(xì)節(jié)。

          三、C++開發(fā)高級

          這個(gè)階段幾乎伴隨了職場后續(xù)的整個(gè)生涯,只有更精沒有最精,C++高手之路,任重道遠(yuǎn)!

          C++進(jìn)階之QT開發(fā):

          掌握QT類庫構(gòu)架,圖形界面開發(fā)模型;掌握QT開發(fā)技巧,消息機(jī)制,圖形處理;掌握QT網(wǎng)絡(luò)編程,UDP,TCP使用方式;掌握QT文件處理方式,序列化;掌握QT在windows,linux,ios,android不同平臺下的移植技術(shù)

          C++進(jìn)階之Windows/Linux網(wǎng)絡(luò)服務(wù)器:

          掌握Unix/Linux平臺開發(fā)方式;熟練使用系統(tǒng)調(diào)用;熟練Unix/Linux內(nèi)存管理,進(jìn)程,線程調(diào)度;掌握MFC界面開發(fā),網(wǎng)絡(luò)編程;熟悉網(wǎng)絡(luò)服務(wù)器開發(fā)方式,熟練編寫TCP,UCP網(wǎng)絡(luò)服務(wù)程序;掌握同步/異步IO模型在網(wǎng)絡(luò)編程中的使用方式。

          C++進(jìn)階之?dāng)?shù)據(jù)庫開發(fā):

          掌握SQL語言的實(shí)用技巧。Oracle,MySQL數(shù)據(jù)庫的使用方式。
          如果你能熟練掌握以上列出的技能,具備解決復(fù)雜問題和技術(shù)難點(diǎn)的能力,而且你能獨(dú)立開發(fā)一些比較復(fù)雜的功能模塊,這個(gè)時(shí)候月薪過萬都是小意思了!
          這就是所謂的程序員大牛了,當(dāng)下炙手可熱的全棧開發(fā)工程師,既曉前端,又通后臺??焖俣ㄎ粏栴},解決問題對他們來說已是小菜一碟,就是人們常說的神秘大牛,只在公司技術(shù)攻關(guān)的時(shí)候才會才看到他們的身影。

          這個(gè)階段,在C++領(lǐng)域,你已經(jīng)飛躍愚昧之巔跨越絕望之谷,進(jìn)入開悟之破了。推薦以下書籍:

          《The C++ standard library(C++標(biāo)準(zhǔn)程序庫)》 這是標(biāo)準(zhǔn)模板庫字典,你可以在本書中找到STL相關(guān)的一切知識。本書焦點(diǎn)放在標(biāo)準(zhǔn)模板庫、檢查容器、迭代器、函數(shù)對象和STL算法上。每一個(gè)元素都有深刻的呈現(xiàn),包括其介紹、設(shè)計(jì)、運(yùn)用實(shí)例、細(xì)節(jié)解說、陷阱、意想不到的危險(xiǎn),以及相關(guān)類別和函數(shù)等。

          《Effective STL》 這是Scott Meyers的第三本C++專著,也是學(xué)習(xí)STL最權(quán)威的書籍。作者對書中的50個(gè)指導(dǎo)方針都作了詳盡的分析,并配以示例。通過這些規(guī)則,C++開發(fā)者可以最大限度地使用STL。

          《Generic programming and the STL(泛型編程與STL)》 本書闡述了泛型程序設(shè)計(jì)的核心理念:concepts(概念)、modeling(模型)和refinement(改善),并為你展示這些觀念如何導(dǎo)出STL的基礎(chǔ)概念:iterators(迭代器)、containers(容器)和function objects(函數(shù)對象)。按照本書所述,你可以把STL想象成一個(gè)由concepts組成的library,你將學(xué)習(xí)到STL正式結(jié)構(gòu)并理解其強(qiáng)大的優(yōu)勢。

          《Exceptional C++ style》 作者為Herb Sutter。本書同樣提出了40個(gè)C++風(fēng)格相關(guān)的問題,對一些至關(guān)重要的C++細(xì)節(jié)和相互關(guān)系提出了新的見解,為當(dāng)今的關(guān)鍵C++編程技術(shù)(如泛型編程、STL、異常安全等)提供了新的策略,幫助開發(fā)者在開銷與功能之間、優(yōu)雅與可維護(hù)性之間、靈活性與過分靈活之間尋找完美的平衡點(diǎn)。

          《C++ template》 這是一本關(guān)于C++模板的完整的參考手冊和教程,它強(qiáng)調(diào)模板的使用實(shí)踐,包含了現(xiàn)實(shí)世界中的例子。每個(gè)C++程序員都應(yīng)該好好讀一讀這本書。

          《Modern C++ design(現(xiàn)代C++設(shè)計(jì))》 作者Andrei Alexandrescu為C++程序員打開了一個(gè)新的局面。本書提供了一些針對軟件設(shè)計(jì)的前沿方法,如聯(lián)合設(shè)計(jì)模式、泛型編程,使程序員可以編寫有表現(xiàn)力的、靈活的、高度可重用的代碼。

          《Thinking in C++(C++編程思想)》 C++ 領(lǐng)域權(quán)威著作,介紹了C++實(shí)用的編程技術(shù)和最佳的實(shí)踐方法。

          以上是用一年時(shí)間應(yīng)對面試學(xué)習(xí)C++的建議。

          還有一個(gè)我最近發(fā)現(xiàn)的一個(gè)非常贊的視頻,是一個(gè)國外 C++ 游戲引擎開發(fā)工程師錄制的一套偏向 talk 類型的教程,比較通俗易懂和深入淺出。

          推薦一下:
          [中英字幕] C++_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili:https://www.bilibili.com/video/BV1Ay4y1i7Z6
          另外翁凱老師無論是 C、C++、Java 的視頻都講得非常深入淺出,值得學(xué)習(xí)。

          這是網(wǎng)易云課堂地址:

          面向?qū)ο蟪绦蛟O(shè)計(jì)-C++ - 網(wǎng)易云課堂:https://study.163.com/course/introduction/271005.htm

          作者:江東某人
          https://www.zhihu.com/question/400543720/answer/1275079446
          這個(gè)答案具體取決于方向,面試級別等等,但一個(gè)不爭的事實(shí)是

          C++是不可能精通的

          想起了自己學(xué)習(xí)C++的血淚史/(ㄒoㄒ)/~~

          1. 學(xué)習(xí)了基本輸入輸出,條件語句,循環(huán),函數(shù),內(nèi)心:這玩意也就比C多了函數(shù)重載、引用,還有個(gè)頂層const與底層const,分分鐘搞定
          2. 學(xué)習(xí)了基本的OO部分,內(nèi)心:emmm~~~,C++還是有兩把刷子的,不過還行還行,開闊了思維
          3. 學(xué)習(xí)了閉包,泛型,STL,內(nèi)心:好多要記的東西,好煩呀,感覺不行了
          4. 了解了模板元編程,多重繼承,虛繼承,多線程,Boost庫,內(nèi)心:

          以后見人只敢說用過C++。。。。(C++還有Qt,opencv,opengl,甚至微軟的.net等一堆東西

          所以Life is short, you need Python

          作者:匿名用戶
          https://www.zhihu.com/question/400543720/answer/1282930274
          “C++學(xué)到什么程度可以面試工作?”是一個(gè)毫無意義的問題。
          這個(gè)問題等價(jià)于“我錘子用到什么程度就能找到工作?”
          錘子可以修汽車,可以蓋樓房,可以做裝修,但“錘子用到什么程度”這個(gè)語句毫無指向性。
          錘子只是一個(gè)手段,而不是目的。
          所以一個(gè)人的C++實(shí)力得結(jié)合具體的工作內(nèi)容來談。
          目前市場上使用C++崗位不多,且要求都比其它崗位更高,所以題主如果有志于在C++相關(guān)的方向上發(fā)展,得做好在這個(gè)方向上長年累月去投入的準(zhǔn)備。

          C++有下面這些方向,下面我們一一介紹一下:

          1. Web Backend
          Web業(yè)務(wù)后臺目前國內(nèi)使用C++的公司不多,并且使用范圍在逐漸縮小,業(yè)務(wù)后臺開發(fā)需要的是快速的產(chǎn)品迭代和極高的開發(fā)效率,因此C++在web后臺開發(fā)所使用的份額已經(jīng)被JAVA和Go所吞噬的差不多了,強(qiáng)烈建議題主不要使用C++走這個(gè)Track,如果一定要走,那么要把OS, Networks等科班課程學(xué)精,熟讀《Linux系統(tǒng)編程手冊》《TCP/IP詳解123》。這個(gè)方向?qū)τ贑++本身的語法要求并不高,把C++ OOP和STL部分掌握熟練就行,Lambda以及Template了解即可。

          2. HPC(High Performance Computing)/AI Infrastructure/ML System

          HPC這個(gè)方向比較學(xué)術(shù)性,只會在BATTMD等大公司存在,小公司沒有,因此就業(yè)比較窄,就業(yè)人數(shù)也很少,競爭不那么激烈。目前HPC開發(fā)更多的是作為AI Infrastructure的一環(huán)存在,著重解決的是DL的算力問題。若從事相關(guān)工作,需要學(xué)習(xí)的東西非常非常多,個(gè)人認(rèn)為這個(gè)Track是整個(gè)CS工作中最累也最難的,需要學(xué)習(xí)的東西橫跨軟件,硬件,算法三個(gè)維度。首先得學(xué)習(xí)Computer Architecture等硬件課程,然后得閱讀Tensorflow/Pytorch等某個(gè)深度學(xué)習(xí)框架的C++源碼,詳細(xì)了解主流神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),最后還得熟悉CUDA編程,TVM/XLA以及編譯原理等相關(guān)內(nèi)容。這個(gè)方向?qū)τ贑++語法的要求也比較高,需要深入理解C++11/20, C++函數(shù)式編程以及C++ Template,而不只局限于C with Class以及STL。本人認(rèn)為這個(gè)方向很難走,若不是科班畢業(yè)并且有幾年的積累,不建議走這個(gè)方向。

          3. Database開發(fā)

          Database開發(fā),Database的學(xué)術(shù)性比較高,并且就業(yè)崗位比上面兩個(gè)更多,屬于C++中就業(yè)壓力相對較小的,BAT等大公司才有能力根據(jù)自己的業(yè)務(wù)定制Database,因此相關(guān)崗位集中在大公司。Database所需要的技能棧和1比較相似,但對于OS以及Computer Architecture知識的能力要求高于1,需要深入理解Disk架構(gòu),對于C++的語法能力要求也高于1。記住,只要和業(yè)務(wù)性能瓶頸處相關(guān)的開發(fā)崗,對于C++的語法要求都很高。

          4. Networks

          Networks這個(gè)方向我不是很了解,在此不做過多的描述,此方向的就業(yè)崗位主要集中于思科,華為,中興,諾基亞等公司,崗位較多,和3差不多。Computer Networks的相關(guān)的知識是核心,需要精讀《TCP/IP詳解》。

          5. OS/驅(qū)動(dòng)/Compiler

          這三個(gè)方向的就業(yè)崗位相當(dāng)少,國內(nèi)也只在微軟,華為等少數(shù)幾個(gè)公司存在,嚴(yán)格來說這些方向上對C的能力要求要更多一些,所以把C++中C的部分以及C++以外C的部分學(xué)好就行,對于CS的Compiler,OS,Architecture三大件要熟練掌握。

          6. Multimedia(圖形/視頻/語音處理)

          嚴(yán)格來說, Multimedia其實(shí)屬于算法方向,C++只是實(shí)現(xiàn)算法的一種手段而不是目的,走這個(gè)方向需要對相關(guān)音視頻圖像的處理算法有很透徹的理解,圖像的話熟讀《Digital Image Processing》,熟練使用FFmpeg/OpenCV等相關(guān)工具。這個(gè)方向?qū)τ贑++的語法能力要求不高,把C with class搞明白就OK了。

          7. 游戲引擎開發(fā)/游戲前后臺開發(fā)

          其實(shí)游戲引擎開發(fā)嚴(yán)格來說也是一個(gè)算法方向,從事這個(gè)方向數(shù)學(xué)要好,尤其是線性代數(shù),熟讀《Computer Graphics》,C++主要用來實(shí)現(xiàn)相關(guān)的圖形學(xué)算法。游戲前后臺開發(fā)答主沒有經(jīng)歷過,不便做過多的描述,但我可以告知的是此方向就業(yè)崗位較多,并且很長一段時(shí)間內(nèi)會非常穩(wěn)定,題主若有興趣,可自行搜索相關(guān)資料。

          以上7個(gè)相關(guān)的崗位就是目前市場上使用C++最多的7個(gè)崗位,當(dāng)然還有嵌入式,Windows軟件開發(fā)等稍冷門的方向。題主若想從事C++相關(guān)的工作,絕非把C++的語法搞明白這么簡單,而需要從技術(shù)上深刻理解C++上下游的環(huán)境依賴,也要結(jié)合具體業(yè)務(wù)在技術(shù)上有所思考。

          往期推薦




          專輯 | 趣味設(shè)計(jì)模式
          專輯 | 音視頻開發(fā)
          專輯 | C++ 進(jìn)階
          專輯 | 超硬核 Qt
          專輯 | 玩轉(zhuǎn) Linux
          專輯 | GitHub 開源推薦
          專輯 | 程序人生


          關(guān)注公眾「高效程序員」??,一起優(yōu)秀!

          回復(fù)“1024”,送你一份程序員大禮包。
          瀏覽 141
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  久久精品三级视频 | 天堂中文在线8 | 色五月综合网 | 亚洲无码视频在线观看高清 | 久热中文字幕无均码在线观看 |