1. 程式人生 > >byvoid阿里第二彈:不是技術牛人,如何拿到國內IT巨頭的Offer

byvoid阿里第二彈:不是技術牛人,如何拿到國內IT巨頭的Offer

不久前,byvoid面阿里星計劃的面試結果截圖洩漏,引起無數IT屌絲的羨慕敬仰。看看這些牛人,NOI金牌,開源社群名人,三年級開始寫Basic...在跪拜之餘我們不禁要想,和這些牛人比,作為絕大部分技術屌絲的同學們,是否真的與國內IT巨頭遙不可及呢?
當你開啟這個帖子的時候,我已經預設你是此文的目標讀者,也就是想進入國內一流網際網路企業的非牛人應屆生。
你不需要拿NOI的獎,無需是開源社群名人,也用不著發過牛逼的SCI論文。(沒錯,筆者就是這樣的技術屌絲)
請記住,校園招聘,應聘的絕大部分人都只是才出象牙塔的毛頭小子。企業需要的是你們的潛力與激情。牛人總是鳳毛麟角的。
程式設計師筆試面試的經驗貼、經驗書不計其數。本文不會教你如何具體的解題,但是會告訴你,你距離你的夢想究竟有多遠,以及如何去縮短這個距離。


筆者僅僅以自己的親身經驗為依據,將國內IT巨頭按Offer到手難度降序排列,大致分為如下3個梯隊:
T1:百度,阿里,騰訊,...
T2:網易,迅雷,完美時空,360,金山,...
T3:華為,中興,聯發科,...
Tx:壟斷類IT國企。如中國移動,...

T1主要是BAT三巨頭。他們對學生的技術能力與綜合素質都要求較高。他們尤其喜歡尋找牛人。因此你必須有紮實的基礎的同時還要有自己的技術個性和特點,讓他們欣賞你。這些公司無論是實力還是待遇都是一流的。但要注意這類公司太大,專案組太多,競爭也很激烈,因此要注意認真考慮你想去,而且對你而言有優勢的專案組。
T2都是其所在領域的領軍企業。待遇會比T1稍低。他們需要基礎紮實的學生,如果你的專案或者技術方向符合他們所在的領域會很有優勢。(如遊戲領域偏愛圖形學,安全領域偏向安全方向)

T3對學生的出生、資質最為看重(雙211,四六級),甚至對性格有較為挑剔的考察(華為的性格測試反而刷掉很多技術較牛但是性格較怪癖的學生),專業考察的很基礎,但考察面較廣。
Tx之所以給了個x,是因為他們和其他的企業無法比較。因為這類企業筆試考行測+專業基礎。面試考察綜合素質、表達能力,尤其看重你的非技術方面的能力。因此不做本文的重點討論。

無堅不摧——完整專案“當他說他是OpenCC的作者的那一刻,哪個面試官不被秒殺。”
當然你不需要NB到這個程度。如果你能對面試官說:“我讀書期間做的專案有x萬行程式碼。Google關鍵字xxx可搜到該專案的演示視訊”,就足夠了。
程式設計師的所有技術能力都能在一個完整的專案中得到淋漓盡致的體現,因此勝過千言萬語的自我推銷。所謂的完整專案應該滿足以下條件:

1、完整性。具有一定的功能,或者解決了某個問題,具有一定意義。
2、難度。  使用或者研究了一些較新技術,或者有一定價值的技術含量或研究內容。
3、工作量。是一個需要澆築一定心血的產出品。
因此,當你決心把一個專案寫入你的簡歷中,你就一定要能回答出面試官的如下問題:
1、你負責了哪一塊?
這個問題是想知道這個專案裡究竟有哪些程式碼是你寫的,尤其是多人合作的專案。你必須強調你所做的工作。
問題就出來了。很多時候我們參與的專案,他的架構、核心技術你並不熟悉,而僅僅是寫了部分邏輯程式碼,那怎麼辦呢?
解決辦法是,花時間去了解專案的核心,對專案的整體有清晰的認識,至少要達到能夠表述的很清楚的程度(簡單的說就是能吹的很有說服力。回想你答辯的情形)。
如果你做的那一塊確實微不足道,而且你也無法表述專案全域性,那就放棄提及這個專案吧,否則只能讓面試官越看你越覺得銼。
2、你用到了哪些技術?
這是最好發揮的一個問題。你可以介紹專案用到的每個開源庫,也可以介紹你用到的原始碼管理工具(如SVN、GitHub),除錯工具(如WinDbg)甚至專案管理工具(UML工具、VS Project等)。總之,這是一個很好表達你的專案綜合能力的機會。
如果上面的都不出彩,那嘗試從你的專案架構、設計模式、介面設計等方面入手。總之要站在一個較高的角度,空談專案的業務需求和邏輯意義不大(當然,充滿創意的專案除外)
3、你遇到的最大問題是什麼?如何解決的?
這個問題是最重要的,也是最具有回答技巧的問題。你必須說出一個聽起來確實很難解決,但你確實又解決(或者避開)的問題。
如果你實在沒有頭緒,或者你覺得專案確實太簡單,沒發現困難問題,不妨從這些方面思考:
有網路功能的專案,考慮網路傳輸效率和網路同步等問題;
有多執行緒、多程序的專案,考慮他們之間的同步/互斥、負載、排程問題;
需要處理大資料的專案,考慮資料預處理、資料排程等問題;
如果這個專案出了論文,那麼嘗試描述論文解決的問題;
你解決問題的渠道,如MSDN、CSDN、開源社群的論壇、國外技術論壇、文件手冊等。
面試官想要聽到的,是你發現問題、分析問題、尋找解決方案、最終解決問題的思路與方法。細節並不重要,因為他也未必能完全弄懂每個技術細節。
總之,一個完整的專案能讓你充分的表達你的技術能力。在專案這一塊上,你需要下足功夫。
如果很不幸你沒有,那麼請往下看。