面試經(jīng)歷
面了一些上海二線互聯(lián)網(wǎng)公司译打,例如愛奇藝,京東拇颅,喜馬拉雅奏司,得物,B站樟插,某安韵洋,美團(tuán)等等竿刁,記錄了部分面試真題。大部分可以自行搜到答案搪缨,有疑問的可以留言交流~
【愛奇藝】一面
1.handler里面的nativepollonce 為什么不會(huì)anr
2.對稱加密和非對稱加密的區(qū)別
3.布局嵌套過深會(huì)導(dǎo)致什么問題
4.java為什么跨平臺(tái)食拜? c是跨平臺(tái)嗎
5.app打包過程
6.協(xié)程掛起和線程阻塞的區(qū)別
7.so文件加載流程
8.AIDL怎么實(shí)現(xiàn)
9.字節(jié)碼是什么
【愛奇藝】二面
和一面間隔時(shí)間太久了锻全,放棄
【貨拉拉一面】
1.簡述https的握手流程陈肛,私鑰加密誰都可以破解,那么有什么意義
2.oom能否try catch
3.公鑰和私鑰的區(qū)別
4.客戶端怎么安全保存私鑰
5.怎么加載一張超大圖
6.采集app啟動(dòng)時(shí)間原理
7.exception分類慎玖。oom屬于哪種分類
8.弱網(wǎng) 無網(wǎng)優(yōu)化
【貨拉拉二面】
1.說下項(xiàng)目中怎么運(yùn)用MVVM
2.viewModel的源碼實(shí)現(xiàn)
3.設(shè)計(jì)一個(gè)圖片加載框架(包含內(nèi)存緩存和本地緩存)痹届,參考Glide回答就行了
4.簡述hashMap put方法的流程呻待,一些細(xì)節(jié)追問:什么時(shí)候鏈表轉(zhuǎn)樹?為啥要轉(zhuǎn)成樹队腐?什么時(shí)候樹再次轉(zhuǎn)回鏈表
5.英語口語如何(我面的是國際化業(yè)務(wù))
【貨拉拉HR面】
辦理了居住證積分嗎蚕捉?balabala
【京東一面】
1.簡述LinkedHashMap源碼實(shí)現(xiàn)
2.說下Handler流程
3.handler用于線程間通信,怎么保證線程安全
4.界面有個(gè)Button柴淘,手指放上去慢慢移到Button外的區(qū)域迫淹,描述事件分發(fā)的流程
5.說下View的繪制流程,包括渲染和繪制
6.算法 兩個(gè)單鏈表合并成有序鏈表为严,說下思路
7.組件化的實(shí)現(xiàn)敛熬,WMRouter調(diào)用其他模塊的對應(yīng)方法怎么實(shí)現(xiàn)的
【京東二面】
完全忘了
【京東三面】
1.問項(xiàng)目細(xì)節(jié),你主要負(fù)責(zé)的模塊梗脾,怎么設(shè)計(jì)
2.算法 N宮格,從左上角A出發(fā)只能向右或者向下走盹靴,求所有不同路徑的條數(shù)總和炸茧。手寫偽代碼(用遞歸就可以)
【京東四面】
1.平時(shí)的上下班時(shí)間點(diǎn)
2.有沒有使用過咱們的app,有什么建議
3.前面的3次技術(shù)面有什么感受
4.職業(yè)規(guī)劃
【京東HR面】
1.平時(shí)的上下班時(shí)間點(diǎn) balabala
【某安一面】
1.多線程同步有哪些方式
2.sycnized和lock區(qū)別稿静,分別用于什么場景
3.線程池原理
4.線程池拒絕策略怎么自定義
5.怎么實(shí)現(xiàn)線程加入線程池的優(yōu)先級(jí)
6.volatile底層原理梭冠?是否線程安全
7.死鎖怎么發(fā)生?怎么防止死鎖
8.介紹下apm改备,怎么捕獲crash和native crash控漠?騰訊matrix怎么統(tǒng)計(jì)app啟動(dòng)時(shí)間,頁面加載時(shí)間
9.gc回收算法有哪些悬钳?分別用于什么場景
10.jvm有哪些區(qū)域盐捷?棧的作用
11.算法 三數(shù)之和
【某安二面】
1.問項(xiàng)目 httpdns相關(guān):為什么要httpdns?怎么處理握手問題默勾,ip直連能否避免dns挾持碉渡?
2.問項(xiàng)目 首頁彈窗優(yōu)先級(jí)
3.做過哪些內(nèi)存優(yōu)化
4.怎么全局捕獲app所有異常,并且保證app不崩潰母剥,不卡死
5.如何獲取app的所有線程信息
6.怎么查找anr
7.安卓有哪些進(jìn)程間通信滞诺?為什么使用binder形导?mmap發(fā)生在哪個(gè)階段?怎么找到目標(biāo)進(jìn)程
8.leakcanary怎么檢測內(nèi)存泄露的
9.算法 兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列
【某安三面】
1.gradle生命周期习霹,怎么自定義插件
2.統(tǒng)計(jì)編譯耗時(shí)插件朵耕,運(yùn)行在哪個(gè)階段?
3.描述從編譯到apk的過程淋叶,以及gradle有哪些task參與其中
4.如何實(shí)現(xiàn)字節(jié)碼插樁
5.子線程更新ui會(huì)報(bào)什么異常阎曹?從哪里拋出來的
6.子線程怎么更新textview不會(huì)crash
7.activity window view顯示出來,全流程源碼解析爸吮,精確到類和核心方法
8.數(shù)據(jù)庫用的什么庫芬膝,熟悉sql語句嗎
9.mmkv為什么比sp高效,存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)是什么樣
10.mmap為什么比io高效形娇,說下實(shí)現(xiàn)原理
11.sp存在哪些問題锰霜?
12.hashmap put流程源碼解析,鏈表和樹轉(zhuǎn)換時(shí)機(jī)桐早?擾動(dòng)函數(shù)的作用癣缅?為什么hashcode & n-1?擴(kuò)容時(shí)機(jī)哄酝?
13.gcroots有哪些
14.activity有個(gè)內(nèi)部類handler友存,描述下引用關(guān)系鏈路,并說明為何gcroots能訪問到activity
15.加載xml和動(dòng)態(tài)創(chuàng)建view哪個(gè)高效陶衅?為什么加載xml效率低
16.如何減少布局嵌套屡立?jetpack compose的原理
17.recycleview緩存實(shí)現(xiàn)?開發(fā)中怎么優(yōu)化
18.算法 給定一個(gè)字符串搀军,輸出所有不同字符組合
【B站一面】
1.一句話描述協(xié)程
2.協(xié)程只在主線程使用膨俐,怎么實(shí)現(xiàn)掛起和切回的
3.協(xié)程的輕量級(jí)怎么體現(xiàn)的
4.ViewModel源碼實(shí)現(xiàn),它在Activity重啟后為什么恢復(fù)數(shù)據(jù)罩句?數(shù)據(jù)保存在哪里焚刺?和onsaveinstancestate有啥區(qū)別
5.LifeCycle源碼實(shí)現(xiàn)
6.LiveData源碼實(shí)現(xiàn),先后setValue兩次门烂,都能收到嗎乳愉?
7.簡述View的刷新機(jī)制,屏幕刷新信號(hào)從哪里發(fā)出來的屯远?
8.硬件加速是否了解
9.SurfaceView的工作原理是否有了解
10.組件化相關(guān)蔓姚,WMRouer為什么可以這么方便實(shí)現(xiàn)組件之間通信,背后原理
【喜馬拉雅一面】
1.有了解過直播嗎慨丐?有哪些常見協(xié)議
2.說下自定義View的一般流程
3.多個(gè)線程異步執(zhí)行任務(wù)赂乐,主線程需要等待它們都完成再繼續(xù),有哪些實(shí)現(xiàn)方式
4.說下handler的流程咖气,異步消息是什么挨措?Android中哪些場景會(huì)發(fā)送異步消息挖滤?我們在代碼中可以手動(dòng)發(fā)異步消息嗎
5.彈幕怎么實(shí)現(xiàn)?比如直播中的流星雨特效浅役,跑車這種怎么實(shí)現(xiàn)出來
6.說下你開發(fā)中做過的一個(gè)動(dòng)畫
7.了解過SurfaceView的原理嗎
8.有沒有接觸過Socket編程斩松,簡單說下代碼實(shí)現(xiàn)
9.加載一張超大圖怎么實(shí)現(xiàn)
10.補(bǔ)間動(dòng)畫和屬性動(dòng)畫各自的原理
11.內(nèi)存優(yōu)化有哪些手段
12.開放性題目 開發(fā)中怎么提升整個(gè)app的穩(wěn)定性
【喜馬拉雅二面】
1.動(dòng)態(tài)代理是怎么實(shí)現(xiàn)的
2.你熟悉哪些設(shè)計(jì)模式
3.畫一下動(dòng)態(tài)代理的類圖
4.說下插件化原理
5.說下熱修復(fù)的基本原理?比如QQ空間的方案和Tinker
6.算法 判斷兩個(gè)單鏈表是否相交及找到第一個(gè)交點(diǎn)
【喜馬拉雅HR面】
1.對公司感覺怎么樣觉既,之前有了解過嗎
2.是否愿意承擔(dān)一些管理角色
【得物一面】
1.狂問Kotlin相關(guān)惧盹,比如委托的實(shí)現(xiàn)原理,協(xié)程原理瞪讼,kotlin的好處钧椰,kotlin編譯流程,常用的kotlin技巧
2.app的打包流程
3.View的渲染繪制流程
【得物二面】
1.inflate加載view過程
2.簡述okhttp源碼符欠,請求怎么管理嫡霞,它的線程池怎么實(shí)現(xiàn)
3.apt原理
4.viewmodel為什么可以恢復(fù)數(shù)據(jù)
5.livedata可以保存多個(gè)數(shù)據(jù)嗎
6.aac架構(gòu)有什么優(yōu)勢
7.mmkv了解嗎
8.算法 單鏈表找到倒數(shù)第K個(gè)元素
9.算法 單鏈表找到中間的元素(2個(gè)題都用快慢指針就可以了)
10.組件化怎么做的?WMRouter編譯期間做了什么
【得物HR面】
1.沒問什么特別的
經(jīng)驗(yàn)tips
- 必考題一定要掌握希柿!
【必問】Handler的工作流程诊沪,源碼要記牢,細(xì)節(jié)要理解透曾撤,比如怎么喚醒主線程的端姚,while為啥不會(huì)阻塞主線程
【必問】View的繪制流程,包括渲染和View本身的繪制3部曲
【必問】MVVM的含義挤悉,ViewModel+LivaData+LifeCycle的源碼實(shí)現(xiàn)
【必問】自定義View的一般實(shí)現(xiàn)流程
【必問】內(nèi)存泄漏怎么排查渐裸,OOM怎么排查
【必問】你做過哪些性能優(yōu)化,參考這個(gè)https://blog.yorek.xyz/android/paid/master/
【必問】Retrofit的實(shí)現(xiàn)装悲,動(dòng)態(tài)代理
【必問】組件化相關(guān)昏鹃,WmRouter的原理
【高頻】ANR怎么排查,有哪些原因
【高頻】APP打包流程
【高頻】kotlin常見知識(shí)點(diǎn)的原理衅斩,如協(xié)程盆顾,委托怠褐,擴(kuò)展函數(shù)畏梆,編譯流程
【高頻】Android有哪些跨進(jìn)程通信,AIDL的代碼實(shí)現(xiàn)
【高頻】怎么加載一張超大圖
【高頻】OkHttp的線程池實(shí)現(xiàn)奈懒,Java線程池原理奠涌,拒絕策略怎么自定義
2.算法準(zhǔn)備
有時(shí)間就刷劍指offer66道題目,沒時(shí)間就掌握一般的套路磷杏,回答一些常見題目基本夠了溜畅。參考這個(gè):https://zhuanlan.zhihu.com/p/386785887
https://zhuanlan.zhihu.com/p/109431459
3.關(guān)于性能優(yōu)化
你做過哪些性能優(yōu)化?這個(gè)點(diǎn)也是經(jīng)常被問到极祸,我的建議 不要隨意把別人博客的性能優(yōu)化當(dāng)成自己做過的慈格,很多都是純KPI項(xiàng)目怠晴,他們可能自己都沒去實(shí)踐。面試官一聽就知道你在瞎說浴捆,挑一些相對靠譜的結(jié)合自己項(xiàng)目說下蒜田,然后拓展一下還未實(shí)現(xiàn)但是準(zhǔn)備去做的。