
作者:海寶
面試經歷
面了一些上海互聯網公司,例如愛奇藝,阿里巴巴,京東,某安,百度,喜馬拉雅,得物等等,記錄了部分面試真題,大部分可以自行搜到答案,有疑問的可以留言交流~
【愛奇藝】一面
- 自定義view
- Handler機制
- 組件化和插件化
- HashMap的原始碼
- retrofit和okhttp的原始碼用到了哪些設計模式
- NDK靜態庫和動態庫編譯流程
- openGL渲染模式
- Android中的影片有哪些它們之間的區別
- 談談mvvm
【愛奇藝】二面
講之前做的專案負責哪塊,根據業務采用什么架構、使用過哪些設計模式,專案中遇到哪些棘手的問題,如何解決的,
【愛妻藝】三面
這個是hr說,整體問下以前公司的情況等問題
阿里音視頻開發崗

【阿里一面】
1.MediaCodec連環炮:MediaCodec報錯,只有錯誤碼,沒有任何其它資訊,如何解決?使用MediaCodec遇到了哪些問題?同步使用和異步使用有什么區別?
2.如何計算音頻幀,一幀音頻幀有多大
3.YUV基礎知識,相比于RGB減少了多少空間,YUV 各個分量都是0實際渲染出來是什么顏色的,NV21和NV12有什么區別
4.MP4是如何存盤音視頻檔案的,它是什么結構
5.OpenSL 相關的問題,如何使用,可以干什么不可以干什么
6.結合專案問題
【阿里二面】
1.SurfaceView和TextureView區別
2.OpenGL ES相關問題,MVP矩陣左乘和右乘有什么區別,什么是外部紋理,為什么叫外部
3.OpenGL如何渲染一個View
4.VBO是用來干嘛的解決什么問題
5.結合專案問問題
【阿里三面】
1.專案是什么架構,如何設計的,為什么這么設計
2.演算法題:字串反轉
3.平時如何學習的
【京東一面】
1.簡述LinkedHashMap原始碼實作
2.說下Handler流程
3.handler用于執行緒間通信,怎么保證執行緒安全
4.界面有個Button,手指放上去慢慢移到Button外的區域,描述事件分發的流程
5.說下View的繪制流程,包括渲染和繪制
6.演算法 兩個單鏈表合并成有序鏈表,說下思路
7.組件化的實作,WMRouter呼叫其他模塊的對應方法怎么實作的
【京東二面】
完全忘了
【京東三面】
1.問專案細節,你主要負責的模塊,怎么設計
2.演算法 N宮格,從左上角A出發只能向右或者向下走,求所有不同路徑的條數總和,手寫偽代碼(用遞回就可以)
【京東四面】
1.平時的上下班時間點
2.有沒有使用過咱們的app,有什么建議
3.前面的3次技術面有什么感受
4.職業規劃
【京東HR面】
1.平時的上下班時間點 balabala
【某安一面】
1.多執行緒同步有哪些方式
2.sycnized和lock區別,分別用于什么場景
3.執行緒池原理
4.執行緒池拒絕策略怎么自定義
5.怎么實作執行緒加入執行緒池的優先級
6.volatile底層原理?是否執行緒安全
7.死鎖怎么發生?怎么防止死鎖
8.介紹下apm,怎么捕獲crash和native crash?騰訊matrix怎么統計app啟動時間,頁面加載時間
9.gc回收演算法有哪些?分別用于什么場景
10.jvm有哪些區域?堆疊的作用
11.演算法 三數之和
【某安二面】
1.問專案 httpdns相關:為什么要httpdns?怎么處理握手問題,ip直連能否避免dns挾持?
2.問專案 首頁彈窗優先級
3.做過哪些記憶體優化
4.怎么全域捕獲app所有例外,并且保證app不崩潰,不卡死
5.如何獲取app的所有執行緒資訊
6.怎么查找anr
7.安卓有哪些行程間通信?為什么使用binder?mmap發生在哪個階段?怎么找到目標行程
8.leakcanary怎么檢測記憶體泄露的
9.演算法 兩個堆疊實作一個佇列
【某安三面】
1.gradle生命周期,怎么自定義插件
2.統計編譯耗時插件,運行在哪個階段?
3.描述從編譯到apk的程序,以及gradle有哪些task參與其中
4.如何實作位元組碼插樁
5.子執行緒更新ui會報什么例外?從哪里拋出來的
6.子執行緒怎么更新textview不會crash
7.activity window view顯示出來,全流程原始碼決議,精確到類和核心方法
8.資料庫用的什么庫,熟悉sql陳述句嗎
9.mmkv為什么比sp高效,存盤的資料結構是什么樣
10.mmap為什么比io高效,說下實作原理
11.sp存在哪些問題?
12.hashmap put流程原始碼決議,鏈表和樹轉換時機?擾動函式的作用?為什么hashcode & n-1?擴容時機?
13.gcroots有哪些
14.activity有個內部類handler,描述下參考關系鏈路,并說明為何gcroots能訪問到activity
15.加載xml和動態創建view哪個高效?為什么加載xml效率低
16.如何減少布局嵌套?jetpack compose的原理
17.recycleview快取實作?開發中怎么優化
18.演算法 給定一個字串,輸出所有不同字符組合
【百度一面】

