怎樣纔算一個計算機知識體系完整的畢業生?

爲什麼突然想寫這個話題呢?

最近有不少新關注的讀者,在後臺問:大學學 Java 和 C++ 哪個好找工作,學前端好還是後端好,該學 Vue 還是 React。。。

彷彿看到了自己當年的模樣,所以覺得有必要單獨寫一篇文章,單純以一個計算機應屆畢業生的身份聊聊,我認爲大學四年,計算機科班學生應該學些什麼,哪些纔是重點。

同樣大學四年,爲什麼有些同學畢業就能成爲大廠 Offer 收割機,各種 SP、SSP 拿到手軟,有的同學明明在學校寫了好多網站,項目經歷滿滿,經歷春秋招,卻找到一份工作都很難。

不能說後者沒認真學習,或許是用力的方向不對。

話不多說,直接進正題吧。

人類的知識邊界一直在不斷的擴張,俗話說學無止境,這放在計算機領域也同樣適用,計算機本身是一個人造科學,不屬於自然科學。

每年,甚至每個月都不斷有新的編程框架推出,學到頭禿你也學不完,也沒有必要去挨個學。

並且你會發現,很多一二線大廠內部用的東西基本都是自己搞一套的,比如服務發現、RPC、KV、DB、消息隊列、日誌、監控等等。

所以一般這些大廠招聘的時候基本不會因沒學過某種框架而掛你,反正很多東西都是要進來重新學的。他們會更加關注你的基礎知識、解決問題的經驗以及聰明度這種更加通用的能力上。反而是一些小公司,可能會要求你必須會 Spring、Vue、Redis… 這些框架或者組件。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
上面分別是騰訊、阿里、某外包公司的招聘 JD(job description),顯然,騰訊阿里看中的是紮實的編程基本功和快速學習能力,這意味着有培養潛力。

而外包公司就要求你會 xx 數據庫、Spring 之類。不去評價哪個好,但是如果你想去 BAT,那是不是至少對照着它們的 JD 來提高自己的能力,不失爲一種捷徑。

在這裏,我粗淺的把計算機編程領域的知識分爲三個部分:

基礎知識
特定領域知識
框架和開發技能
基礎知識是指不管從事任何方向的軟件工程師都應該掌握的,比如數據結構、算法、操作系統。

特定領域知識就是你從事某個細分方向時需要掌握的知識,比如做遊戲引擎的需要掌握圖形學;做前端的需要掌握瀏覽器渲染原理、前端三大件;算法工程師需要更多的數學知識。

畢竟計算機各種門類挺多的,需要選個細分方向專研下去,什麼都學只會什麼都不精(大佬除外啦。

想說的太多說點總結吧。千萬不要大一、大二一上來就扎進 Java Web、Python 爬蟲這種東西,這些可以學,但不是重點。

我也曾深刻體會過留學壓力。回想剛踏上他國之時,操着不太熟練的外文,卻要努力聽懂着帶口音的教授俚語發音,學習着晦澀難懂的CS,Math,Economic。獨自漂泊海外,深夜趕due的苦楚卻無人能助,多希望有個學長能點撥相助。
所以畢業後我成立了三洋公司,三洋工作室團隊由最初的三人,經過9年發展,已經形成了4000人的導師團隊規模。導師團隊由FLAG工程師、在美高GPA碩博士、國內985已發SCI論文的碩博、大陸阿里騰訊等頭部互聯網工程師組成。

編程真的是一門需要靠興趣和一點點天賦才能學好的技能。初學者難免對編程思路有困惑無從下手。我最初學習之時,發現讀大牛寫的代碼都會受益頗多,這也是爲什麼即使在職的工程師,公司也推薦他們在github讀開源系統的代碼。我們的服務也是給大家提供一個讀代碼的平臺,專業的導師爲您的課業寫了優質的代碼,您一定要認真去看,最好能動手調試,這樣體會更深。

如果您已經能基本完成課業了,也可以來這裏讓導師寫出更優質的代碼,針對自己的作品查缺補漏,一份代碼一個思路,多一個思路就更優秀一些, 衝擊更高的GPA ➕Danny_9922 我希望團隊提供的服務,能真真切切教會大家coding,提高GPA。