是技術牛人,如何拿到國內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可搜到該項目的演示視頻」,就足夠了。
程序員的全部技術能力都能在一個完整的項目中獲得淋漓盡致的體現,所以賽過千言萬語的自我推銷。所謂的完整項目應該知足如下條件:
一、 完整性。具備必定的功能,或者解決了某個問題,具備必定意義。
二、 難度。  使用或者研究了一些較新技術,或者有必定價值的技術含量或研究內容。
三、 工做量。是一個須要澆築必定心血的產出品。

所以,當你決心把一個項目寫入你的簡歷中,你就必定要能回答出面試官的以下問題:編程

一、你負責了哪一塊?
這個問題是想知道這個項目裏究竟有哪些代碼是你寫的,尤爲是多人合做的項目。你必須強調你所作的工做。
問題就出來了。不少時候咱們參與的項目,他的架構、核心技術你並不熟悉,而僅僅是寫了部分邏輯代碼,那怎麼辦呢?
解決辦法是,花時間去了解項目的核心,對項目的總體有清晰的認識,至少要達到可以表述的很清楚的程度(簡單的說就是能吹的頗有說服力。回想你答辯的情形)。
若是你作的那一塊確實微不足道,並且你也沒法表述項目全局,那就放棄說起這個項目吧,不然只能讓面試官越看你越以爲銼。
二、你用到了哪些技術?
這是最好發揮的一個問題。你能夠介紹項目用到的每一個開源庫,也能夠介紹你用到的源代碼管理工具(如SVN、GitHub),調試工具(如WinDbg)甚至項目管理工具(UML工具、VS Project等)。總之,這是一個很好表達你的項目綜合能力的機會。
若是上面的都不出彩,那嘗試從你的項目架構、設計模式、接口設計等方面入手。總之要站在一個較高的角度,空談項目的業務需求和邏輯意義不大(固然,充滿創意的項目除外)
三、你遇到的最大問題是什麼?如何解決的?
這個問題是最重要的,也是最具備回答技巧的問題。你必須說出一個聽起來確實很難解決,但你確實又解決(或者避開)的問題。
若是你實在沒有頭緒,或者你以爲項目確實太簡單,沒發現困難問題,不妨從這些方面思考:
有網絡功能的項目,考慮網絡傳輸效率和網絡同步等問題;
有多線程、多進程的項目,考慮他們之間的同步/互斥、負載、調度問題;
須要處理大數據的項目,考慮數據預處理、數據調度等問題;

若是這個項目出了論文,那麼嘗試描述論文解決的問題;設計模式

你解決問題的渠道,如MSDN、CSDN、開源社區的論壇、國外技術論壇、文檔手冊等。數組

面試官想要聽到的,是你發現問題、分析問題、尋找解決方案、最終解決問題的思路與方法。細節並不重要,由於他也未必能徹底弄懂每一個技術細節。安全

總之,一個完整的項目能讓你充分的表達你的技術能力。在項目這一塊上,你須要下足功夫。服務器

若是很不幸你沒有,那麼請往下看。網絡

 

深厚內功——堅實基礎

通常第一輪技術面都是來考察你最基本的技術功底。

招聘季節,隨處可見抱着厚厚的《程序員面試寶典》啃的學生。偶爾也能看見《編程之美》《劍指Offer》的神書。這些經驗書確實有用。可是要想全面的掌握筆試面試的基礎考點,仍是須要完整的複習。

其實,筆試面試對計算機基礎的考察是萬變不離其宗的。其考點無非分爲:

語言語法(以C/C++爲例)。
指針(數組),函數指針,操做符運算順序,const(常指針與指向常量指針),static四大用法,字符串(字符數組),字節對齊(sizeof),位運算。秒殺書籍:《C++ Primer》
面向對象
構造與析構順序、多態、重載、覆蓋、C++對象模型等。秒殺書籍:《深刻理解C++對象模型》。
數據結構
棧,隊列,鏈表(雙向、循環),樹,堆,哈希表。
基本算法
排序(最重要的是快速排序)、查找、圖算法、貪心算法、動態規劃。秒殺書籍:《算法導論》。
設計模式
考察最多的就是單例模式。只由於他實在是太常見又太簡單了。秒殺書籍:《設計模式》,《重構》。
數據庫
主要是SQL語句與存儲過程。

操做系統

進程與線程、互斥與同步、死鎖、進程間通訊,頁表,虛存等。秒殺書籍:《Windows核心編程》,《Unix核心編程》。

計算機網絡

ISO七層架構,TCP,UDP,IP地址等。

英語

有些公司喜歡出一些用英文描述的問題,或者英文翻譯題。看懂IT領域內的英文並不難,若是你平時使用MSDN、Google、StackOverFlow的話根本不是問題。

 

若是你還有充分的時間,建議認真看上面推薦的秒殺書籍。若是時間不夠,就有針對性的去掌握這些考點。
不得不吐槽的是,不少技術不錯的朋友,有着很好的項目,反而掛在了筆試的基礎知識考察上面。所以不要小看這些考點。該背的仍是要死背的。

筆試或者面試若是讓你在紙上寫程序,會有2種狀況:

一、寫一個函數或算法。

