百度面試初步總結

7月22日中午終于等來了百度的面試通知,約在25日下午3點在百度科技園2號樓。
25日下午1點10分從所里出發(fā),到知春路坐地鐵,西二旗下地鐵,本來想走過去,卻發(fā)現(xiàn)西二旗到百度科技園還有很長一段距離,于是叫了個出租過去了。到地方是2點15分,等到了2點45分前臺登記了下,說面試的小哥會下來接我。等了沒多久,小哥下來跟著上了5樓。面試開始。

一面

一面的小哥還是比較nice的,一起上樓梯時還問我怎么來的等等,到面試的會議室還給我接了杯水,確實很nice。然后面試開始,我?guī)Я撕啔v給了小哥一份,然后小哥讓我介紹一下自己參與最多的一個項目,然后我跟他講了講自己目前做的一個項目。之后小哥針對項目中的一些點問了問我,我都一一回答。我覺得這段因人而異,主要問你項目中用到了一些知識點,以及你解決項目中問題的思路,所以簡歷的上的寫的項目上的一些點一定是自己熟悉的,而且也要盡可能的讓面試官理解。之后小哥就給我出了2道算法題,其實都不難。
*** 1, 給定一由空格和一些單詞組成的字符串,讓實現(xiàn)字符串的翻轉,但單詞內的字符順序不變。***
這道題其實很簡單,相信大家一聽也會立馬有思路,所以我也一樣,我就說直接用空格分割然后把分割出的單詞倒序累加起來。

這樣比較耗資源,字符串之間的+還是比較耗資源的。有沒有其他辦法?

于是我就又想了想,發(fā)現(xiàn)其實這是一個字符串的翻轉的變型,于是對小哥說我們可以從頭到尾遍歷這個字符串,然后遇到一個單詞進行翻轉,當所有的單詞翻轉完成后再對這整個字符串進行反轉。

嗯,思路是對的,那你用代碼實現(xiàn)一下吧

于是我就按照那個思路寫了寫代碼,寫的過程忽然意識到一個問題,就是單詞之間的空格數(shù)不知道是多個(1個的話用if判斷,多個的話就得用while循環(huán)了),于是就趕緊問了問小哥。

不固定,可以是一個也可以是多個

好吧,于是我就趕緊又改了改(之前以為只有1個),寫完后檢查了下就拿給小哥看了看。

你這個如果第一個字符是空格的話就不對了

額,我趕緊說我默認這個字符串第一個字符不會是空格(??)。

那你把這個考慮進行去吧

于是我又改了改代碼。隨后小哥又看出來我的代碼最后一個字符如果不是空格時會漏處理,于是我又加了個判斷語句(??)。之后小哥看了看說沒有問題了。

*** 2, 不要用* /符號實現(xiàn)a/b。***
這個題目第一直覺就是用減法,所以我就說用減法,然后小哥指出來說如果a很大,而b很小,這樣其實是比較慢的,讓我再想想。我想了會說可以用遞歸,每次將a二分,然后累加兩半的商。小哥聽了說這個可能會有問題,如果7/2,按照二分就是(3/2)+(3/2)!= 3并不能保證解的正確性。然后他說讓從如何減少減法運算來考慮。我心想既然a變小不行那就b變大唄,于是我又想了想就跟小哥說可以把b先按照指數(shù)級遞增直到a - 2^k * b < b(代碼中使用b的左移代替*),然后小哥說還有沒有其他情況,于是又想了想說如果a - 2^(k+1) < 0那么說明a/b的商在2k到2(k+1) 之間,那就再遍歷吧。說完我就笑了笑說k很大時也不行,小哥說對的,然后跟我提示了下說如果再用(a-2k)去除b得到的商然后加上2k是不是就是a/b的商了,我笑了笑說是的。然后就讓我繼續(xù)寫代碼,剛寫沒多久,小哥說時間差不多了,就沒讓我寫了,就問我有沒有其他問題,我就問了問部門做的東西,組織架構啥的,小哥也跟我談了談。最后跟我說去聯(lián)系下二面的面試官,讓我等一下。聽到還有二面我心里還是挺開心的,說明還有戲,其實總結一下,這兩題缺失都不算很難,主要的是要把邊界以及邏輯搞清楚,看來還得多練啊,不過小哥確實比較nice,中間還給提示一些內容。
之后小哥回來說二面的面試官還在面,需要等1小時。。。
于是我就和小哥又繼續(xù)等了一小時,中間又和小哥扯了扯別的。。

