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