百度是我一直很崇拜的地方,也一直非常期待的地方??赡苁窃从谖覍W(wǎng)上諸多面經(jīng)的理解以及她在宣講會前后的宣傳,我一直以為百度是一個只有非常牛X的人才能去的地方,里邊的人都是超級大牛,所以像我這種機(jī)械專業(yè)的菜鳥學(xué)生參加她的宣講會也就是去參觀參觀,娛樂娛樂而已。至于到后面為什么一不小心拿到了百度的offer,可能一半是實力一半是運氣吧。
宣講會:
百度的宣講會來得非常早,也是我參加的第一個宣講會,所以記憶非常深刻。大活門外的廣告打得非常炫,一個很帥的人,不知是不是李彥宏,頭上畫了兩只牛角,大意是個牛人,期望大家加入百度,在牛人的關(guān)注下成長。我顯然低估了百度在學(xué)生中的影響力,提前半小時到宣講會現(xiàn)場,發(fā)現(xiàn)擠爆了,沒辦法,只好站在走廊里邊,后來保安建議同學(xué)們都坐地上,于是大家也不管地上臟不臟,不管是GG還是MM都坐下了。由此可見找工作還是很辛苦的,確實,在這以后的日子中大家為了心目中的企業(yè)一直在奔波,無論是精神還是體力上都處于一種極限狀態(tài)。
宣講會之前半個小時一直在放李彥宏參加那啥詠樂會的節(jié)目,百度的老總就是長得帥啊,據(jù)說是中國的知名企業(yè)的老總中最帥的一個了。果然是才藝皆全,聽他的創(chuàng)業(yè)經(jīng)歷,看他跳舞,講述百度名稱的來歷并吟詩,真是享受啊。百度的宣傳片做得也很有氣勢,百度大廈的漂亮也給我留下了深刻印象。宣講會正式開始后的內(nèi)容和其他公司差不多,都是百度公司的介紹,企業(yè)文化,內(nèi)部工作環(huán)境,員工發(fā)展等等。其中還有一個剛剛?cè)肼毜娜A工MM參與了這次宣講,很PP很活潑的一MM??傊俣鹊男v會持續(xù)時間比較長,人數(shù)也非常的多,百度給我的感覺非常好,非常遙不可及。
筆試:
原先百度網(wǎng)投的時候,我用網(wǎng)易的郵箱注冊,老是收不到激活信息,后來換了個QQ郵箱,注冊居然成功了。眾所周知,在找工作中用QQ郵箱可能會讓企業(yè)覺得此人太幼稚,印象不好,所以我非常擔(dān)心,想重新注冊一個賬號,但是一個身份證只能注冊一個賬號,所以只能作罷,非常擔(dān)心我的簡歷被刷掉了。后來發(fā)現(xiàn)這個擔(dān)心沒有必要,因為百度基本也是海筆的政策,而且筆試通知和筆試過程是交給智聯(lián)招聘的人來做的,整個過程人比較多,也比較混亂,百度和QQ一樣,也支持霸王筆,這點同樣要贊。百度招聘系統(tǒng)上的狀態(tài)和實際狀態(tài)不一定完全吻合,比如我的簡歷狀態(tài)一直處于“處理中”狀態(tài),而有的人有“筆試”、“面試通過”或“面試未通過”狀態(tài)。筆試時間安排在十月十多號,和宣講時間差不多相隔一個月,這個是百度的策略,先在全國各地宣講,接下來全國各地筆試和面試,最后全國匯總,通知結(jié)果。筆試是晚上進(jìn)行的,和支付寶一樣,也是全部挨著坐,但是試卷一樣,百度不擔(dān)心你抄別人的試卷,因為你抄不了,2個小時,6道大題,試卷頭特地說明解決問題是一門權(quán)衡的藝術(shù),如果有可能,盡情發(fā)揮,在做試卷前,通篇閱讀題目,選擇最拿手的題目就行了。百度的六道題目大致如下:
1. 關(guān)于深度優(yōu)先、廣度優(yōu)先遍歷算法及非遞歸實現(xiàn)的特點
這道題我索性將深度優(yōu)先和廣度優(yōu)先便利算法都寫出來,然后簡單說明了一下其非遞歸實現(xiàn)的特點,就是需要一個堆?;蜿犃?,輔助空間較大等。
2. 一道程序改錯題,可能存在錯誤,也可能存在安全隱患。
這道題一般對C/C++熟悉的同學(xué)都會做,就是一些關(guān)于指針的指針傳遞,也有一些數(shù)組越界的問題,不難。
3. 一臺計算機(jī)有1KB內(nèi)存和1MHZ的處理器,能在該機(jī)上運行且確定性終止的所有程序中,最長的運行時間是多少,要求寫出推理過程,可作出任意假設(shè)。
我假設(shè)該機(jī)是但用戶單任務(wù)操作系統(tǒng),實地址模式,運行的程序就是在不斷不重復(fù)地更改內(nèi)存狀態(tài),程序結(jié)束的終止?fàn)顟B(tài)為內(nèi)存的某一確切狀態(tài),定義為終止態(tài)。于是推理過程如下:
1KB的內(nèi)存共有狀態(tài):2^(1024*8) 種
1MHZ的處理器每一秒鐘可以更改內(nèi)存狀態(tài)的次數(shù)為: 10^6 次
因此,如果一個應(yīng)用程序,從某個狀態(tài)出發(fā),遍歷了所有的中間狀態(tài),最終到大終止態(tài)后結(jié)束,經(jīng)歷的這段時間即為程序運行的最長時間。為:
(2^(1024*8)-1)/10^6 秒
4. 關(guān)于編譯依賴的問題,大意是一個項目中存在諸多組件,某些組件的編譯需要以另外一些組件的編譯為前提,問怎樣找出一個合理順序,使得所有組件能夠順利編譯。
該題其實是拓補排序問題,詳見清華大學(xué)出版的嚴(yán)蔚敏編著的《數(shù)據(jù)結(jié)構(gòu)》一書。我以一個確切的例子,繪出了一些圖形和數(shù)據(jù)結(jié)構(gòu),然后以文字形式表述了算法。
5. 編程題。要求在一個字符串中找出最長的數(shù)字串,如“fafdahruqa12343fa43faf56454354fas”,你需要找出“56454354”即可。
該題很簡單,可以直接寫出可以運行的代碼。
6. 關(guān)于URL的系統(tǒng)設(shè)計問題,一個URL分為站點和路徑兩部分,除此之外還需要維護(hù)一些定長的屬性和不定長的屬性,定長屬性如URL被發(fā)現(xiàn)的時間,不定長屬性如URL的描述文字。要求設(shè)計一個系統(tǒng),可以存儲和維護(hù)100億條URL及其屬性,支持添加,更新和刪除URL,能判定一個站點是否在系統(tǒng)中,如果在,需要給出信息,一個站點可能有多個路徑,如果給出一個站點,支持給出站點下所有的路徑。
該題我采用的哈希散列的方法,以站點為關(guān)鍵字進(jìn)行散列,設(shè)計了一個數(shù)據(jù)結(jié)構(gòu)表達(dá)一個站點、定長屬性、非定長屬性,設(shè)計一個路徑鏈表存儲所有的路徑。然后對各個要求的功能算法進(jìn)行了一下簡單的說明。
百度筆試的題目較多,體量較大,不要求全部做完,一般說來能寫出思路來,并且思路正確就OK了,關(guān)鍵是要想好怎樣表達(dá)。筆試完畢后,我感覺比較好,覺得應(yīng)該是可以進(jìn)入第一次面試的。
技術(shù)一面:
在筆試后的第二天,我收到了百度的面試通知,因為我算法方面不是很在行,不過在Windows編程上還行,于是我報的方向是客戶端軟件開發(fā)。面試地點安排在洛迦山國際酒店,百度的面試都是一對一地面試,百度的技術(shù)面試據(jù)說非常難,會問一些很難的問題,也會叫當(dāng)場寫代碼。當(dāng)時得到面試通知是又喜又擔(dān)憂,估計自己是兇多吉少。我被安排在四點半面試,而晚上六點是迅雷的二次筆試,當(dāng)時都想放棄算了,有點覺得自己就是炮灰。后來權(quán)衡半天,還是打算去試試,見識一下也好啊。我提前了一個小時來到珞珈山酒店,在二樓,絕大多數(shù)房間都是開著的,面試官和面試者一對一,有的房間在談話,大概說的是項目,或者面試官問,面試者答;有的房間面試官在干其他事,面試者趴在桌子上,應(yīng)該是在寫程序。也有幾個面試者等在各自的房間外,費勁地聽著里邊的談話內(nèi)容,我利用先到的時間,迅速和其中幾個在我之前的面試者聊了聊,大概了解了面試的內(nèi)容和形式,過了一會兒,那些先到的面試者都進(jìn)入各自的房間面試去了,走廊就只剩下了我一個人,這是腦袋里邊什么東西都想不了,索性我就不想了,反正我覺得自己就是來玩的,于是我一個人就在二樓所有的面試房間外晃來晃去,看里邊面試的情況。四點半的時候終于輪到我了。
面試我的是一個非常好的技術(shù)面試官,據(jù)介紹是百度客戶端業(yè)務(wù)部的主管,剛開始做了個自我介紹,然后就開始問一些項目的問題,圍繞項目問了很多很細(xì)的問題,包括Windows內(nèi)核的一些東西,如多線程,進(jìn)程通信,WM_COPYDATA原理,內(nèi)存映射文件等。我都一一予以作答,看上去他比較滿意。后來最終還是逃不過寫程序,他出了一道程序題讓我寫,題目比較簡單,我立即下筆,三分鐘后我寫出來了并且注上了完整的注釋,自認(rèn)為寫得很規(guī)則。面試官看了一下,沒有找出任何錯誤,饒有興趣地問了一個關(guān)于編程習(xí)慣的問題,他問我為什么喜歡把判斷一個字符指針是否終結(jié)的語句寫成if(0x00==*pStr),而不是if(0==*pStr),我說0看上去太單薄了,和數(shù)字0差不多,’\0’寫起來太麻煩,0x00寫起來感覺好,和字符在內(nèi)存的存儲也符合。技術(shù)上邊的面試大致就是這些,遠(yuǎn)沒有騰訊那么難,面試官也么有過于難為我,估計是因為我是機(jī)械專業(yè)的學(xué)生,非計算機(jī)科班專業(yè)的緣故。
估計過了一個多小時,談完技術(shù),面試官說,你今天是最后一個,我們不妨多聊一會兒,你有什么問題嗎。我就問了,百度客戶端產(chǎn)品發(fā)展的一些情況,應(yīng)屆畢業(yè)生進(jìn)入百度工作欠缺的一些東西。后來我又簡單地介紹了一下自己的情況,他后來問了一個問題,他說,百度的薪水相對其他企業(yè)來說是比較高的薪水了,根據(jù)你的具體情況,你對薪水有什么要求嗎,我問他,百度的薪酬體系是麼樣的呢,他說,有幾級工資,剛進(jìn)去是,被分配到一個等級上,以后每年有機(jī)會進(jìn)行重新評定,我想了想說,如果單就薪水而言,那我給我自己定的目標(biāo)是最高的兩個等級上,我期望憑自己的能力能夠拿到這個薪水,我相信我能辦到,另一方面,就我自身的情況,我及我的家庭現(xiàn)在都缺錢,但是我是農(nóng)村小孩,我很容易知足,可能某些人開著小車,住著別墅還嫌不滿足,可是對于我及我的家庭而言,我們只要有一粒米吃,我們就會高興半天,總之,我們的基本需求很小,但是他并不妨礙我追求高的薪水?;卮鹬形页晒Φ乇荛_了面試官的問題,面試官聽到我的回答還連聲說好,^_^。我大概面了1個小時40分鐘,才面完。整個過程相當(dāng)完美,所有技術(shù)問題都完美地回答了,所有聊天都很愉快。走的時候,面試官非常的好,送了我一件百度hi的衣服,另外還送了我一堆娃娃,說是送給我女朋友,握手道別的時候,他說,希望能在百度大廈見到我。至此我的百度一面順利度過。由于多面了40分鐘,所以我也錯過了迅雷的二筆,迅雷求職止于此。
產(chǎn)品二面:
技術(shù)一面的過程非常完美,所以我覺得自己肯定可以進(jìn)入二面,回來和求職群里的同學(xué)討論時才知道,很多同學(xué),比如運維部的,一次性的就面了兩面,所以心里不免犯嘀咕,怎么回事。到了第二天,又有運維部的同學(xué)接到第三次面試通知,陸陸續(xù)續(xù)去面了,而我仍然處于等待狀態(tài)。到了第三天晚上,我實在受不了了,就打了個電話到珞珈山酒店,轉(zhuǎn)到面試的房間,那面試官一聽我的聲音就認(rèn)出了我,他告訴我說各個部門不同,客戶端的同學(xué)可能在武漢只有一面,也有可能有兩面,但是到目前為止,第一面還沒有面完,叫我耐心等待通知。此時我才意識到,原來百度還是叫了很多人去面試的,因為百度的每次面試都是一個小時,所以時間拖得很長也在情理中。第三天的時候,我終于接到HRMM的電話,說讓我去參加第二次面試。在第一面的時候我有向面試官打聽二面的內(nèi)容,他告訴我是考察系統(tǒng)知識,比如讓我設(shè)計百度hi,應(yīng)該從哪些方面來考慮,所以我這幾天也從網(wǎng)上了解了一下百度的客戶端產(chǎn)品,并且主要從技術(shù)方面去猜想他是怎么實現(xiàn)的,其實在二面中,才知道只有一丁點用。二面其實面的不是技術(shù),而是對產(chǎn)品的領(lǐng)悟。
我被安排在上午十點鐘面試,面試地點為A房間,九點十分的是后到達(dá)珞珈山酒店,碰到一個武大的女生和男生,一問才知道,剛好他們是一面面的A房間,二面的面試房間剛好是我一面的房間。于是我們相互交流了一下,我才知道二面的內(nèi)容幾乎全部都是產(chǎn)品方面的問題,沒有技術(shù)問題。A房間的門關(guān)著,十點的時候,我按了一下門鈴,沒有人應(yīng),我猜想可能是里邊還有人在面試,所以我繼續(xù)等待,等到十點十分的時候,那武大男生提醒我說還是直接敲門算了,因為耽擱的時間是我自己的面試時間,幸好有他的提醒,我直接敲門,開門后面試官問我,你遲到了?我說不是的,我九點十分就到了,在門外等著,十點鐘按門鈴沒有反應(yīng),我以為您在面試其他人,所以又等了十分鐘。坐下之后,面試正式開始。
剛開始就問我用過哪些網(wǎng)絡(luò)產(chǎn)品,我當(dāng)時腦袋發(fā)卡,只說出幾種,QQ,飛信,網(wǎng)絡(luò)游戲,后來在他的引導(dǎo)之下,才又說出迅雷,BT,F(xiàn)oxmail等來,這一點表現(xiàn)不是很好。后來他又問我對百度的客戶端產(chǎn)品是否了解,我就說了百度hi,他接著問我對百度hi有什么看法,我就坦然地說了,我只是在研一的時候用過一次,后來就從來沒有用過了,我說百度的產(chǎn)品只有搜索大家都在用,其他的東西大家都不知道,我今天還和一個同學(xué)在談?wù)摪俣?,我那同學(xué)說百度怎么就只有一個網(wǎng)頁也這么牛,由此可見,百度的其他產(chǎn)品做得確實還很不夠,據(jù)我所知,你們期望以百度hi作為一個平臺,來整合你們的產(chǎn)品,就像QQ客戶端整合了多數(shù)QQ的業(yè)務(wù)一樣,但是我個人覺得這樣效果非常不好,因為百度hi的定位是即時通訊,而QQ在中國即時通訊領(lǐng)域在現(xiàn)在看來有不可逾越的霸主地位,當(dāng)百度hi出來的時候,我就會考慮一下,我用百度hi有什么好處嗎,沒有,因為其他人都不用,我和誰聯(lián)系呢。其實換個角度來說,百度不應(yīng)該以即時通訊客戶端作為切入點,而應(yīng)該以自己的特色,搜索作為切入點,據(jù)我所知,百度的搜索僅僅以IE形式呈現(xiàn),雖然用戶可以自己設(shè)定一些搜索喜好,但是那是基于cookie的,但是我本人不喜歡用cookie,我認(rèn)為那侵犯了我的隱私,所以我根本不能設(shè)定我的搜索喜好,我認(rèn)為這是一個遺憾。百度是否可以開發(fā)一個搜索客戶端,為每個用戶提供注冊,保存用戶的搜索設(shè)定,同時在此基礎(chǔ)上整合其他的產(chǎn)品,如百度hi,搜霸,百度硬盤等,這樣以一個全新的搜索客戶端概念推出的產(chǎn)品,相信要比以即時通訊概念推出的產(chǎn)品要受歡迎得多。他接著問我,對哪些網(wǎng)絡(luò)產(chǎn)品覺得不滿意,有需要改進(jìn)的地方,我說網(wǎng)頁迅雷界面反應(yīng)速度太慢,有時候還出現(xiàn)網(wǎng)頁打不開的bug,騰訊QQ不但不自己開發(fā)登錄器,反而將QQ的入口參數(shù)取消了導(dǎo)致當(dāng)前流行的QQ登錄器無法工作,我又向他闡述了自己有需求,在一個機(jī)器上登錄多個QQ,自己也曾經(jīng)開發(fā)過兩個版本的QQ登錄器,這些登錄器在2008版以前還能正常運行,但是2009版QQ取消入口參數(shù)后,我的登錄器也無法工作了,騰訊的這種做法讓我覺得很不方便。他接著問,你覺得騰訊基于什么考慮會禁止用戶在一個機(jī)子上登錄多個QQ呢。我說可能是服務(wù)器負(fù)載不夠?他說不可能。我說那可能是為了防止QQ賬號被非法利用,比如有的用戶可能在一個機(jī)器上的登錄多個QQ來發(fā)送廣告信息。他接著問,你認(rèn)為如何阻止用戶的這種行為。我其實對這個沒有經(jīng)驗,只好隨便說說,從發(fā)消息的頻次,內(nèi)容重復(fù)度,提示,舉報等角度來解決這個問題,后來他又叫我說的詳細(xì)一點,設(shè)計一個方案來解決這個問題。我就稀里嘩啦說了一大通。第二面的過程中,我明顯感覺到這個面試官比第一面面試官要厲害得多,因為我多次嘗試將他引向我熟悉的技術(shù)領(lǐng)域,但是他似乎沒有理睬我,仍然按照自己的問題在問,問的全是產(chǎn)品方面的問題。有時候會根據(jù)我的回答,進(jìn)一步從里邊抓出一兩個點接著問下去。面了大概四十分鐘,面試官說差不多了,問我有什么問題。我就問了他為什么叫我們做技術(shù)的叫來面產(chǎn)品啊,他說是因為在公司工作的時候,由于做技術(shù)的和做產(chǎn)品的再交流方面存在一些困難,感覺很吃力,因此才設(shè)計了這個面試環(huán)節(jié),主要是看看做技術(shù)的的面試者對產(chǎn)品的領(lǐng)悟能力,也算作是比較重要的考察之一。二面面試的時間剛好五十分鐘,加上被我浪費的十分鐘,一個小時。真是非常感謝武大那個同學(xué),要不是他提醒,說不定面的時間會更短,所以,也提醒以后的同學(xué),如果你的面試時間到了,你不能確定面試官是否在面試其他人的時候,你可以敲門試試,不然耽擱的時間是自己的損失。
電話終面:
百度十七號上午二面完畢,下午就接著面華為去了,這中間經(jīng)歷了很多筆和面,先后拿到華為offer,支付寶offer,ASMPT offer,騰訊offer,中電29所offer,成都飛機(jī)設(shè)計研究所offer,在做其他事情的同時,其實一直都很惦記著百度的信息。二十三號的時候我收到一封莫名其妙的信件,說是將對我的面試進(jìn)行綜合評定,一個月內(nèi)給消息。有若同學(xué)分析說可能是一封委婉的拒信了,意思就是我別盯著百度了,適當(dāng)?shù)臅r候可以找找其他的。其實后來我才得知,有些部門的同學(xué)在23號就收到offer了,而我報的客戶端有同學(xué)在23號收到了拒信。我收到叫我等待的郵件,應(yīng)該還是有戲的,所以我就一直等啊等,等到二十九號,陸續(xù)有同學(xué)有消息了,比如收到offer或被叫去北京面試了。三十一號,在我剛拒了騰訊簽約時,百度的消息終于姍姍來遲了,晚上六點接到電話,說客戶端把我的簡歷傳遞到質(zhì)量管理部了,覺得我更適合做質(zhì)量管理部的測試工具軟件開發(fā),問我有沒有興趣,我說可以啊,反正我的項目還和軟件測試自動化有關(guān),然后我們約定第二天早上九點半電話面試。
第二天早上九點半,非常準(zhǔn)時的電話響了。按預(yù)定計劃進(jìn)行,首先就是問了關(guān)于項目的問題,問得非常詳細(xì),然后問了一下我的知識架構(gòu),特地問了一下我做助研的事情,因為我助研的時候負(fù)責(zé)了《軟件工程與質(zhì)量體系》的課程教學(xué)管理,他問了我一些關(guān)于軟件工程的基本知識,以及CMM五個等級的相關(guān)知識,問我關(guān)于課程有哪些內(nèi)容,以及我對軟件質(zhì)量管理的基本理解。因為這個課是由我導(dǎo)師上的,所以感觸頗深,我覺得做軟件質(zhì)量管理,做的是一種境界,一種思想,我就如實的向他講述了自己的一些理解和感觸,自我感覺非常不錯。最后,我問了一下為什么把我的簡歷傳遞到質(zhì)量管理部,也問了一下質(zhì)量管理部的工作情況,HR一一做了回答,我打聽了一下接下來的流程情況,HR說,接下來會有人力資源的一個討論會,會做出最后結(jié)論,如果被錄取,在幾天之內(nèi)就會有消息,如果不被錄取,那么會在兩周內(nèi)收到拒信,因為被錄取的人是很少的,所以結(jié)果快一些,被拒絕的人是很多的,所以會晚一些。
遲到的百度offer
2號晚上快十點左右,我的QQ郵箱冒出提示,標(biāo)題為“百度校園招聘錄用通知書”,我知道我從九月二十四號持續(xù)一個多月的百度求職路程畫上句號了。雖然被調(diào)配了職位,但是幸運的時候仍然是軟件研發(fā)崗位,不至于太離譜吧。