1. 程式人生 > >【校園招聘】:IT校招的準備及注意事項

【校園招聘】:IT校招的準備及注意事項

原本想把標題寫成“4399、小米、UC、百度面經”,後來想了一下,其實這次校園招聘可以寫的遠遠不止那麼少。從一開始的情況急轉直下,到最後逐漸恢復狀態拿到offer,2個月來人都愁得頭髮鬍子瘋長,從中真的學到太多太多了,也深感找工作不容易……當然最後的結果還是不錯的,目前有幸拿到UC、百度、小米、4399的offer。這次校園招聘雖然還沒結束,但是我大概已經決定後最終的去向了,所以也在這裡寫篇日記紀念下大學這紀念來最憂心忡忡的2個月。

——————準備的內容——————

要說校園招聘我自己學到什麼重要的東西,最重要的有2點——第一個是不要抱死一家公司不放:有個目標是很好的事,但是如果抱著一種“非這家公司不去”的心態,忽略了準備其它公司的筆試、面試,那麼一旦真的有閃失,後果會非常嚴重,我自己在校招初期就是這樣遭到很大打擊的;第二個是筆試成績非常重要,一定要重視

:以前總有一種錯覺,就是覺得只要筆試通過了一個門檻,進入面試那就基本只看面試表現了,後來經過多次經歷能明顯發現筆試成績在面試過程中也佔著非常重要的地位。

先從大處基本的方面說,如果我重新準備筆試面試,會怎麼準備?我現在看來,從大二的最後一次假期開始準備,也不為早。儘早確定自己到底是要讀研還是要找工作,儘早有個目標,我心裡其實一早就是想直接找工作的,但是奈何一開始父母比較傾向於走保研的路,而我自己當時也覺得其實沒有那麼不想讀研,因此也沒有太過準備找工作的事,後來越到臨近找工季,越是感受到心裡對於直接工作的嚮往,於是不但放棄直博,連保研也放棄了,可以說是直接把自己推到一條沒法後退的道路上。這幾個月我看資料、看書的效率實在是大學任何一個時期都比不上的,很辛苦,但是不得不這樣!

在準備找工作開始到現在,下面列出的材料大概是在3個月時間內閱讀、完成的(我是偏後臺開發的):

《Effective C++》,看了之後絕對獲益匪淺;

《C++ Primer》,其實我個人不覺得這本書有多麼震撼(起碼沒有Effective C++給我的那種感覺),但是確實是對C++一些細節查漏補缺的好書;

《程式設計之美》、《劍指OFFER》、《程式設計珠璣》、《Cracking the Coding Interview》,其中《程式設計之美》和《Cracking the Coding Interview》看得差不多,《劍指OFFER》和《程式設計珠璣》大概看了一半。這四本書是準備面試(甚至一部分涉及寫程式碼的筆試題)的非常好的材料,其實很多公司的題目都能在裡面找到蹤影,看了後要著重記住解題的思路;

leetcode,直接搜尋,上面有非常多很讚的題目,既是基礎,但是又是十分考驗功底的題目,我到現在還十分後悔沒有早一點開始刷這個oj,因此只能挑我覺得大部分公司著重考到的題目——所有和連結串列、樹、陣列有關的題目。我到目前也就做了50多題,很慚愧,如果全部做完,那麼能力肯定會提升一個level(20131208注:目前已經做完150題了,算是暫時刷完這個OJ,還是那句,幫助很大……)。另外,leetcode裡面的題目和《Cracking the Coding Interview》裡面的風格比較類似,都是非常考驗基本功的;

《UNIX環境高階程式設計》《UNIX網路程式設計-第2卷》,這兩本書是我應聘所有與Linux或者後臺相關崗位時覺得很有用的,兩本合起來大概用了20天看完,而且《UNIX環境高階程式設計》的程式碼全部由手敲並執行過,而且寫了一個小程式,裡面運用了鎖、多執行緒等技術點,可以對作業系統有個更好的理解,個人感覺是很值得的;

《構建高效能WEB站點》,其實這本書的用途沒有想象那麼大,當時是為了準備面試中可能碰到的系統設計題而看的,但是看了也很難回憶起比較深刻的東西,主要是沒有接觸過,理解起來也困難。不過面試過程中也基本沒有到那麼多,但是還是能作為開開眼界的一本書;

手寫插入、冒泡、選擇、快速、歸併、堆排序,同時敲入了實際程式碼,其中快排和歸併排序練習了幾次,已經做到信手拈來,可惜面試中還沒碰到直接寫排序的,當然了各種排序演算法的時空複雜度以及特點都是要理解好的;

編寫連結串列、佇列、棧、堆、雜湊表資料結構,一開始沒有寫總是覺得思路比較簡單,到實際去實現就會發現沒那麼簡單了,後來面試中確實要直接手寫一個棧的實現程式碼,有所準備了;

