百度2012暑期實習麵經(自動化平台研發)
轉載請注明出處:https://blog.csdn.net/zbf8441372
昨天上午進行的筆試,昨天下午收到了通知,約了今天下午麵試。職位是北京的自動化平台研發工程師(和運維部關係比較密切)。開始說是下午兩點,由於我下午一點要開會,就推遲到了三點。麵試地點在學校周邊1.7公裏開外的快捷酒店裏。
由於我拖延了一小時,覺得不好意思,於是下午兩點半就提前到了約定的房間,門開著,裏麵是一位胖胖的麵試官。他問我是幾點的麵試,我說是三點。於是,我以為他不是我的麵試官。不過閑著也是閑著,就和他聊了起來,後來才發現,這也算是一輪麵試,隻是他在等別的時間段的人,我提前進去被麵了。= =
這第一麵也許應該本來是第二麵,聊的是簡曆的內容,包括其他雜七雜八的話題,哈哈。總結幾點吧。
1. 我自我介紹說了對hadoop的實踐和對lucene做搜索引擎的經驗,簡曆上也寫著。於是就先聊起了hadoop。叫我描述下hadoop整套東西,原理。我就根據幾個主要hadoop家族成員和Google的三駕馬車說了些,並且自己用zookeeper做過分布式協調器,也在自己本本和服務器上搭建過hadoop環境。他也會具體問namenode的問題,我就說了些搭建過程中這貨老出一些問題的經曆。他還問HDFS文件節點,我好像自己先說64M,然後他問為什麼是64M。我把zookeeper的1M節點記混了,就在64M和1M間說不準了,他就問我應該設計幾M好,為什麼,可以改變嗎等的問題。從效率,性能等考慮,我們就這一問題聊了幾分鍾。之後還具體聊了zookeeper相關的事,我就我所知的一些原理和自己的zookeeper偽集群說了一遍。
2. 好像還和我聊了我簡曆上關於網站開發PM的經曆,好像談到了現在做的搜索引擎的後台技術struts,ajax,jquery等等,不過J2EE的東西我不敢扯開去,一是覺得職位無關,二是怕被人家鄙視,你丫的不就做網站嗎。
3. 簡曆上提到了NoSQL,他就問了我。我說了些我熟悉的NoSQL。他問我NoSQL存什麼的,能幹嘛。我就說存非結構化數據,不同的NoSQL存儲不同層次級別的數據,麵向不同類型的計算要求和存儲需求,就沒多說了。
4. 他問我為什麼報這個職位,也好像是我自己主動說的,我問了運維部的事。之後他向我解釋了運維開發工程師和自動化平台研發工程師的區別和工作,我就我理解的和他聊了會。他問我覺得自己適合哪個職位。我說自動化平台研發工程師。因為運維開發的話和硬件,係統打交道更多,DBA什麼的職責也包括進去了。
5. 聊了在校成績,學習方麵的事情。這時候就扯開了,他也很隨和地鼓勵說都是過來人,blablabla。應試什麼的,blablabla。
快三點了,我就被安排到另一間房間去接受本來三點的那位麵試官的麵試。直接說重點吧。
1. 考官熟悉的語言是C和C++,我的語言是java,所以他說語言直接過了。和他聊得最多的事搜索優化的問題。這個問題來自我現在的搜索引擎的demo裏索引量,昨天晚上問了小馬哥那邊索引的情況,建了一個10G的索引,lucene還是完全能承受的,於是我就把這也說了。當然在百度眼裏,真是小的不能再小了。於是開始了索引查詢優化的問題。先讓我處理10T的索引,然後是給我10台,100台服務器,怎麼架構,怎麼優化,怎麼查詢,怎麼分配,層層地問。我的回答包括:將10T索引分布式存在10台機器,索引不冗餘的情況怎麼怎麼樣,索引適當冗餘存放怎麼怎麼樣;搜索任務部署的時候,用zookeeper對集群負載做監控,怎麼監控,怎麼部署一個query,結果合並什麼的;怎麼給索引做備份,將服務器分批存幾套索引,交錯查詢之類的(很多性能的問題我還沒來得及遇到,也可能完全沒有機會遇到,隻能憑我理解一步步暢想);zookeeper怎麼搭建,怎麼選擇,我還新想了個二層的zookeeper協調器,其實就是加master的熱部署服務器,他就問我如果master當掉會怎麼樣,我說集群就掛了(看他眼神難道集群沒事?),然後說master對follower的意義,自圓了下。問題討論了很久,最後他說,你在簡曆上說hadoop,你怎麼沒在搜索方案裏提到hadoop?我確實隻熟悉zookeeper,其他的看過,印象不深,來之前也沒好好看,就用HDFS扯了下,應該不算是個回答。
2. 比較好的是最近這段時間都在做搜索,昨天半夜正好準備了下lucene in action 的第11章,性能優化。所以在上麵的問答中,我一一列舉了在改變搜索架構之前,怎麼樣做到性能最好,包括硬件之類的。多線程搜索啊,維護一個searcher池避免開銷啊,運用NoSQL存取減少I/O開銷啊(我沒查過,但是我想提出這樣的一種不同於文件係統的讀取方式)等等的優化方案。他告訴我,lucene永遠是個單機的東西,設計之初就是如此。我想想也是,lucene的別的分布式方式其實都是有限的。
3. 在談職位的時候,我之前有從第一位麵試官那聽到些,就和他也聊了會。之前的麵試官也告訴我百度搜索的一些情況,那也是我問的。
4. 聊數據結構的時候,問了我排序有哪些,我就說了一些。他說你說英文的啊,我說我上課的時候教的是英文,嘻嘻。做了一個算法題目,可能是他由排序聯想到的,因為聊到了真假隨機數的問題,題目很簡單吧,可能是因為我是個偏工程的選手。我剛開始是腦子裏空空的,畢竟聊了那麼久,思維在工程上,但是一拿筆,寫下public,思路就來了= 。=前前後後重寫了三次,我寫完,他讀完,(java的一些數據結構接口他是不熟的),然後指出問題,我提出修改方案,說到本質處他會說good,我再改,過程還是很棒的體驗,很久沒有這樣的感覺了。之後沒有時間了,因為之前聊的多,就沒有再做題了。
5. 最後問我還想了解什麼。我就問了一些基本素質的問題。他說本科生在他們看來就一張白紙,blablabla,不怎麼看本科生項目經曆的,很多是沒有項目經曆,如果是研究生,blablabla。然後我還是追問了之前索引優化的問題,希望在我之後的搜索工作中得到提點。他簡單說了些,好像也不想再深入說了,百度十幾年前可能用過lucene,無非就是正排轉倒排。他說lucene永遠是個單機的東西,設計之初就是如此,他們的設計是先有一個能做分布式搜索的集群,再進行考慮建索引等的其他工作。還提到了每個服務器上自己做正排轉倒排任務,我想多了解下,他說想法很多的嘛,笑了笑也不深聊了。一個禮拜內出是否三麵的結果。
我還是闡明了我對搜索和hadoop的興趣,不過這個職位並不是搞這個的。貌似軟件開發有可能會有這個職位?但是,運維的話是了解掌握整套服務的,開發完的服務,整條流水線吧,都是丟給運維來保障的,差不多這個意思。運維部是我內心真正想學到知識的場所,這是一個美麗的夢想啊。
剛打電話來,進三麵了,明天再戰。
最後更新:2017-04-02 17:51:23