1. 程式人生 > >秋招百度Android面經

秋招百度Android面經

春招的時候錯過了百度,秋招的時候總算抓住機會。
百度筆試:線上筆試(賽碼網)的時間是在晚上7點,我實習下班是晚上6點,當時下班後我飛快地趕回宿舍開電腦,連晚飯都顧不上。實踐證明,餓的時候頭腦是最清醒的。拿下演算法題後,筆試應該可以通過。

百度一面

在下午上班的時候,我接到來自北京百度hr的電話,通知我參加現場面試(中間有個小烏龍,hr和我說面試時間是“下午9點”。面試當天上午9點的時候,面試官打電話給我說是上午面試,我汗。。。然後和麵試官約好換個了面試時間,改為下午5點半面試)。總的來說,一面側重考察基礎(Java、Android、資料結構與演算法、網路、作業系統、資料庫),流程走下來到問重點演算法的時候,只要求講清楚原理,沒要求寫程式碼。尾聲階段,面試官指出我的優缺點:基礎還可以,做應用開發是沒什麼大問題,但是底層瞭解不夠深入。他說以前學Android的時候,網上沒那麼多學習資源,都是看Google給的文件和程式碼學習的。最後和我說,最遲明天下午hr會通知結果給你,聽到這句話,我知道我應該通過一面了。

  1. 自我介紹

  2. 問簡歷上的專案
    (1)專案中你做了哪部分?
    (2)有沒用開源框架?用了什麼開源框架?為什麼要用這種開源框架?
    (3)講下ListView如何進行優化

  3. Android部分
    (1)view如何進行繪製?
    (2)Android中的執行緒瞭解多少?(AsynTask,Thread等的使用場景)
    (3)Android中一個程序對應一個dvm?一個Android應用對應一個dvm?
    (4)講下Android事件傳遞原理。
    (5)講下即時通訊機制。

  4. Java部分
    (1)講下Java四種引用。
    (2)講下Java基本型別與其封裝類?為什麼要用封裝類?
    (3)如何在多執行緒環境保證操作原子性?
    (4)講下JVM記憶體模型。
    (5)final用在哪些場景?有什麼作用?
    (6)finalize有什麼用途?
    (7)wait和sleep的區別?
    (8)講下繼承和多型。

  5. 資料庫
    (1)不用鎖的情況如何處理資料庫併發問題。
    (2)講下sql左右連線。

  6. 作業系統
    (1)linux多使用者登入看到介面為什麼不一樣?
    (2)什麼是死鎖?

  7. 資料結構演算法
    (1)講下各個排序演算法原理。
    (2)什麼是大頂堆?
    (3)講下二分查詢原理。

  8. 其他
    (1)EventBus的原理。
    (2)問面試官的問題。

百度二面

我以為百度二面是總監面,結果還是考察基礎。二面的面試官比一面的面試官要年輕些。最後手寫Code,我先講解題思路給面試官聽,然後他說解題思路ok就可以,不用寫,結果我還是耿直地寫完了。最後我還是讓面試官對我的面試作一次評價。他說我的基礎還可以,解演算法題的思路也很清晰,缺點還是和一面的面試官講的差不多,就是沒有很深入底層。

  1. 自我介紹

  2. Java部分
    (1)講下Java的四種引用。
    (2)講下JVM記憶體模型。
    (3)講下JVM的回收演算法。

  3. Android部分
    (1)講下Android的handler機制。
    (2)講下intent顯示和隱式啟動。應用A可以隱式啟動應用B的Activity?
    (3)講下Android桌面圖示機制。
    (4)講下view觸控傳遞機制。假如onTouchEvent都沒有返回true,最後被誰消耗了?
    (5)慣性滑動如何實現?
    (6)滑動衝突如何處理?

  4. 設計模式部分
    (1)你知道多少個設計模式?
    (2)寫個單例?

  5. 程式設計題
    (1)用sql語句進行聯表查詢。
    (2)求字串第一個只出現一次的字元。

  6. 其他
    (1)問面試官的問題。

百度三面

總監面,面試官是來自北京無人車部門。問的問題不多,側重考察面試者的綜合素質。

  1. 自我介紹和簡單聊聊專案

  2. 大資料演算法題
    (1)兩個包含上億個數字的檔案,找重複的數字。(分記憶體不足和足夠記憶體)分別寫出時間複雜度和空間複雜度?

  3. 網路部分
    (1)TCP的狀態?
    (2)寫下Http請求包結構?
    (3)Http有無狀態?Http如何儲存使用者狀態?
    (4)從北京傳資料到廣州,影響傳輸效率的因素有哪些?

  4. 資料庫部分
    (1)資料庫索引的有哪幾種實現?

  5. 資料結構
    (1)二叉樹如何序列化和反序列化?

  6. 其他
    (1)offer如何選擇?
    (2)工作地點如何選擇?
    (3)問面試官的問題?