- java參考,以及參考佇列,以及使用場景
- 拆裝箱
- LeakCanary
- map
- 線上性能監控
- SharedPrefrence 遇到的問題
- 手寫演算法
【百度二面】
- Handler
- 行程間通信
- 序列化
- 影片
- native崩潰捕獲原理
- 結合專案提問
- Recyclerview的點擊事件原理
- 啟動一個空的apk,回啟動幾個執行緒
- 手寫演算法
【百度三面】
- 跳槽原因
- 原來公司規模
- 預期薪資
- 個人優勢
【喜馬拉雅一面】

1.有了解過直播嗎?有哪些常見協議
2.說下自定義View的一般流程
3.多個執行緒異步執行任務,主執行緒需要等待它們都完成再繼續,有哪些實作方式
4.說下handler的流程,異步訊息是什么?Android中哪些場景會發送異步訊息?我們在代碼中可以手動發異步訊息嗎
5.彈幕怎么實作?比如直播中的流星雨特效,跑車這種怎么實作出來
6.說下你開發中做過的一個影片
7.了解過SurfaceView的原理嗎
8.有沒有接觸過Socket編程,簡單說下代碼實作
9.加載一張超大圖怎么實作
10.補間影片和屬性影片各自的原理
11.記憶體優化有哪些手段
12.開放性題目 開發中怎么提升整個app的穩定性
【喜馬拉雅二面】
1.動態代理是怎么實作的
2.你熟悉哪些設計模式
3.畫一下動態代理的類圖
4.說下插件化原理
5.說下熱修復的基本原理?比如QQ空間的方案和Tinker
6.演算法 判斷兩個單鏈表是否相交及找到第一個交點
【喜馬拉雅HR面】
1.對公司感覺怎么樣,之前有了解過嗎
2.是否愿意承擔一些管理角色
【得物一面】
1.狂問Kotlin相關,比如委托的實作原理,協程原理,kotlin的好處,kotlin編譯流程,常用的kotlin技巧
2.app的打包流程
3.View的渲染繪制流程
【得物二面】
1.inflate加載view程序
2.簡述okhttp原始碼,請求怎么管理,它的執行緒池怎么實作
3.apt原理
4.viewmodel為什么可以恢復資料
5.livedata可以保存多個資料嗎
6.aac架構有什么優勢
7.mmkv了解嗎
8.演算法 單鏈表找到倒數第K個元素
9.演算法 單鏈表找到中間的元素(2個題都用快慢指標就可以了)
10.組件化怎么做的?WMRouter編譯期間做了什么
【得物HR面】
1.沒問什么特別的
經驗tips
1. 必考題一定要掌握!
【必問】Handler的作業流程,原始碼要記牢,細節要理解透,比如怎么喚醒主執行緒的,while為啥不會阻塞主執行緒
【必問】View的繪制流程,包括渲染和View本身的繪制3部曲
【必問】MVVM的含義,ViewModel+LivaData+LifeCycle的原始碼實作
【必問】自定義View的一般實作流程
【必問】記憶體泄漏怎么排查,OOM怎么排查
【必問】你做過哪些性能優化
【必問】Retrofit的實作,動態代理
【必問】組件化相關,WmRouter的原理
【高頻】ANR怎么排查,有哪些原因
【高頻】APP打包流程
【高頻】kotlin常見知識點的原理,如協程,委托,擴展函式,編譯流程
【高頻】Android有哪些跨行程通信,AIDL的代碼實作
【高頻】怎么加載一張超大圖
【高頻】OkHttp的執行緒池實作,Java執行緒池原理,拒絕策略怎么自定義
2.面試前準備

