自學C++編程,需要學到什麼樣的程度才可以工作?

大學畢業,沒什麼特長,性格不開放,所以工作找不到。在上學的時候學過C++的基礎知識,現在想自學C++編程,需要怎麼學?需要什麼樣的程度可以找的到工作?


打開知乎,發現收到了一些贊!話說女怕嫁錯郎,男怕入錯行,考慮到樓主的問題關乎未來的職業發展方向。中午在地鐵里用手機倉皇碼字,寥寥數言,現將之前的答案整理並詳細展開,希望能給樓主一些參考。

樓主的問題,我覺得可以拆分成三個問題:

  1. 要不要做一名coder。

  2. 選擇做一名coder,學習什麼語言合適。

  3. 學習一門語言,比如C++,要學到什麼程度才能找到工作。

要不要做一名coder?

是否適合做一名coder,確實和性格有關,外界對於計算機編程從業者的稱呼無外乎碼農、程序員等,對於我們的印象也是穿著拖鞋短褲、頭髮蓬亂、鬍子渣渣等,覺得我們性格內向、不善言辭,其實這些都是片面和膚淺的。

作為一名coder,需要能耐得住寂寞,而不是內向。現在的計算機行業早已不是兩千年的個人英雄主義時代:一個人寫一個軟體一夜成名。現在的一個項目或產品往往需要一個團隊通力合作去完成,PM(產品經理)、RD(Coder)、QA(測試)、OP(運維)之間會有反覆的溝通、交互甚至是對抗,一名RD需要和PM溝通產品和項目需求,了解PM的真實意圖,從一個RD的角度為產品把關;需要和QA溝通,建議QA哪些功能點需要重點測試,需要從哪些角度測試更合適;需要和OP溝通,告訴OP這個程序應該如何部署,對於機器性能的消耗有哪些,建議重點監控哪些地方。這些都需要RD良好的表達能力和溝通能力。

樓主如果不僅性格不開放,而且表達和溝通能力也欠缺的話,建議以後有意識的加強提高,而不是通過選擇coder這個行業去規避。那麼什麼樣的性格適合做一名coder呢,個人認為最好的答案是熱愛,能通過coding產生自我認同和成就感。如果你一接觸編程就愛的無可自拔,那麼恭喜你找到真愛。但是人們往往很容易知道自己很討厭什麼,卻很難知道自己很喜歡什麼,並且很多人在學習新知識的時候有畏難心理,只有達到一定高度和深度的時候,才能產生優越感和成就感,所以有必要通過一些性格特點來判斷自己適不適合做coder,個人列舉了以下幾點,歡迎大家補充:

要耐得住寂寞,能一天十幾個小時坐在電腦前;

要有良好的邏輯思維能力,否則會被很多BUG纏繞;

要有良好的學習能力,計算機技術更新速度很快,需要我們不斷的學習;

要有一個好身體,長期加班坐著,身體會每況愈下。

選擇做一名coder後,學習什麼語言合適?

如果樓主的C++功底比較薄弱,個人建議還是不要將C++作為入門語言,出於兩個原因考慮:

一是 C++的門檻相比於Java、C#等純面向對象的語言而言,要更難一些。難在語法和規則更複雜,也難在C++需要我們自己管理內存,需要對操作系統的內存分配和管理機制有一定的了解。

二是感覺咱們國內,尤其是互聯網行業對於C++的需求量沒那麼大。而且C++更傾向於在Linux服務端做後台的服務,這無疑是編程新手短時間不能出成績的地方,所以選擇C++可能面臨更大的就業壓力。

那麼其他語言呢?現在的互聯網行業很火,互聯網涉及到的主流語言是Java,可以做web開發,也可以做app開發,成熟的面向對象機制,豐富的庫資源,友好的學習曲線,就業需求量也很大。

選擇一門語言後,學到什麼程度才能找工作?

我們首先要區分兩個概念,找到工作和能工作是兩回事,社招的崗位一般要求應聘者進來就能工作,而校招的崗位一般要求應聘者有良好的基礎,經過初期的培訓之後能勝任簡單的工作,之後再一步步達到能勝任崗位的目標。樓主應該屬於後者,我就職於BAT,僅就BAT並且是我身邊的崗位對於校招的要求發表看法,拋開所有學歷、學位和學校等級,就編程語言而言,語言關一定要過,不是說要把C++ Prime通讀消化掉,但至少要能在理解業務邏輯的基礎上讀懂代碼,有少量不懂的地方也可以通過搜索或查閱工具書快速的掌握。

