秋招百度Android面經
春招的時候錯過了百度,秋招的時候總算抓住機會。
百度筆試:線上筆試(賽碼網)的時間是在晚上7點,我實習下班是晚上6點,當時下班後我飛快地趕回宿舍開電腦,連晚飯都顧不上。實踐證明,餓的時候頭腦是最清醒的。拿下演算法題後,筆試應該可以通過。
百度一面
在下午上班的時候,我接到來自北京百度hr的電話,通知我參加現場面試(中間有個小烏龍,hr和我說面試時間是“下午9點”。面試當天上午9點的時候,面試官打電話給我說是上午面試,我汗。。。然後和麵試官約好換個了面試時間,改為下午5點半面試)。總的來說,一面側重考察基礎(Java、Android、資料結構與演算法、網路、作業系統、資料庫),流程走下來到問重點演算法的時候,只要求講清楚原理,沒要求寫程式碼。尾聲階段,面試官指出我的優缺點:基礎還可以,做應用開發是沒什麼大問題,但是底層瞭解不夠深入。他說以前學Android的時候,網上沒那麼多學習資源,都是看Google給的文件和程式碼學習的。最後和我說,最遲明天下午hr會通知結果給你,聽到這句話,我知道我應該通過一面了。
自我介紹
問簡歷上的專案
(1)專案中你做了哪部分?
(2)有沒用開源框架?用了什麼開源框架?為什麼要用這種開源框架?
(3)講下ListView如何進行優化Android部分
(1)view如何進行繪製?
(2)Android中的執行緒瞭解多少?(AsynTask,Thread等的使用場景)
(3)Android中一個程序對應一個dvm?一個Android應用對應一個dvm?
(4)講下Android事件傳遞原理。
(5)講下即時通訊機制。Java部分
(1)講下Java四種引用。
(2)講下Java基本型別與其封裝類?為什麼要用封裝類?
(3)如何在多執行緒環境保證操作原子性?
(4)講下JVM記憶體模型。
(5)final用在哪些場景?有什麼作用?
(6)finalize有什麼用途?
(7)wait和sleep的區別?
(8)講下繼承和多型。資料庫
(1)不用鎖的情況如何處理資料庫併發問題。
(2)講下sql左右連線。作業系統
(1)linux多使用者登入看到介面為什麼不一樣?
(2)什麼是死鎖?資料結構演算法
(1)講下各個排序演算法原理。
(2)什麼是大頂堆?
(3)講下二分查詢原理。其他
(1)EventBus的原理。
(2)問面試官的問題。
百度二面
我以為百度二面是總監面,結果還是考察基礎。二面的面試官比一面的面試官要年輕些。最後手寫Code,我先講解題思路給面試官聽,然後他說解題思路ok就可以,不用寫,結果我還是耿直地寫完了。最後我還是讓面試官對我的面試作一次評價。他說我的基礎還可以,解演算法題的思路也很清晰,缺點還是和一面的面試官講的差不多,就是沒有很深入底層。
自我介紹
Java部分
(1)講下Java的四種引用。
(2)講下JVM記憶體模型。
(3)講下JVM的回收演算法。Android部分
(1)講下Android的handler機制。
(2)講下intent顯示和隱式啟動。應用A可以隱式啟動應用B的Activity?
(3)講下Android桌面圖示機制。
(4)講下view觸控傳遞機制。假如onTouchEvent都沒有返回true,最後被誰消耗了?
(5)慣性滑動如何實現?
(6)滑動衝突如何處理?設計模式部分
(1)你知道多少個設計模式?
(2)寫個單例?程式設計題
(1)用sql語句進行聯表查詢。
(2)求字串第一個只出現一次的字元。其他
(1)問面試官的問題。
百度三面
總監面,面試官是來自北京無人車部門。問的問題不多,側重考察面試者的綜合素質。
自我介紹和簡單聊聊專案
大資料演算法題
(1)兩個包含上億個數字的檔案,找重複的數字。(分記憶體不足和足夠記憶體)分別寫出時間複雜度和空間複雜度?網路部分
(1)TCP的狀態?
(2)寫下Http請求包結構?
(3)Http有無狀態?Http如何儲存使用者狀態?
(4)從北京傳資料到廣州,影響傳輸效率的因素有哪些?資料庫部分
(1)資料庫索引的有哪幾種實現?資料結構
(1)二叉樹如何序列化和反序列化?其他
(1)offer如何選擇?
(2)工作地點如何選擇?
(3)問面試官的問題?