當然還有July的部落格中的關於海量資料處理的題目,以及他所提供的各類筆試面試題,精品!我時常在想如果沒有了這個部落格那麼這些有價值的內容會封閉到什麼時候?當然有人覺得這些都是題目,看了有什麼意思呢?但是看了的人確實更有競爭力了,要找工作的你看還是不看?我筆試面試中有幾題就是在July的部落格中有的。

包括www.ahathinking.com中關於lcs等一系列題目的講解,以及網上各種有用的資料,別人的面經,包括我的部落格中的某些內容,例如C++類、結構物件記憶體佈局淺析找出帶環單向連結串列的環入口(交點),等內容,尤其是第一篇,幾乎所有的筆試題都會考。

其實還有很多很多的內容,我這裡根本就列不完,所以越早準備校園招聘越好。另外我也深深感覺到一份相關的實習工作經歷也是很重要的……

——————筆試面試——————

下面就是大概說一下筆試、面試的經歷以及我個人覺得不同公司的偏好內容,當然我不會說具體的筆試、面試題目,因為這些東西公司都要求保密

阿里巴巴:當時沒有準備校招的多少東西,因此筆試一塌糊塗,直接負分滾粗,面試機會都沒有哭

騰訊:最開始希望加入的公司,面試內容也是專門為之準備,孤注一擲但是最終被刷,才悟出不要抱死一家公司的教訓。從面試情況以及同學的一些分享,感覺騰訊十分喜歡筆試分數高的人,而且專案經歷中,那些十分接近一款產品的專案是很受青睞的,例如一款微博分析工具、安卓手機軟體之類的”產品“。至於比較偏重理論的專案,例如某個演算法的實現、改進,或者其它一些完成理論的demo(但是沒有實際產品)的專案可能就會不那麼抓住眼球。同時我個人感覺,騰訊十分看重你專案的深入程度,越是做得深入,越是完整,越好,不然很有可能面試官覺得你的專案”很水“。當然騰訊的一面還是基礎知識,常見的函式知道怎麼實現,例如和字串操作相關的,或是其它基本的面試題,具體的其實看了JULY的部落格,或者其它一些面經,吃透了,就差不多了。另外是對於自己的專案,想好自己專案的難點、克服難點的做法是什麼等。

網易遊戲:很多崗位號稱只招研究生,其實不然,優秀本科生也是可以去競爭的。筆試分數很重要!而且對語言的細節要比較瞭解,今年的筆試題還有和圖相關的內容。網易的筆試題涵蓋的範圍很廣,有些也是很基礎的但是大家可能會忽略的知識,至於後面,難度適中。要應對網易遊戲的面試(C/C++),那麼一定要對C++的瞭解比較深入,怎麼個深入呢,例如大家可以去注意C++中比較標準的拷貝建構函式的寫法,當你重新看C++的書的時候,不斷問為什麼書中要那麼去寫,然後包括型別轉換、多型、虛表這些也絲毫不能含糊,面試官問的問題,我當時實在麼有招架住。網易的二面就比較考察個人的除程式語言外的應用、分析能力。在網上多多找面經吧。

工商銀行軟體開發中心:軟體開發中心應該是直接在宣講會投遞簡歷的,工行的待遇還是不錯的,同時平時上班的時間也比較不像大型網際網路公司那樣早上很遲開始,晚上很遲走,不過我只是在面試的時候看到這些皮毛,不知道實際情況。工行軟體開發中心是要經過群面、單獨面的過程的(後續可能還有筆試)。群面就是給出一個實際問題,然後大家分析發表看法,然後組成一個組討論並達成一致意見。整個過程面試官都會知道聽你們討論的內容。但是我不知道面試官傾向什麼樣的應聘者。

4399:4399的筆試題還是比較平均,個人感覺出得比較中規中矩,難度也設計的比較好。當時的第一輪面試,可能因為筆試分數高,所以面試官問的內容不多,也不難,答對了面試官不會問太多,再次印證筆試分數很重要。接下來的面試就包括一些性格測試之類的,如果有進一步的面試,估計就是直接去見遊戲開發組的組長,面試的時候我被問到了很多開放式的問題,例如“大學期間最...”,“你自己覺得最...”,“你認為...”之類的問題。這些是我答得非常不好的。

UCweb:我很感謝UCWEB給我的機會。總體來說UC的筆試題不難,因此儘量做到最好,我當時應聘的是瀏覽器開發工程師。其實UC在廣州的辦公環境非常、非常地好,薪酬福利也很給力,加上目前UC的發展勢頭也好,因此我個人其實非常喜歡UC。我進入面試後,面試官直接就問簡歷上的專案,讓我非常吃驚的是,面試官的水平真的很厲害,我目前還沒遇到哪位面試官能把專案問得這麼——深入、命中要害……所以我的初步結論是好好準備專案。問完專案後,會問些比較基礎的東西,當然那些就要看你對語言的瞭解程度以及一些比較平常的資料處理問題,海量資料見July的部落格。