二面

等了1個小時左右二面的面試官終于到了,然后遞給他簡歷,感覺第二個面試官沒有第一個面試官愛說,由于第二個面試官問的較多而且有點碎,下面我就直接列出來了。

  • 首先還是項目,讓我介紹項目,以及項目中的思路。
  • 你對機器學習哪些算法比較熟悉?
  • 你對EM算法了解么?(這個我還不太了解,只是聽過,于是我就直接說不了解??)
  • 講一下k-means的流程?
  • 有哪些因素會影響k-means的聚類效果?
  • 講一下map-reduce流程。
  • 任務執(zhí)行過程中的map階段,如果一個節(jié)點掛掉會怎么辦?
  • shuffle的作用?
  • Hadoop里你覺得最復雜或者最難的是哪一點?
    之后是4道算法題,都是常見的,第一個就是問我寫過排序沒,我說寫過,他說那你寫一下快排吧。然后又說你對c熟悉么,我說一般吧。。他說你用c寫吧??。其實我簡歷上寫的是熟悉java,python。。刷題也都是用java寫。。所以當時只能硬著頭皮寫了。。
  • 寫一下快排。(寫完后他也不要我講,就說我先看著,你先寫一個。。。)
  • 尋找鏈表中倒數(shù)第k個節(jié)點。
  • 找出二叉樹中兩個節(jié)點的最低公共祖先。
    其實這3題只要刷過題的人都見過的,所以應該不算難,第三題我是用尋找兩個鏈表中共同的節(jié)點的思路實現(xiàn)的,他說這樣會耗費空間,如果用遞歸會好一點。
  • 一個數(shù)組,又n個元素,每個元素是1-n之間的數(shù),讓你用o(n)的時間復雜度和o(1)的空間復雜度打印出數(shù)組中每個元素出現(xiàn)的次數(shù)。
    這個題我已開始聽錯了,于是就說直接用一個數(shù)組當hash表,他說空間復雜度是o(1)...之后我又想了一會確實沒想出來。。所以這個題就沒搞出來。他說這個題其實是個智力題,之前的幾個面試的人也都沒做出來,讓我不要又壓力。。于是又繼續(xù)問其他問題了。。后面的問題就偏操作系統(tǒng)了,他先問我對linux熟悉么?我說還行。下面括號里面是我當時答得。
  • 如何根據(jù)一個服務進程的端口號找出這個進程。(service -all | grep 8080)
  • 一個文件每條記錄有10列,第9列是整型數(shù)據(jù),找出該列的最大值。(cat file.txt | awk -F ' ' {$9} | sort | tail -1)
  • 進程之間的通信方式
  • TCP協(xié)議的三次握手(這個記不清了,就大致跟他描述了下)

差不多問了這么多吧,之后面試官說時間已經(jīng)比較晚了(當時已經(jīng)差不多6點40了),就又問我有沒有其他問題,我看也這么晚了也不能耽誤人家吃飯。。就隨便又問了下組織架構(當時也確實不知道問啥了。。和上一個小哥聊了那么多。。。),然后他說完,我就說我也沒什么問題 了,這么晚了,就不占用您太多時間了。之后面試官就說這么晚了也沒辦法找人3面了,你先回去吧,那個人如果有時間再通知你。
所以到底會不會有3面。。
期待3面吧。

暫時總結下吧,首先項目上面我覺得還是得熟悉你的項目,要對你簡歷上寫的內容認識特別清晰,這樣才不會被面試官問倒。其次,其實面試中的算法題都不算太難,甚至都是原題,但要現(xiàn)場寫出完整的代碼還是不太容易,所以平常要多練。最后,操作系統(tǒng),linux,網(wǎng)絡這些基礎的東西不能丟,也要多復習多背背。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容