Android校招面經乾貨分享(頭條、快手、小米、美團)|掘金技術徵文

先說下我的狀況吧,雙非本科大四,基本從大一下學期開始自學Android,有美圖公司兩個月實習經驗,而後截止到如今面了頭條、小米、快手和美團。下面是本身整理的一些面經,基本我能回憶起來的都寫上了,但願能幫到你們。android

頭條四面(跪)

頭條這個是在校招提早批前大概兩週面的,很感謝學長給的內推機會,雖然最後玄學掛掉了,不過仍是很不錯的面試體驗。面試

一面

  • 層次遍歷二叉樹
  • 改變數組使其奇數在前偶數在後且相對順序不變
  • Activity四種啓動模式
  • 倆App的activtiy很奇葩的互相啓動來啓動去,而後依次按返回鍵判斷當前activity
  • 強軟弱虛四種啓動類型
  • Handler原理
  • EventBus源碼
  • 線程通訊
  • 廣播
  • 服務的分類
  • 如何與服務交互
  • 如何終止線程
  • 服務所在的線程
  • IntentService的原理以及好處

二面

  • Binder原理
  • 服務相關
  • 說說設計模式而且結合Android源碼解釋
  • OkHttp源碼深刻講解
  • 責任鏈模式
  • 事件分發
  • 以及幾個一面稍微重合的問題,就不寫出來了

三面

曠日持久的Leader面,問的問題是在太多,下面是我回憶起來的一部分。並且Leader面通常問一個問題會問的愈來愈深,知道你打不出來爲止。當時Leader還說我面的不錯,而後就給掛掉了。。。算法

計組

  • Arm與X86的區別
  • Android使用的是哪兒一個
  • RISC與CISC
  • 二者的優劣
  • 大小端問題
  • 原碼,反碼和補碼
  • 補碼的優點
  • 浮點數的表示
  • 浮點數的運算

計網

  • TCP與OSI相比少了哪兒幾層
  • 表示層和會話層的功能
  • TCP與UDP的區別
  • ARQ協議
  • 擁塞控制算法
  • 路由器與交換機的區別

編譯原理

  • 並無學過

軟件工程

  • 問了好幾個名詞,然而我都沒據說過

數據結構

  • HahMap的原理
  • 衝突,擴容等。。
  • Java中equal與hashCode的意義
  • 若是hashCode返回相同的值的後果
  • 若是equal返回true形成的後果
  • Set,Map講講原理

操做系統(問的很細)

  • 操做系統的功能
  • 進程與線程的區別
  • CPU調度的實現
  • 線程組成
  • TCB的組成
  • 線程怎樣映射到硬件實現
  • 線程同步
  • Sync與Lock的區別
  • Android多進程
  • 如何實現多進程
  • 多進程的必要性
  • 多進程通訊
  • 詳細講每種多進程通訊以及相應優缺點
  • 進程調度

Android

  • Glide源碼
  • Glide與其餘圖片加載框架的優劣
  • 三級緩存機制
  • Lru算法
  • 詳細講解Glide的圖片緩存

Hr面

  • 對頭條的見解
  • 談談短視頻的將來

快手二面(跪)

只能說快手的畫風清奇,難度很大。設計模式

一面+二面

  • 二叉樹交叉層次遍歷
  • Activity四種啓動模式
  • 任務棧相關
  • 消息分發
  • 如何使當前消息分發中止
  • EventBus扯很久,原理,優劣,使用場景
  • MVP,MVC,MVVM的對比,以及如何去改進
  • OkHttp源碼
  • Glide源碼
  • RxJava基礎
  • 手寫RxJava實現十個請求當請求所有完成打印輸出,如有錯誤打印中止請求,而且處理線程切換
  • 手寫AsyncTask
  • 事件分發機制
  • 如何實現一個不規則遮罩層實現遮罩層只蓋住一部分,而未遮住部分能夠響應事件(能夠有多種方法)
  • 自定義View流程
  • 如何自定義View實現隨着百分比改變View的背景顏色(例以下載進度百分之三十,左邊百分之三十是黑色,右面爲白色)
  • 跨進程相關
  • Binder原理

小米五面(offer)