不要由於題目簡單就想在最短的時間寫出來。請必定要注意,對全部參數作邊界檢測和有效檢測。這纔是考察的重點!

若是一個算法具體實現你記不清了,就寫僞代碼,在每行代碼後加上詳細註釋。若是是面試,寫完之後跟面試官解釋說具體的代碼你忘了,可是你記得算法思想,所以用了僞代碼。

若是具體思想也忘了,就嘗試用本身的思路解答問題。總之,儘可能別交白卷。

二、設計一個軟件或系統。

這種狀況不要求你寫詳細代碼。你須要在程序結構、框架、設計模式或者系統架構等方面進行設計。

這種框架性的東西最好先打草稿,想好了再從新畫一遍,把每一個模塊的功能,模塊之間的關係、各個模塊的功能接口畫出來,若是是面試,寫完之後給面試官詳細解釋。

這裏強調一點,是否懂得架構設計,是鑑別代碼菜鳥和熟手的重要指標。T級越高的公司,越偏向於考察架構層級的知識。好比百度筆試的最後一題常常是要求設計一個分佈式服務器系統。

 

錦上添花——無限潛力

一般技術一面是面基礎,二面更多的是雙方的進一步瞭解。如技術方向,技術潛力等。
若是二面面試官不問你技術問題,那麼你必定要積極主動的與他溝通,並表達你的意願。嘗試如下幾個方向:
一、表達你的技術潛力與熱情。
面試官可能會問你一些和技術看上去沒有任何關係的問題,好比問你最近在看什麼書,學習之餘喜歡作什麼,常去哪些網站之類的。
若是你說最近在看《誅仙》,平時喜歡玩LOL,你就是在把本身往懸崖上推。實際上面試官但願聽到的回答以下:
「我最近在看《C++ Primer第5版》,由於我在項目中用的C++11的特性愈來愈多了...」 
「我業餘時間喜歡看看TED,上面總有不少讓我激動的新技術出現...」
「前段時間比較閒的時候,和朋友參加了xxx組織的開發者大會...」
「虎嗅和獵雲是我獲取IT信息的常去地方...」

回答如此平凡的問題卻能體現你的閃光點。你是技術人員,請記住,告訴面試官你時刻對技術保持着激情,時刻關心的IT動態,比你告訴他你是學生會某幹部有用的多。(固然非技術人員,或者國企的面試除外!)

可是,必定要如實回答。面試官會針對你的回答進行緊逼追問。若是正好是他熟知的範疇,而你只是接觸過而沒有認真學習,就會陷入很尷尬的境地。

因此在回答這些問題的時候不用過於急着回答,不妨先想想,要有能預測到面試官針對你的回答會問什麼樣的問題的能力。

就像上面的例子,面試官問你最近看的書,你未必要選擇最近看的一本書,而是應該選擇一本你吃的比較透的,最好仍是面試官也會感興趣的書,這樣接下來的交流就能駕輕就熟。

總之,平時的積累纔是王道。

二、表達你的技術愛好。
進入正確公司的錯誤崗位,至關於考上了正確學校的錯誤專業。
因此請必定要記住,你的最終目的不是要進入該公司,而是要進入該公司你最想去的部門乃至項目組。

因此,試探得知面試官來自哪一個項目組也很關鍵,由於面試官可能跟你想去的項目組毫無關係。技術方向的不對口的面試官面試你,對你是不利的。

這個時候你要清楚的表達出你的技術方向,並注意考慮你想去的項目組收你的可能性。若是發現該組招的人少,或者加入難度大,你須要考慮是否表現出來你有一樣的熱情加入其餘項目組。

不服從分配可能致使你一無所得。你以前面試的表現越優秀,在這一步可以選擇的餘地就越大。

三、態度和情商。

若是你面試次數多了,拿的Offer多了,一般到了最後一面,有多大的但願能拿到Offer,你內心應該有所感受。

若是感受很差,最後一面你須要更努力表達你的優點。最後一面打動面試官的可能每每是你的真誠和熱情。

當面試官問你有多少Offer,不要害怕回答。Offer是企業對你能力的證實。有Offer的學生更容易被青睞。一般若是你有了該公司最大競爭對手的Offer,你能夠嘗試追求更好的崗位和待遇。但切忌用這個來漫天要價,除非你牛到了他們非要你不可的程度。

T3,Tx類的企業可能會問你一些很奇葩的問題。好比A公司問你他的競爭對手B公司怎麼樣。

不少計算機專業的學生思惟過於死板,說了大實話,好比」B公司是最大的xxx企業「,因而死的很完全。
你能夠說」A公司的優點在與xxx,而B公司的優點在於xxx。不過在我看來,我更欣賞A公司的xxx,由於xxx「
這類企業就是這樣。他們的面試和T1,T2企業的面試差異很大,你要學會拈輕怕重,這不是謊話,而是策略。


寫在最後


只要你資質不差,有針對性的進行努力,拿下國內IT巨頭的Offer並不難。
最後,請記住,拿下Offer,你的技術生涯僅僅是進入了下一輪新的迭代。
技術之路最公平也最殘酷的緣由是:沒有捷徑,須要日積月累的積累,以及對技術持久的熱情。
相關文章
相關標籤/搜索