那是不是只要掌握好語言就夠了?答案是NO。

縱向來看,語言是外功,數據結構和演算法是內功,內外兼修才是正道,演算法導論的前幾章最好要掌握,包括基礎的演算法複雜度的概念、排序演算法、遞歸式、棧、隊列、鏈表、二叉樹、散列表等等,後續的高級數據結構和圖演算法可以按照興趣和工作需要去掌握,另外,演算法導論要求有概率論、線性代數的基礎知識,如果有微積分的基礎知識就更贊了。

橫向來看,編程語言依賴於操作系統,如果使用C/C++語言,做PC端的Windows研發可能需要掌握MFC、Windows API等,做服務端的Linux開發可能需要掌握Linux API、Shell等。編程語言處理的數據需要存儲,就需要掌握資料庫技術(SqlServer、Mysql、Oracle、甚至是Hadoop和Spark等),如果是網路產品,不可避免的會涉及到網路編程(socket、網路協議等),網路編程往往還伴隨著多線程甚至是多進程分散式的要求,這就需要我們掌握多線程、多進程和分散式編程的技術,上述這些在工作中可能會部分或者全部涉及到,但一定不會是在工作中涉及到的全部,慶幸的是對於初學者而言,不需要全部掌握才能開始工作,我建議最好都懂一些基礎,知道這些概念是怎麼回事、在什麼情況下適合用什麼技術,用到的時候再去深入掌握即可。

好了,第一次寫這麼多,答主大學畢業時還未曾系統的學過一門編程語言,工作五年來磕磕絆絆的學了很多,也走了不少彎路。做過PC端的Windows開發,也做過伺服器端的Linux開發,做過三維、搜索引擎、數據分析和數據挖掘,業餘時間還做了一些網站和簡單的APP,C/C++、Java、C#、Python、Php等都用過,甚至為了破解軟體還學過彙編和PE,答主不才,但也早已不糾結什麼編程語言、操作系統了,對於一家企業來說,技術只是其構成的一部分,有些甚至是很小的一部分。

希望我的回答能幫助樓主,希望樓主慎重擇業,多聽聽其他人的建議。如果選擇了作為一名Coder,也能少走我曾經走過的彎路。最後引用無間道里韓琛的話:路怎麼走,你自己選,提前祝你工作順利。


要到可以回答「我出一題你敢答應嗎」的程度


看懂《C++Primer》每一章的前10%差不多就可以BAT了


不要學這個,

第一,供應量很大

第二,市場需求不大,連BAT招了C++大部分也是讓他們轉Javascript這一條技術線。(可以多看阮一峰的網站,他也去阿里了,你看一看他學的技術的過程)

不要總是選擇困難模式

可以學這些: 如何評價 React Native Android? - 周紹華的回答

如何確保你的市場價值: 非 985/211 計算機本科生要有「多強大的能力」才可以不受學歷影響? - 匿名用戶的回答

另外,不要聽那個就職於BAT的王典的說法,他那個是高要求。你只是需要一個職業入門的機會罷了,不需要按BAT的要求。

更不要聽vczh和叛逆者這兩個微軟公司內部高手的說法,微軟因為公司性質,寫低層的需求很大,對C++要求很高, 其實現在就業需求,按語言來看,C++ : Java : Javascript 這三條技術線人員需求比例大約是 1:50:500這樣子,真的很少公司直接用C++來寫東西,開發效率太慢了。大部分公司,只不過利用微軟等等開發出來的平台,做點實際的應用!能怎麼快就怎麼來!

低要求是什麼樣子,月收入也有一萬五的,請參考一下這個例子:

數據結構學好了會對前端開發有什麼幫助? - 知乎用戶的回答

你要從一個老闆的角度來想問題, 肯定是以最快方式出產品,而且這個產品能跨平台,寫一個代碼,能在Android/IOS/網頁/微信平台/windows商店/Mac都能跑, 最好能熱升級,比如說IOS的,就不要個小改動就要麻煩蘋果公司審核。

那是什麼呢, 只有一個選擇,就Javascript,歷史上只花了八天開發出來的最爛的語言。但不要小看這個名詞,現在最熱門的技術名詞,市場招聘需求最大的,大部分都是這一條技術線上的。

Paypal 已經成功從 Java 遷移到 Node.js 了。

那麼學習 javascript 從何下手呢?

第一,買書、看書、Coding!:

http://www.amazon.cn/dp/B00RBEIDQG/