一面+二面

  • 手寫快排
  • 最大子序列
  • Activity的四個啓動方法
  • Activity的生命週期
  • Fragment的生命週期
  • Fragment相比Activity有什麼優劣
  • Fragment和Activity的交互
  • Fragment的使用場景
  • 本地廣播的用法
  • 本地廣播的原理
  • 如何讓廣播只發送給特定的App
  • Intent如何傳遞大文件
  • Intent傳遞超出範圍的文件的後果
  • 如何傳遞大文件
  • 如何避免大圖片OOM
  • 圖片壓縮的原理
  • Glide源碼
  • 圖片的三級緩存
  • Lru算法
  • EventBus原理
  • RemoteView使用場景及其方法
  • RemoteView能使用的View的範圍
  • Notification可否使用自定義View以及緣由
  • RemoteView原理
  • 簡述事件分發機制
  • 事件分發中的方法名、方法參數以及不一樣的返回值的意義
  • ListView中如何使不一樣的Item加載不一樣的樣式
  • ListView中convertview的做用以及意義
  • RecyclerView與ListView的區別
  • 如何解決ListView異步加載圖片的問題
  • ContentProvider的用法,詳細到方法
  • 跨進程通訊的方式
  • AIDL原理
  • Binder原理,詳細到方法
  • 啓動一個Server和綁定Server的區別
  • 舉例Server和綁定Server的不一樣使用場景
  • IntentServer與普通Server的區別
  • IntentServer的使用場景
  • IntentServer原理
  • 如何保證Server不被殺死
  • 實現多線程的幾種方法
  • 幾種動畫
  • 如何本身去實現一個動畫,具體到方法
  • 屬性動畫的原理

一面和二面是連着的,而後面完以後面試官告訴我leader不在,讓我等消息。。。我當時還覺得掛掉了,還好幾天後接到了面試電話。不過話說一面二面的題量可真大。數組

三面

  • 兩個鏈表尋找交叉
  • 探討Json解析器的實現(詞法分析 語法分析 採用何種數據結構而且爲何等問題)
  • 圖片的三級緩存
  • MVC,MVP,MVVC區別
  • Android中使用MVP而不用MVC的緣由
  • 講解MVP(手寫代碼)
  • MVVM與DataBinding
  • 實現監聽手機拍照和截屏,悄悄地將一些數據隱藏進入圖片而且能夠經過圖片恢復數據

交叉面

  • Fragment與Activity的生命週期
  • Fragment在哪兒個生命週期方法調用後真正加入Activity,在哪兒個生命週期方法getActivity()返回null或者不爲null,爲何
  • 講一下實習中以爲比較不錯的東西
  • 如下是實習項目相關
  • 圖片壓縮
  • 圖片緩存
  • 高斯模糊
  • 高斯模糊動態效果
  • 以上是實習項目相關
  • 雙棧實現隊列
  • Java內存模型
  • GC算法
  • 項目中遇到的內存泄漏類型
  • 解決內存泄漏問題的方法
  • MAT
  • LeakCanary
  • Handler內存泄漏的緣由
  • 軟引用與弱引用
  • 虛擬機棧以及棧幀
  • Binder原理
  • Java中的同步方法
  • Sync與Lock的區別
  • Sync的原理
  • Lock的內部實現
  • AQS的內部實現
  • CAS
  • startActivity框架層實現
  • ActivityMamagerService
  • ApplicationThread

五面

  • 總監大大和你談人生

美團三面(offer)

一面+二面

  • 0~n求1的個數
  • n個點,要求畫一個圓,使其能夠覆蓋通常的點
  • Sql多表查詢
  • 消息分發機制原理
  • 線程通訊
  • 四種線程池的配置
  • 線程池內部實現
  • JMM
  • GC算法
  • 爲何要Stop The Wrold
  • 爲何屢次GC會卡頓
  • 內存泄露原理以及如何發現內存泄露
  • 自定義View
  • 舉例measureSpec在父佈局和當前佈局分別使用精確數值和matchparent和wrapcontent的時候分別是哪兒種Mode,裏面的數值又分別爲多少

三面

  • 基本都是開放題目,也沒什麼固定答案
  • 以及談談之後的工做

到這裏個人秋招基本已經結束了,但願這篇面經能幫到你們拿到喜歡的offer吧。緩存

附掘金秋招徵文大賽連接數據結構

相關文章
相關標籤/搜索