小米:我這次筆試小米,發現題目其實不多,都是直接手寫程式碼。因此手寫程式碼的能力還是十分必要鍛鍊的,直接對著《Cracking the Coding Interview》來手寫程式碼吧。至於筆試題的難度適中,做完leetcode裡面連結串列、樹的題目,應該問題不大。當然,對於leetcode裡面和連結串列有關的題目,多點使用二級指標去解題,不要總是用一級指標。用二級指標不但程式碼更短更簡潔,而且更加高階,必須要練習一下。至於小米的面試,其實我發揮得不是很好,兩道實際的手寫程式題,第一題有一個小BUG,第二題經過提示才寫出了最優解法。但是還是那句吧,筆試做好一點,面試的時候,如果你也能很好完成,那麼就離成功很近了。最終我面了一個BOSS,MIUI那邊的,BOSS問了一下專案的情況,還有之前我的應聘情況,問我為什麼阿里、騰訊會沒有比較好的結果之類的。其實很多面試官都會問你手頭目前幾個offer之類的,誠實點也可以了,不過對於那些拿到太多offer的人來說……你們有自己的做法了……反正我自己是誠實回答,但是回答的時候就不要說是自己的能力不夠之類的,畢竟我到現在真的是覺得不同公司招聘有不同標準,在一家公司結果不太好,不代表你能力有問題,真的。

百度:百度的面試給人感覺很舒服。比較傳奇的是,我一面是霸面的,一直到拿到offer,我都覺得是很傳奇的事情。後來才知道我沒有必要霸面,因為我筆試是通過了……只是暫時沒接到通知的我以為自己被刷了,就匆匆忙忙去霸面……好吧,反正最終結果是OK的。百度無論筆試還是面試,很明顯的感覺就是個人分析解題能力以及演算法能力還是比其它公司要求高的。應聘百度,leetcode之類oj要多做一下,圖的題也會涉及,字串處理也是,但是有的題目,不是一下子能反應過來的,這個時候就要慢慢著手解決,當然你也要相信面試官不會出一些很tricky的題目,主要是做題的時候有正確的方法。像劍指offer以及程式設計之美這些書,解題的時候會有一個思路演變的過程,就是這種過程對解題還是比較重要的(個人感覺)。

——————後記——————

寫了這麼多,大概也就告一段落了。在找工作的期間經歷過很多難過、焦慮的時候,主要是太多的資料要去看,邊看書邊應用邊準備,在某一天身心俱疲了,但是第二天必須卯足勁繼續加油,難不成想去考研?不可能啊!校招也就這麼一次了,等春季補招這種給自己留退路的想法最好還是收一收,在當下就做到最好吧,各位加油了,在短短的時間裡面,你就會明顯感覺到自己的進步,就像我校招前完全不覺得自己能通過百度的面試,但是伴隨著資料的閱讀,以及各大筆試面試題的拷打鍛鍊,越到後面反倒是越有自信,也越沉得住氣。

再退一萬步,你心裡向著好處發展,最終結果也會是好的,所以你可以成功,現在不成功,相信春季補招也會發光發熱。校招季就做一隻打不死的小強吧!

以下內容為一些補充,因為發了這篇博文後,有些童鞋可能問到:

1. ACM經歷重要不重要?可以說ACM牛的話,肯定是有幫助的,很多ACM的同學都很牛出路很好,在面試時可能也會問一些較難的演算法題。ACM不厲害的同學(例如我),但是具有一定的演算法能力,也OK,面試官不會用很難的演算法題去考察,而是著手其它方面,例如你做過的專案,你掌握的一些程式設計知識等

2. 專案重要不重要?很重要,你做過的專案,最好列在簡歷上面,但是你要保證自己對自己做過的專案爛熟於心,這是非常重要的,很多面試官都會問你做過的專案,然後從你做過的專案裡面集中問你某些知識點(例如我曾經面試騰訊就針對我專案中的網路程式設計的部分問得很多)。有些你自己覺得可以改進的專案,改進之,善於利用git(github),關於git的教程,在google中搜“git教程”,第一條,2天就可以全部看完(百度搜不到的)。

3. 簡歷重不重要?非常重要,除非,你本身技術真的非常牛,或者ACM非常牛,那麼簡歷的設計就可以相對不那麼上心。但是我覺得看到這篇日誌的同學應該都是普通人……所以簡歷要好好弄,主觀評價之類的例如“我覺得自己...”,“我工作認真負責...”之類的儘量不要,但是可以在一個小地方簡略介紹自己的話,可以考慮加一下自己的性格愛好,以及其它一些課餘活動(非專業活動或比賽)取得的成績(例如我說自己得到毽球比賽校級冠軍),但是這部分關於你個人特點的描述絕對不是重點!重點的內容是你掌握什麼技術,做過哪些專案,在哪裡實習過之類的專業相關內容。

暫時這麼多,如果有補充的話我會繼續加。