http://www.amazon.cn/dp/B012R5A30C/

http://www.amazon.cn/dp/B00ZIZ9ZN0/

http://www.amazon.cn/dp/B00XJ2AULK/

http://www.amazon.cn/dp/B00N7YKXP8/

http://www.amazon.cn/dp/B0089TDFNS/

http://www.amazon.cn/dp/B00X65PE3E/

http://www.amazon.cn/dp/B00EEQ2GPS/

http://www.amazon.cn/dp/B011LPUB4M/

http://www.amazon.cn/dp/B00WUA5OL8/ (這本很爛,建議看官網文檔)

Gulp開發教程(翻譯)

Parse

A JavaScript library for building user interfaces

第二,找工作, 找工作還是要面試演算法的,所以直接參考「如何確保你的市場價值」。(找工作需要的技能,和在工作中應用的技能, 有所區別)

第三, 學會了 Javascript 這個棧後, 能找到的工作類別,可以參考一下:

WEB全棧工程師招聘_WEB全棧工程師招聘信息


以找工作為目標還是別自學了,老老實實報個培訓班學些實用技術更好,不要因為自己本科畢業就看不起培訓班。

像是C++這玩意,俺們計算機專業的也沒幾個敢說自己懂,自學99%要跑偏。一般大學期間學的那些東西不叫C++基礎,只是用C++講的編程基礎罷了。

想學的話從以下列表裡選一個吧:

html css js:搞前端去

php:雖然語言很噁心奈何市場需求量大啊

java or ObjC:學的不是語言,是Android/iOS開發

別聽他們說什麼沉下心來學技術,那是本科期間該乾的事,既然畢業了還是儘早找個工作最重要。


作為今年剛找完工作的計算機小碩一枚,我想我還是可以根據自己的所聞所感給你一些建議。

首先根據題主的情況,我不建議題主以C++作為入門語言,原因有2:

一是入門門檻很好,許多c++的應聘者都是從剛上大學甚至沒上大學前就從c語言入門然後過度過來的,這期間是需要很多時間的沉澱積累。

二則是現在C++市場需求太少,C++往往作為linux後台伺服器開發語言,這部分佔有率太少,就BAT而言,只有T需求稍多,至於其他二線互聯網公司,更是少之又少。

所以還是建議題主選擇門檻低需求高的語言來學習,比如java,C#,或者各類現在很火的腳本語言如python,php等,或者選擇前端javascript及其相關框架插件等。

不過話說回來,在線大學生如果時間充裕想做一名程序猿的話,還是建議學好C++,它可以為你將來入門任何語言提供很棒的助力!


別聽他們瞎扯。自己想學c++,就努力學,其實只要你能夠融會貫通就可以了。這只是一門編程語言,如果這個你可以熟練使用寫些小東西了,那就可以了,以後找工作公司讓你做什麼你就做什麼,當年我是直接轉的另外一門語言,重新學一門語言也就花了一周時間。其實就是因為c++熟練,基礎底子好。你現在要做的其實是打好基礎,並不需要什麼流弊的經歷。公司都知道你是大學生,知道你不會有項目經歷,更多關注的是你的基礎。


當初c++ prime整本啃完 現在毛都不記得了…語言這東西長時間不用都忘記了


誠實地自稱 C++ 入了門的人,通常同時入門了至少(但不僅限於)以下計算機方面的書籍或知識:

1. Unix 系統設計

2. 計算機組成和原理(關於內存/CPU,緩存系統,等等)

3. 彙編語言

4. 編譯原理

5. 數據結構

所以如果以上方面的書籍,你可以輕鬆地看懂 三分之一或者以上,剩下的內容有信心通過一定的時間可以搞明白的話。至少找 C++ 的工作可以一試。


哪有那麼難,有點基礎,找個工作慢慢補吧,c++語法其實很難,以前一直被告知3個月熟悉語法,吹牛逼吧,你是不吃飯不睡覺能掌握,我就佩服了。語法也不是說會就會的,只能說能用,用的時候有不會的就查,只能這樣,堅持一年,語法真的差不多沒有問題了。當然了,學語法也不是只學語法,用的同時本身就在不斷的使用一些方法,甚至設計模式(可能你用了都不知道),也可能接受一些網路傳輸,你就可以看看socket通信,有興趣了可以詳細看看這塊,先解用法(短時間內也不可能太深入)。當然了,你寫代碼的時候不斷遇到bug,使用gdb的同時也不斷學習調試了(會基本的就行),makefile也是照這葫蘆畫瓢。一段時間後你對c++編程就有一定了解了,也就是說,什麼功能你可以實現,只是寫出來的太丑(風格問題),太多bug(邏輯),太讓人看不懂(面向對象思想),太沒有效率(演算法),總之寫了之後自己都覺得混亂,東拼西湊。沒關係,慢慢來吧,看書+寫代碼,這時候進步會很快的。如果只是學生,沒有工作的話,卧槽,看看c++面試寶典,都看懂了去找個工作。


