從7月中旬回武漢之后開始系統(tǒng)的復(fù)習(xí),到9月下旬正式開始找工作,最后到10月中旬結(jié)束,前后歷時三個月,從前期的職業(yè)定位,到中期的復(fù)習(xí)準備,最后到后期真槍實彈的筆試面試,個人感覺找工作就是個系統(tǒng)的工程,是個很復(fù)雜的事情,至少對于我是這樣的。經(jīng)歷了感觸頗深,在這里,我想將我這幾個月,尤其是最后半個多月筆試面試的經(jīng)歷與感受記錄下來,一來祭奠我那些由于高強度筆試面試犧牲的腦細胞,二來希望能給學(xué)弟學(xué)妹們半點借鑒。
下面主要從三個方面來記錄這段經(jīng)歷:職業(yè)定位、復(fù)習(xí)準備、實戰(zhàn)經(jīng)歷。
我想大家在找工作之前應(yīng)該會給自己定個目標(biāo),或者是職業(yè)范圍,比如想到哪個城市去工作;想加入到什么行業(yè),比如互聯(lián)網(wǎng)、通信、傳統(tǒng)軟件、游戲等等;想進什么樣的企業(yè),國企、民企、外企或者考公務(wù)員;最后想從事什么職業(yè),是搞研發(fā)還是搞測試,是搞Web前端還是搞后臺開發(fā),這些都是要考慮的。只有定位清楚了,才能有針對性的復(fù)習(xí)和準備,才能有的放矢,增加命中率。
就拿我自己來說吧,本來我對去哪個城市是沒什么特殊要求的,不過我想進入互聯(lián)網(wǎng)行業(yè),國內(nèi)好一點的互聯(lián)網(wǎng)公司,深圳有一兩家,廣州有一兩家,杭州有一兩家,上海有一兩家,其它的基本就全在北京了,所以從概率上來講,我多半要去北京了。然后,國內(nèi)互聯(lián)網(wǎng)公司基本屬于民企。所以,綜上,我多半要去北京進入到某個民企從事互聯(lián)網(wǎng)行業(yè)。當(dāng)然,除了這個,知名外企我也想試試,只為一試,只為一死,因為我自己實力我了解,即便技術(shù)關(guān)過了,英語口語這關(guān)肯定也是要死掉的。
最后,也是最重要的一點,打算從事什么職位,一般的互聯(lián)網(wǎng)公司都會有這些職位:前端開發(fā)、后臺開發(fā)、windows開發(fā)、手機軟件開發(fā)、測試,運維等等。我以前雖然搞過web開發(fā),不過那已經(jīng)是幾年以前了,現(xiàn)在已經(jīng)丟的差不多了,所以前端我沒有優(yōu)勢;windows開發(fā)沒做過,手機開發(fā)沒做過,測試沒做過,運維也不熟,這些都排除就只剩下后臺開發(fā)了。大部分公司后臺開發(fā)都要求linux c/c 語言,我近一年來做的項目主要用的就是linux c,所以最基本的平臺和語言還算吻合。我注意到大部分互聯(lián)網(wǎng)公司,尤其是知名一點的互聯(lián)網(wǎng)公司都有這樣一個職位:數(shù)據(jù)挖掘/機器學(xué)習(xí)工程師。然后聯(lián)系到我近兩年的學(xué)習(xí)經(jīng)歷,論文牽線,我和數(shù)據(jù)挖掘結(jié)下了不解之緣。除了項目之外,其它時間,我基本都在學(xué)習(xí)數(shù)據(jù)挖掘的相關(guān)知識,包括數(shù)據(jù)挖掘相關(guān)算法,推薦系統(tǒng),搜索引擎等。綜上,我給自己職位的定位就是,大的方向是后臺開發(fā),細分下來就是數(shù)據(jù)挖掘、推薦系統(tǒng)、搜索引擎相關(guān)。
從七月中旬到九月下旬,系統(tǒng)的復(fù)習(xí)我花了兩個多月,別說我復(fù)習(xí)的時間長了,高考只決定了未來四年,我們要花最少一年來復(fù)習(xí),考研只決定未來三年,我們要花將近一年時間來復(fù)習(xí),找工作決定未來多少年,我不好說,因人而定,總之是跨入社會的一個新的起點,新的平臺,我覺得花多少時間來準備都不為過。當(dāng)然,這個也是因人而定,有的人基礎(chǔ)好,可能不需要怎么復(fù)習(xí)就可以直接扛著槍上戰(zhàn)場,我不行,我沒考過研,所以什么數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計算機網(wǎng)絡(luò)什么的都丟的差不多了,如果不復(fù)習(xí)就去筆試面試,我估計等著我的只有一個結(jié)果:go to hell。
復(fù)習(xí)我主要圍繞四個方面:基礎(chǔ)知識、具體職位相關(guān)知識、技術(shù)博客、項目。
計算機涉及的知識太廣,我們不可能面面俱到,不同的公司考察的重點也不一樣,不過也有一些共同點,塵埃落定之后,回過頭來看一看,個人覺得《程序員面試寶典》就是一個很好的知識框架??偨Y(jié)下來,就是一句話:一個中心,兩個基本點。一個中心是數(shù)據(jù)結(jié)構(gòu)和算法。大一點的公司都會或多或少的涉及這方面的知識,不管是筆試還是面試。先說筆試,至少會有一道算法設(shè)計題。變態(tài)一點的像百度,基本都是編程題和算法題。面試最少也會考察一道算法題,逐步優(yōu)化并且代碼實現(xiàn)。這一塊是重重之重,最好是找兩本數(shù)據(jù)結(jié)構(gòu)和算法方面的書系統(tǒng)的復(fù)習(xí)一下。兩個基本點,一個是語言,一個是操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)相關(guān)知識。語言選擇最熟悉的一種語言即可,個人覺得如果語言有項目基礎(chǔ),面試寶典上面涉及到的語言知識就可以應(yīng)付一般的筆試。至于操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡(luò)相關(guān)的,基本考到的也都是小題,本科階段的積累應(yīng)付筆試應(yīng)該沒多大問題,如果要應(yīng)付面試中面試官就某個知識點的追根究底,恐怕還是逃不過對某些知識點的系統(tǒng)復(fù)習(xí)。比如經(jīng)常會問到的,操作系統(tǒng)中的進程和線程的區(qū)別,進程通信和線程同步,tcp/ip相關(guān)知識等等。
因為我投的是數(shù)據(jù)挖掘、推薦系統(tǒng)和搜索相關(guān)職位,所以這一塊我主要復(fù)習(xí)這方面的知識。這個看具體職位吧。具體職位具體復(fù)習(xí),就不詳談了。
這一塊主要是拓寬自己的知識面吧,或者說把前面復(fù)習(xí)的知識在這一塊靈活運用,因為面試中大部分也不是考死知識,也是給我們一個問題,然后讓我們分析解決并且逐步優(yōu)化。這里給大家推薦幾個博客。第一個:http://zhedahht.blog.163.com/這里有一系列的微軟google等面試題,我是花了幾天時間把這里面的60幾篇博客從頭至尾看完,而且大部分算法都用筆在紙上實現(xiàn)了一遍,沒辦法,因為面試就是這樣,紙上寫代碼。這里面,八皇后問題創(chuàng)新工場筆試中考到了,當(dāng)然這個問題很多書中也談到過,不過這里用到的全排列的思想代碼實現(xiàn)比較簡潔。第二個:http://blog.csdn.net/v_july_v這里有大量的面試題分析以及海量數(shù)據(jù)處理問題總結(jié),很久以前我就開始跟蹤這個博客,里面海量數(shù)據(jù)處理問題總結(jié)的很到位,基本可以應(yīng)付絕大部分筆試面試中遇到的海量數(shù)據(jù)相關(guān)問題,我經(jīng)歷的搜狐和騰訊的筆試以及百度的面試都涉及到了這方面的問題。第三個:編程之美,這是微軟的一幫工程師總結(jié)出來的一本面試心得,其中,對于每個問題如何解決如何優(yōu)化都講解的非常到位,建議大家務(wù)必把這本書好好看看,如果時間不夠,可以只看第二部分數(shù)字之魅和第三部分結(jié)構(gòu)之法。其中“尋找發(fā)帖水王”問題大眾點評網(wǎng)考到了;“1的數(shù)目”問題微軟考到了;“尋找最近點對”問題創(chuàng)新工場二面的時候問到了;“求數(shù)組的子數(shù)組之和的最大值”問題騰訊考到了;“鏈表相交”問題創(chuàng)新工場一面的時候問到了…
主要是因為我有個項目做了有兩三年了,有點陌生了,但是我簡歷中寫到了這個項目,避免面試官問到而我談不出來,所以我把之前做過的兩個項目的相關(guān)文檔都看了一下,思路整理了一下。這一塊也是因人而異,需要復(fù)習(xí)就復(fù)習(xí)。面試的時候有東西談總是好的。
下面談?wù)勎业拿嬖嚱?jīng)歷吧。主要談?wù)勊拇斡∠笞钌畹拿嬖嚕鹤顮€的一戰(zhàn)——搜狐;最爽的一戰(zhàn)——創(chuàng)新工場;最累的一戰(zhàn)——微軟;最成功的一戰(zhàn)——360.
搜狐是我筆的第一家公司,也是我面的第一家公司。為什么說是最爛的一戰(zhàn)呢,因為我滿懷希望的去,結(jié)果傷痕累累的回來。面試官三十歲的樣子,親和力比較強,我先做了下自我介紹,介紹到項目的時候,圍繞項目聊了一下,因為我簡歷里面提到了hadoop,所以又聊了一下hadoop可靠性相關(guān)的問題,這些都沒什么,因為都是我簡歷里面的東西。然后,面試官問設(shè)計模式熟不熟悉,我只了解少數(shù)幾個模式,所以說不熟,然后面試官就沒再問了;然后面試官又問我數(shù)據(jù)庫熟不熟悉,數(shù)據(jù)庫我簡單的復(fù)習(xí)了一下的,沒把它作為重點,以前的項目也用過,基本的sql語句我還是了解的,但是我擔(dān)心我說熟悉,他會深挖,所以我說不熟,然后他也沒問了;然后他又說,“我看你第二個項目是用java做的,我們研發(fā)部這邊也主要用java”,我本科的時候確實一直用java,不過研究生階段沒怎么用過了,有些api不太熟了,我就實話實說了,然后他又沒問什么了。我簡歷上寫了熟悉linux開發(fā),然后他說能否說一下你熟悉的linux命令,我說了幾個,然后提到以前做項目的時候用crontab做過任務(wù)計劃,然后他抓住這一點,給了我一個任務(wù),叫我寫出任務(wù)計劃,天啦,都幾年沒寫過了,我哪還寫的出來,命令里面幾個時間的順序都記不得了。最后,他說做個數(shù)學(xué)題吧,叫我求出1到1億的和,我拿到這個題就開始想應(yīng)該是個什么算法,從頭至尾就是按照計算機的思維在解這個題,又是循環(huán),又是遞歸,又是溢出,甚至在往位運算方面想,總之,最后沒給出他想要的結(jié)果。最后,聊了一下鏈表、hash相關(guān)的問題。面完了,我問他,我今天面試有些什么問題,方便我改進,他總結(jié)了幾點:1.項目經(jīng)驗不足,意思就是我linux相關(guān)的開發(fā)工具不熟;2.數(shù)據(jù)庫設(shè)計模式這些基本的知識掌握的不好;3.數(shù)學(xué)比較弱,他說那個數(shù)學(xué)題高中生的水平都可以做出來。不過,最后他加了句,你數(shù)據(jù)結(jié)構(gòu)還是學(xué)的比較好的,傷感?;貋淼穆飞?,我又回憶了一下,他說那個數(shù)學(xué)題高中生都可以做出來,不會就是求和公式吧,暈,我把它想復(fù)雜了。
總結(jié)一下搜狐的面試,整體來說,面的東西都比較基礎(chǔ),沒有什么太深的東西。不過畢竟是第一次面試,經(jīng)驗不足。第一,我太過保守,沒有十足把握的,我都說不熟,給他得印象就是我不會,比如數(shù)據(jù)庫、設(shè)計模式、java;第二,把水想的太深,其實水并沒有那么深,比如那道數(shù)學(xué)題,我怎么就沒注意他說的是數(shù)學(xué)題,不是算法題啊;第三,不知道的東西千萬不要主動提,比如那個crontab,我以為我知道,但其實我已經(jīng)忘了,悲催。
一面面試官是個年輕的小伙子,比我大不了多少。同樣先做自我介紹,然后聊了一下項目,然后他看我寫的了解hadoop,就問我多長時間能把hadoop的平臺搭起來,就是單機模式的,這個我之前搭過好幾次了,還寫了相關(guān)的技術(shù)博客,我說半個小時就可以搞定,他很滿意,說之前公司來了一個實習(xí)生,給他一天的時間,硬是沒有搭起來。然后叫我寫一個判斷單鏈表相交的代碼,這個我之前看過,很快就寫出來了。然后就是一個開放性的問題,因為我簡歷上寫了搜索引擎,所以他問我,搜索引擎的搜索框里搜索詞的提示和糾錯怎么實現(xiàn)的,這個我首先想到的就是trie樹,開放性問題嘛,當(dāng)然方案越多越好,我又想到了貝葉斯分類。一面結(jié)束的時候,他說我挺不錯的,問我明天什么時候有時間,暈,都不用等通知,已經(jīng)給我安排下一場面試了。二面主要圍繞兩個問題,一個是k-means聚類基本算法和優(yōu)化,還有一個簡單的算法題,不記得了。二面完了,下午就收到了參加創(chuàng)新工場雙選會的通知。
創(chuàng)新工場,整個面下來都是很輕松的,可能是因為面的都是簡歷里面的內(nèi)容,不管是hadoop還是搜索還是聚類。所以,面試也看運氣吧,碰到這樣的面試官,爽死了。
微軟不愧是軟件業(yè)的老大,他的面試給人的感覺就是正規(guī)嚴謹,面試官也是從頭到尾都很嚴肅,個人感覺從頭到尾大腦都是高負荷,不過也是最受益的一個。第一個面試官三十多歲,首先做了一下自我介紹,然后簡單的聊了一下hadoop,接著,就給我一段代碼,讓我指出其中的錯誤,我每找出一處,他都追問,“你看看還有沒有”,最后,我大概找出五處左右的錯誤,實在找不出來了,他就沒問了。然后,他說,我們來寫段代碼吧,叫我寫了段memcpy的代碼,這個代碼之前寫過,主要要注意拷貝邊界。寫完之后,他看了看,說,“你看看你的代碼有沒有什么問題”,天啦,我聽到這個,我當(dāng)時就凌亂了,因為我確定這段代碼是沒問題的,因為之前寫過好幾次,最后他提示我,循環(huán)可能永遠不會停止,我才恍然。這個問題結(jié)束之后,最后的重頭戲來了。最后一個問題是,一輛車有無限大的油箱,圍繞一個環(huán)形跑道走,跑道上總共有k個加油站,每個加油站m升油,每兩個加油站之間的距離為a[i],先回答,這輛車能不能從某個加油站開始走完跑道,回到起點,如果能,從哪里開始。大致的問題就是這樣子的,具體的我記不清了,我最怕的就是這種題了,最開始,我題目都沒搞懂,他解釋了半天,我題目才搞懂。搞懂之后,先給他講思路,在他一次次修正我的思路并且確定思路是最優(yōu)的之后,他說了句“問題聽懂了吧,OK,開始寫代碼吧,我出去坐坐,10分鐘之后進來”,然后他端著咖啡走出了房間,去外面大廳去了。再一次凌亂,什么都要寫代碼,這就是微軟。OK,沒辦法,寫唄。不過,好歹是寫完了,他進來看了之后,還是那句“你看看你的代碼有沒有什么問題”,我硬是沒看出來。后來,回來的路上我才想起來,忘了加判斷,先要判斷能走完,然后再找從哪里開始走才有意義,我忘判斷了。唉。
第二個面試官大概40多歲,從頭到尾就面了一個問題,二叉樹的序列化存儲,也是先給他講思路,每提供一個思路,他都說能否繼續(xù)優(yōu)化,直到最后時間復(fù)雜度和空間復(fù)雜度都達到了他的要求,然后就說“那好,你實現(xiàn)一下吧”,好吧,我已經(jīng)習(xí)慣了,實現(xiàn)這個代碼花了我將近半個小時,他看了看,也是那句“你看看你的代碼有沒有什么問題”。怎么微軟的面試官都是一個模式。
微軟面了兩個面試官,從下午2點面到4點多,整個的感覺就是累。感覺面試官就是一步步逼著你,直到發(fā)揮你最大的潛力,好幾次我都想說,這個我做不出來了,咱能不能換一個,沒好意思說,不過最后還是被他們逼著把題給做出來了,不過,我終究離他們的要求還是有一定距離。
之所以說是最成功的一戰(zhàn),是因為,360我是霸面的,而且面上了,我生平第一次霸面,也是最后一次霸面。那天面完百度,我沒有直接回學(xué)校,而是去了360面試的咖啡廳,我中午去的,我問門口的hr能不能霸面,hr說要等前面名單上的人都面完了之后才行,ok,我就等唄,誰叫我那么中意360呢。等到下午差不多5點,我這個崗位的人才面完,面試官終于空出來了,給了我一次面試機會,非常感謝360的hr和面試官,給我一次機會,這也說明360是個非常開放的公司。面試細節(jié),我這邊就不提了,因為投的是數(shù)據(jù)挖掘工程師,所以面的主要是數(shù)據(jù)挖掘,推薦,算法相關(guān)的東西。
最后,做個簡單的總結(jié)吧,通過前面的描述,我想大家也看出來了,我們這專業(yè)的想找個好工作完全靠技術(shù)。當(dāng)然,首先要選好自己的職位,選擇最匹配自己的崗位,然后夯實自己的基礎(chǔ)。只要堅信自己的技術(shù)夠厲害,總會有適合自己的工作在那兒等著你。被拒很正常,被拒了不是說明你不夠優(yōu)秀,只是不適合你而已。就像找對象,不找最好的,只找最合適的。
Ok,就這些吧,希望大家看完不要覺得這是在浪費大家時間才好,希望還在找工作的童鞋們早日找到適合自己的工作。另外,學(xué)弟學(xué)妹們,你們也加油吧,期待明年戰(zhàn)場上你們的傳奇。
聯(lián)系客服