1. 程式人生 > >【轉】計算機專業本科研發崗的畢業要求

【轉】計算機專業本科研發崗的畢業要求

  1. 演算法題,各大公司筆試面試基本都考這個,別的不說,《劍指offer》所有題目背下來,leetcode刷個四五百題起碼的吧。搞過ACM也可以,反正刷個四五百題是必須的。

  2. 資料結構,不說要徹底給面試官手推各種資料結構的均攤複雜度,也不要求你手寫紅黑樹,至少AVL 雜湊表 堆這些簡單的資料結構得自己實現過;連結串列、線性表必須熟悉到不能再熟悉,比如vector為什麼要用加倍擴容而不是每次增加一個固定的擴容容量;BBST各種都能扯一下,達到這個程度就差不多了。

  3. 計算機組成原理, 至少《深入理解計算機系統》得過一遍吧?配套實驗也得做一下吧?

  4. 計算機網路,這個最簡單了,隨便找本書,把應用層、傳輸層看完就行,我看的《計算機網路 自頂向下方法》。關鍵在於搞懂TCP協議為什麼要這麼設計,為什麼是三次握手,四次揮手?書中的其他rdt模型為什麼不實用? 我面快手的時候還問了wireshark抓包遇到三次快速重傳會怎麼樣,不過這本書的配套實驗也有抓包內容,老老實實跟著做就是。

  5. 作業系統,這個部分我還在學習,採用的是跟著MIT 6.828做的方法。知乎上陳碩有一個關於學習作業系統非常好的回答,大意是要抓住重要部分,不要沉迷於技術細節,我覺得很對。具體的,記憶體分配、排程、多執行緒 這幾個點,都得深入理解一下吧。如果不想具體去研究作業系統的實現,那麼怎麼用作業系統提供的介面這個是必須的吧,APUE瞭解一下?

  6. 資料庫:sql得會寫吧,幾個正規化有沒有正式運用過? 在做專案的時候,資料應該如何組織,才能夠使得每次查詢的開銷最小? 如果想深入,資料庫的實現也是很好的一個方向。

  7. 編譯原理:深入研究編譯器,去鑽研llvm當然很難,但是作為一個普通開發人員,編譯器的各種選項,不同的優化級別具體優化了哪些,這些總得了解一些。最關鍵的,動態連結,靜態連結,標頭檔案,gcc的 include選項、link選項、define選項(-I, -L, -D)怎麼用,makefile/cmake怎麼寫,clang icc gcc到底真的用起來有什麼區別,這些坑作為一個開發人員遲早會遇到,越早遇到,以後碰到坑的時候就能越輕鬆一些。

  8. 程式語言:總得擅長一門語言吧?C++的話,那幾本書(Effective三部曲,物件模型)看完了嗎? Java的話,JVM虛擬機器理解的怎麼樣了?大廠就喜歡問這些,不好好準備那就掛嘍。

  9. 具體崗位需求:別的崗位不瞭解,後端開發還需要熟悉網路程式設計,UNP得好好看。

  10. 專案:說句實話,學校裡接觸的專案能有多高大上?如果只是用幾個框架的那種,我建議不要寫到簡歷上,不如去github上參與開源專案,GSOC瞭解一下?當然如果你的實驗室很厲害,跟導師做的專案很牛逼另說。還有一條路就是上面的5,6,7,任何一個花上半年時間去實現一個簡陋的原型(比如實現一個簡單的核心),都是非常好的簡歷加分項。事實上,國外名校這些課的最後的project都是讓你實現一個原型。

  11. 英語: 這個面試一般不會涉及到(除非是英文面試),但是我仍然認為英語是很重要的能力。具體的來說,就是“遇到一個撒比問題不去打擾同事自己谷歌或者bing從stackoverflow找到回答並且獨立解決” 或者“老闆讓我去接觸一個沒搞過的東西我硬著頭皮點開文件看了兩天兩頁終於能解決問題” 的能力。

  12. 資訊採集能力:對於學校不太好(非C9)的同學,這個能力其實是最關鍵的。最優秀的同齡人在學習些什麼?我想去的公司想招聘什麼樣的人才?面試會問什麼?春招秋招到底是什麼,如何投遞?實習真的很重要嗎? 這些問題,你去百度,去知乎搜尋,去牛客網搜尋,其實都有回答。為什麼說這個能力重要?舉個例子,BAT熱門崗位留給秋招的坑寥寥無幾,因為坑都被實習轉正的同學佔了,如果你之前不知道春招,沒有去實習,能去BAT熱門崗位的機會自然就很渺茫了。又比如,秋招各家公司筆試難度都明顯高於面試難度,原因一方面是篩人,另一方面是筆試作弊現象很嚴重。如果你知道春招、秋招提前批是不用筆試的,是不是你的機會又多了幾分?

  13. 社交能力:幾個關鍵字:頭條白金碼 組內直推 自己去牛客搜尋吧。

 

以上是對本科研發崗的要求。演算法崗和研究生的要求我不太清楚,想必只會更高。

 

當然,我上面說的這些要求,對於絕大多數同學來說都非常遙不可及。但是,如果你在一個很普通的高校,不拿最高的標準要求自己,那你的結局就是和你的那些學長學姐一樣,去個普普通通的公司,過普普通通的一生。取法乎上,得乎其中,取法乎中,得乎其下。

請允許我在這裡引用《上海交通大學學生生存手冊》中的一段話:

相比寶貴的青春,我們在上學期間所需要的學費和生活開銷幾乎可以忽略不計。我們真正投下的有價值的籌碼,是時間。面對著足以改變你人生軌跡的黃金時間,你是否感到了它的沉重?你又是否想過要如何計劃這筆鉅額投資?
如果你是一名乖孩子,每天從早晨開始好好上課,好好做作業,好好預習、複習,直到熄燈時間好好睡覺,過著這種積極健康,平穩中庸的生活,但是缺乏有效自我支配的生活(如果按照學校的規劃,你會發現你可以自由支配的業餘時間少得可憐)。那麼,你這樣退守下去,無異於把自己的青春放在保險箱裡讓他隨著時間而凋謝。我們必須牢記這樣的黃金規則:

平庸的生活方式是麻醉藥。他只會束縛你,讓你沒有作為,甚至沒有出息地度過大學的四年。