1.準備一份自己的自我介紹,面試的時候根據面試物件適當進行修改(突出重點,突出自己的優勢在哪里,切忌流水賬);
2.注意隨身帶上自己的成績單和簡歷復印件; (有的公司在面試前都會讓你交一份成績單和簡歷當做面試中的參考,)
3.如果需要筆試就提前刷一些筆試題,大部分在線筆試的型別是選擇題+編程題,有的還會有簡答題,(平時空閑時間多的可以刷一下筆試題目(牛客網上有很多),但是不要只刷面試題,不動手code,程式員不是為了考試而存在的,)另外,注意抓重點,因為題目太多了,但是有很多題目幾乎次次遇到,像這樣的題目一定要搞定,
4.提前準備技術面試, 搞清楚自己面試中可能涉及哪些知識點、那些知識點是重點,面試中哪些問題會被經常問到、自己改如何回答,(強烈不推薦背題)
第一: 通過背這種方式你能記住多少?能記住多久?
第二: 背題的方式的學習很難堅持下去!
5.面試之前做好定向復習, 也就是專門針對你要面試的公司來復習,比如你在面試之前可以在網上找找有沒有你要面試的公司的面經,
6.準備好自己的專案介紹, 如果有專案的話,技術面試第一步,面試官一般都是讓你自己介紹一下你的專案,你可以從下面幾個方向來考慮:
①對專案整體設計的一個感受(面試官可能會讓你畫系統的架構圖;
②在這個專案中你負責了什么、做了什么、擔任了什么角色;
③從這個專案中你學會了那些東西,使用到了那些技術,學會了那些新技術的使用;
④專案描述中,最好可以體現自己的綜合素質,比如你是如何協調專案組成員協同開發的或者在遇到某一個棘手的問題的時候你是如何解決的又或者說你在這個專案用了什么技術實作了什么功能比如:Android Bitmap壓縮策略;關于HandlerThread的使用場景以及怎樣使用 HandlerThread?
提前知道有哪些技術問題常問: HashMap原始碼分析、熱修復,handler等等問題我覺得面試中實在太常見了,好好準備!后面的文章會我會分類詳細介紹到那些問題最常問,
提前熟悉一些常問的非技術問題: 面試的時候有一些常見的非技術問題比如“面試官問你的優點是什么,應該如何回答?”、“面試官問你的缺點是什么,應該如何回答?”、“如果面試官問"你有什么問題問我嗎?"時,你該如何回答”等等,對于這些問題,如何回答自己心里要有個數,別面試的時候出了亂子,
最后
關于面試經驗的分享就到這里,還是那句話,有些東西你不僅要懂,而且要能夠很好地表達出來,能夠讓面試官認可你的理解,例如Handler機制,這個是面試必問之題,有些晦澀的點,或許它只活在面試當中,實際作業當中你壓根不會用到它,但是你要知道它是什么東西,
小編之前在網上收集整理了一些 Android 開發相關的學習檔案、面試題、Android 核心筆記等等檔案,希望能幫助到大家學習提升,在面試中能順利通過,如有需要參考的可以直接點擊下方小卡片進行訪問查閱



轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349665.html
標籤:其他
