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