百度三面(終面,六十分鐘)
軟件研發(fā)
照例印颤,先自我介紹。然后穿肄,面試官針對簡歷問了幾個無關痛癢的小問題年局。
接下來面試官問了 C++ 基礎題。重載和重寫的區(qū)別咸产,以及各自在編譯器中的實現(xiàn)方法矢否。我失誤的是,當時把重寫理解成了隱藏脑溢。所以回答第一個問題的時候可能會有些小問題僵朗。另外,在回答第二個問題時屑彻,我說我不知道重寫的實現(xiàn)方法验庙,只知道虛函數(shù)的實現(xiàn)。面試官說社牲,重寫的實現(xiàn)和虛函數(shù)的實現(xiàn)是一樣的粪薛。我當時還是沒反應過來我把重寫和隱藏概念理解錯了。雖然感覺回答的也差不多搏恤,但這一處失誤肯定也會產(chǎn)生一定的負面影響违寿。另外,由于我以為三面對技術的要求不會太深熟空,所以在解釋完虛函數(shù)的實現(xiàn)機制后藤巢,并沒有對指向虛函數(shù)的指針在對象構造、賦值等情況做進一步的解釋息罗。
再然后來就直接上手寫代碼了掂咒。第一題,有一個不重復的數(shù)組阱当,數(shù)組中的元素先增后減俏扩,在數(shù)組中找到特定元素。題目的要求是弊添,不允許找出“轉折點”元素。這道題不難捌木,使用折半查找的思想即可油坝。但是,我雖然知道應該用折半,但剛開始卻怎么也無法弄清楚題目可能出現(xiàn)的所有情況澈圈。我當時的心情無比煎熬彬檀,感覺時間過得很快,又感覺時間過得很慢瞬女,總之很是糾結窍帝,急出了一身汗。不停地在草稿紙上舉例分析诽偷,終于把題目可能出現(xiàn)的所有情況弄清楚了坤学。為了裝 X,我用了泛型迭代器和 traits 寫代碼报慕,并在關鍵的地方加了適當?shù)淖⑨屔罡 懞么a后給面試官看。面試官看了一會兒眠冈,說飞苇,代碼基本沒問題,但是可以做一個小小的優(yōu)化蜗顽。實際上布卡,優(yōu)化代碼我已經(jīng)寫了,但是考慮不周沒有寫上注釋雇盖,所以他沒看見忿等。我只好給他指出了代碼中的那一段優(yōu)化方案。
第二題刊懈,判斷兩棵二叉樹是否互為鏡像这弧。這道題是《劍指offer》中的原題。我說我做過虚汛,于是只簡單解釋了下解題思路匾浪,沒有寫代碼。
第三題卷哩,解析字符串蛋辈,得到以該字符串構建的樹的層級輸出。比如将谊,給出字符串:<a><b><c><c/><d><d/><b/><e><f><f/><e/><a/>冷溶。這代表 a 是一個包含兩個子節(jié)點 be?的樹;b 是一個包含兩個子節(jié)點 cd 的樹尊浓,等等逞频。并認為,a(根節(jié)點)為第 0 層栋齿、be?為第 1 層苗胀,依次類推襟诸。將這個樹按照層級輸出出來,輸出要求為:若結點 x 為第 k 層基协,則先輸出 k 個空格歌亲,再輸出 x 的字符。(即澜驮,在字符?a 前面應該輸出 0 個空格陷揪,在字符 f 前面應該輸出 2 個空格)并且,若 i 和 j 均在字符串中出現(xiàn)杂穷,且先出現(xiàn) i 后出現(xiàn) j悍缠,則應該先層級輸出 i,再層級輸出 j亭畜。(即扮休,應該先輸出字符 d 再輸出字符 e)上面給出的字符串,應該得到的層級輸出為:
題目很簡單拴鸵,面試官讓我寫偽代碼玷坠,于是寫了一下邏輯流程。由于“讀入一個字符塊”的這一段我寫的是偽代碼劲藐,于是面試官又讓我具體實現(xiàn)一下八堡。簡單溝通了一下后很快就寫好了代碼。
最后是我的提問環(huán)節(jié)聘芜。大概問了一下他的工作情況和對百度的看法兄渺。也沒什么特別的。
我的感受:
二面后自我感覺很一般汰现,但是竟然進三面了挂谍。我猜,只要不失誤瞎饲,保證自己能夠正常發(fā)揮口叙,每次面試都是有機會的。
編程題嗅战,如果面試官不是特別愿意和你一起討論解題思路妄田,那不妨自己在代碼中加上關鍵邏輯的注釋。注釋不用寫太多驮捍,但是比較關鍵的地方一定要寫疟呐。
三面,自我感覺也很一般东且。希望能過吧启具。