實名反對部分答案。

做程序最基礎的演算法,數據結構必須補起來。

還有mysql

然後才是cpp基礎。。。

別聽啥大學畢業鑽研技術沒用。如果你決心走這條路,大學畢業還是很值得你gap半年補基礎的。

cpp qt GUI編程,或者是轉cocosd2x都可以。

但是

如果你報了培訓班,速成式的學習,請你儘快放棄。

因為計算機基礎知識,程序設計思想,函數式編程等等,到設計模式。。這些東西都不會在你的腦子裡形成一個體系。。。

所以,沒有體系做編程。。遲早要轉行。

如果你下了決心,去看計算機基礎,至少,數據結構和演算法,編譯原理,底層相關的都要學習一遍。

然後去找cpp相關職位要求。。

有的要求熟悉linux,有的要求qt GUI等等。。。

你再系統性地學習。


現在的編程語言是越來越多了,每種語言的流行都是因為在某些領域有很強的優勢。c++的使用範圍已經大大縮減。所以先要明白你打算在什麼領域下有所發展,去有針對性的進行學習。


懂業務語言能力再差也能混個不錯的工作


我就知道有些人會說哪個怎麼怎麼賺錢 就學那個。 沉下心來學好技術真的很重要

不用幾年 跳槽漲個十K八K的都只是一個考慮的前提……我降薪跳都乾的出來呢!!!! 我跑題了 只是提醒題主別受這類回答的干擾


我不知道。

雖然是科班出身,但是,其實學課程的時候真心荒廢了時光,學渣就是這樣啊。斜眼笑。。。

我現在算是自學吧。

看完了c++ primer,看了點effective c++,後者是真神書,想找工作覺得看到這c++相關問題應該卡不住你了

然後自己也寫了大概有小几千行代碼。

STL也用起來了,模板也用起來了。代碼自己感覺寫的溜溜,出了問題debug也是分分鐘的事情。

但是到此就是瓶頸了。

我接觸不到上十萬行代碼的項目。

也不知道做一個工程項目對c++的要求是啥。

面了幾個實習都是基礎的問題慫了,比如圖形學知識(倒在了線性代數),數據結構知識(多叉樹就跪了,圖反而記得)等等。

所以說

基礎最重要。

昨天開始學習python,寫了點東西,語法已經沒問題,就是相關的庫和數據包解析要慢慢來,下面準備學習js,覺得自己萌萌噠

別問學到什麼程度了,開始學,然後愛上它,愛上coding就好了

哈哈哈

補充一下,目前正在看演算法相關,刷leet code,下手藍色大神推薦的os實驗課程,學習計算理論,然後計算機網路目前擱置中。都是讀論文寫代碼空餘時間中做的,進度比較慢

對了,線性代數兩天刷了一遍就都記得了,目前在看數值計算。嘿嘿


如果是大一,C/C++很值得學習,基礎很重要。

如果是大二,建議學習java。

如果大三,大四,那就搜一下招聘信息,流行什麼學什麼。能給企業創造價值,找到工作更重要。

至於個人技術偏好,可以在工作相對穩定後再考慮深入學習。


windows系統目錄有很多小程序 比如ping telnet ftp 之類的 這些凡是.exe的米都自己寫一遍吧 也不多 就幾萬個


編程太籠統,具體要看以後從事哪一方面的編程。


看你要往哪方面發展…


我建議你先開始學校PS。AI。cr等然後只要能熟練點做圖就可以去找個小工作室做下了。然後再學php HTML做前端吧。這些也算是編程只是沒那麼難。到自己學習狀態有一定提升了,可以去學學C或者JAVA。無非是個思維鍛煉。


推薦閱讀:

畢業找工作好迷茫?
北京的航天院所的待遇和碩士生的發展,具體是如何地?
求職,畢業的人很迷茫啊?
如何看待「董明珠再斥同行挖角:國家要求創新,不是要你偷人」?
北漂前應該做什麼準備?

TAG:求職 | 編程 | C | 編程入門 |