對(duì)于2015年的百度校招,我投的是移動(dòng)研發(fā),北京的崗位,筆試時(shí)間是9月21日,截至到9月26日三面全部結(jié)束。經(jīng)理面留下了我的簡(jiǎn)歷,究竟是否通過(guò)還得看百度的結(jié)果了,總結(jié)一下,百度的題有一個(gè)特點(diǎn):考的很細(xì)甚至細(xì)到一行代碼,一個(gè)變量的命名。
分析一下百度的筆試,三道問(wèn)答題:
1.問(wèn)答題:
1)TCP/UDP的區(qū)別,以及各自在應(yīng)用層的協(xié)議舉例。
2)Android/IOS 中固化數(shù)據(jù)的方式。
3)下面這個(gè)函數(shù)的缺陷:(這個(gè)有點(diǎn)想不起來(lái)了,好久不研究 了,印象不深刻了)
char * initMem(char *p)
{
p=(char *)malloc(100);
return p;
}
void test()
{
char *p=null;
initMem(p);
printf(p);
}
2.編程題:
1)用C/C++實(shí)現(xiàn)字符串的反轉(zhuǎn)。
2)(1,2,3(4,5,6),7,8)打印出1,2,3,4,5,6,7,8,即去括號(hào),若出現(xiàn)括號(hào)不匹配,標(biāo)識(shí)錯(cuò)誤。
3)分別實(shí)現(xiàn)二叉查找數(shù)root中兩個(gè)節(jié)點(diǎn)的最近相連的雙親節(jié)點(diǎn):遞歸,非遞歸函數(shù)。
4.系統(tǒng)設(shè)計(jì)題:
是一個(gè)基于終端上的LBS+IM功能的架構(gòu)設(shè)計(jì),包括四個(gè)功能:
1)用戶打開(kāi)LBS服務(wù)
2)用戶通過(guò)短信or 微信邀請(qǐng)好友加入LBS
3)用戶查詢打開(kāi)LBS的用戶;
4)用戶選擇LBS用戶并發(fā)送IM 文本or 語(yǔ)音信息。
劃出架構(gòu)設(shè)計(jì)圖、功能圖,分析這樣設(shè)計(jì)是如何考慮的。
http://blog.csdn.net/aa747604141/article/details/11882165
第一道基本都會(huì),只要計(jì)算機(jī)專(zhuān)業(yè)基礎(chǔ)課程好好復(fù)習(xí)了沒(méi)啥問(wèn)題,
第二題考的是Android的,這個(gè)估計(jì)得靠自己做過(guò)并且總結(jié)了。
第三道考的是對(duì)一段函數(shù)的評(píng)價(jià),(這個(gè)我做的也不好,長(zhǎng)時(shí)間不搞C了,指針實(shí)在是不敢亂用?。┪抑饕P(guān)注的是健壯性以及是否浪費(fèi)空間這兩層。
三道編程題,這個(gè)就不說(shuō)了,如果自己寫(xiě)過(guò)很多代碼,注意代碼的整潔性和健壯性應(yīng)該問(wèn)題不大,而且近幾年好像沒(méi)咋考過(guò)很難的算法,足見(jiàn)百度是更注重基礎(chǔ)的。
系統(tǒng)設(shè)計(jì)題,靠個(gè)人分析了,今年踩了個(gè)狗屎運(yùn),IM+LBS是我的畢設(shè),把我做的項(xiàng)目的體系結(jié)構(gòu)劃了劃,說(shuō)了說(shuō)劃分模塊,設(shè)計(jì)模式選擇的理由。
我是第二天早晨的一面。一面考察的比較多的是我的項(xiàng)目細(xì)節(jié),這個(gè)我想只要是自己做的應(yīng)該都沒(méi)啥問(wèn)題。我是搞Android的,這個(gè)面試官明顯是個(gè)Android的高手,聊天時(shí)候就感覺(jué)到了,隨后就是Android,從四大組件,到生命周期,再到數(shù)據(jù)持久化,最后又談了談我的項(xiàng)目中某一塊如果現(xiàn)在要我改進(jìn)我怎么樣重構(gòu)代碼。(因?yàn)檠幸粫r(shí)候android剛接觸,也沒(méi)弄過(guò)service,好多耗時(shí)的任務(wù)也是用thread寫(xiě)的,所以我說(shuō)了說(shuō)service),他就問(wèn)了問(wèn)service如何啟動(dòng)/停止,其中的數(shù)據(jù)怎么和Activity通信。最后,叫我寫(xiě)個(gè)程序:
兩個(gè)線性表合并成一個(gè)線性表。
面試官需求很不明確,很多條件都沒(méi)說(shuō),我沒(méi)敢立刻下筆,趕緊問(wèn)了問(wèn)特殊性,果然在我再三確定之下,他說(shuō)出了題目要求:A、B是兩個(gè)遞增的線性表,我們需要合并兩個(gè)線性表并保持單調(diào)遞增。
OK,題目很簡(jiǎn)單,可是明顯考官考的不是你的代碼怎么實(shí)現(xiàn),而是你思考的過(guò)程。在寫(xiě)代碼之前,我考慮了6中測(cè)試用例,并和考官說(shuō)了說(shuō),然后才開(kāi)始寫(xiě),并在寫(xiě)的過(guò)程中告訴考官哪段代碼可以通過(guò)某個(gè)測(cè)試用例。主考官點(diǎn)了點(diǎn)頭,在計(jì)算機(jī)上寫(xiě)了些什么,叫我下去問(wèn)HR還有啥后續(xù)安排。一面挺高興的,感覺(jué)把我這一年多做的項(xiàng)目的很多細(xì)節(jié)都和面試官交流了,而且有些自己的問(wèn)題咨詢了他,他還給了我解決方案,收獲也不少。
第二天下午,也就是24號(hào)下午收到了二面通知。這期間我上午我又參加了TX的一面,待我后續(xù)再聊TX的。很遺憾的是,百度和TX的二面沖突了....無(wú)奈之下,我毅然選擇了百度,因?yàn)楦杏X(jué)百度很實(shí)在,在面試的時(shí)候愿意傾聽(tīng)你的想法。
二面是25號(hào)的下午。這次二面估計(jì)得有一個(gè)半小時(shí),總之二面出來(lái)的時(shí)候感覺(jué)把腦細(xì)胞全殺完了。這個(gè)面試官明顯不是那個(gè)搞技術(shù)細(xì)節(jié)的人了,問(wèn)的就是偏理論、偏語(yǔ)言細(xì)節(jié)了。同樣,先是自我介紹,介紹的過(guò)程中考察個(gè)人項(xiàng)目經(jīng)驗(yàn)細(xì)節(jié)。隨后就是基礎(chǔ)知識(shí)考察:《數(shù)據(jù)結(jié)構(gòu)》、《操作系統(tǒng)原理》、Java的String(經(jīng)常在群里給別人解答疑問(wèn)對(duì)這塊很有幫助,正所謂無(wú)心插柳柳成蔭是也!)、ArrayList/HashMap的源代碼實(shí)現(xiàn)細(xì)節(jié)(這里面,得虧我沒(méi)事喜歡研究研究源碼,對(duì)ArrayList源碼認(rèn)真讀過(guò)幾遍,把很多細(xì)節(jié)都說(shuō)出來(lái)了,引起了他的興趣,呵呵榮幸啊)。
最后寫(xiě)了2個(gè)算法,一個(gè)是動(dòng)態(tài)規(guī)劃的算法,一個(gè)是大數(shù)據(jù)取中間值的算法,第一個(gè)很簡(jiǎn)單。不說(shuō)了,第二個(gè)是在和他商量和指引之下寫(xiě)出的。面試結(jié)束后,他叫我問(wèn)他問(wèn)題。我說(shuō),實(shí)事求是的說(shuō),我的基礎(chǔ)不好,數(shù)據(jù)結(jié)構(gòu)和操作系統(tǒng)原理很多東西我都只是了解而已,您能不能給我一個(gè)評(píng)價(jià)呢?他也評(píng)價(jià)了一下。我說(shuō),我能看出百度的招聘確實(shí)要求很高啊,很多東西如果不是自己真正去認(rèn)真實(shí)踐過(guò),真的說(shuō)不出來(lái)。他開(kāi)始陷入沉思,對(duì)是否叫我過(guò)二面有點(diǎn)糾結(jié)。(估計(jì)是在基礎(chǔ)薄弱和面向?qū)ο蠡A(chǔ)還不錯(cuò)之中抉擇吧)。最后,好,這樣吧,你下去問(wèn)問(wèn)HR吧,看后續(xù)如何安排?。ú恢肋@是不是潛規(guī)則)
那天晚上其實(shí)都開(kāi)始準(zhǔn)備放棄了,估計(jì)沒(méi)戲了,誰(shuí)知道半夜居然收到了3面的通知。真是意外啊。26號(hào)下午1點(diǎn),再次來(lái)到了唐城賓館。三面的面試官明顯比1、2面的年紀(jì)大不少,應(yīng)該是個(gè)總監(jiān)之類(lèi)的,很和藹,有一種叫人猜不透的眼神。這一面終于沒(méi)再問(wèn)技術(shù)了。面試的過(guò)程中也很融洽,
他先問(wèn)了問(wèn)我的經(jīng)歷,和這些年比較成功、叫自己難忘的經(jīng)歷。我給他講了講當(dāng)年考研三跨的痛苦經(jīng)歷以及讀研期間如何拼搏的經(jīng)歷說(shuō)了說(shuō),以及我選擇軟件這行的原因說(shuō)了說(shuō)。
然后他又抓住我讀研期間問(wèn)我是怎么學(xué)習(xí)的,讀了哪些書(shū)?我就把BOB大叔的《Clean Code》、《程序員的職業(yè)素養(yǎng)》這兩本書(shū)給他說(shuō)了說(shuō),覺(jué)得和這幫人比,自己慘不忍睹啊...他又問(wèn)了問(wèn)在實(shí)驗(yàn)室期間很導(dǎo)師和同學(xué)怎么相處的。我給他說(shuō)了一些給導(dǎo)師做項(xiàng)目期間導(dǎo)師關(guān)心我的事,和同學(xué)在項(xiàng)目上有爭(zhēng)執(zhí)靠數(shù)據(jù)說(shuō)話的事,他都點(diǎn)了點(diǎn)頭。
最后問(wèn)了下,如果你下半年來(lái)百度上班,你怎么規(guī)劃剛?cè)肼毮前肽昴??其?shí),大家都應(yīng)該知道,無(wú)論你在學(xué)校在NB,獲得啥ACM大賽,在百度這樣的大公司面前,剛?cè)ヒ欢ǖ孟蛞粔K空的海綿一樣去了。我的回答是:間接經(jīng)驗(yàn)。我知道百度剛?cè)r(shí)候會(huì)有一位師傅帶我,我會(huì)爭(zhēng)取一切可用的時(shí)間去跟他學(xué)習(xí)技術(shù),學(xué)習(xí)良好的編程習(xí)慣。問(wèn)問(wèn)同事們平時(shí)讀什么書(shū),比較好的自己讀一讀。
對(duì)了,他還問(wèn)了我有多少offer了,問(wèn)我昨天問(wèn)啥沖突了來(lái)百度不去TX,然后改我問(wèn)他了,我問(wèn)了這樣幾個(gè)問(wèn)題:
1.您能不能簡(jiǎn)單評(píng)價(jià)一下我,就算今天面試失敗了,我想知道我據(jù)百度還有多遠(yuǎn)呢?
2.能不能給我講講您畢業(yè)的經(jīng)歷,激勵(lì)一下我們這些小輩?
3.本科生和研究生剛?cè)肼氂猩秴^(qū)別呢?
面試結(jié)束了,他留了我的簡(jiǎn)歷,問(wèn)我下去問(wèn)問(wèn)HR還有啥事沒(méi)?
Now,結(jié)束了
總體評(píng)價(jià)一下,百度的這次經(jīng)歷,是第一次讓自己覺(jué)得挺滿意的面試,之前很多面試所避諱的東西都注意到了。期待能拿到offer吧,畢竟,“簡(jiǎn)單,可依賴”,可依賴不是那么好做到的?。?/div>