個(gè)人收集皆疹,平沉彰ǎ看到一些就放進(jìn)來
Android:
前臺(tái)切換到后臺(tái)侧到,然后再回到前臺(tái)勃教,Activity生命周期回調(diào)方法。彈出Dialog匠抗,生命值周期回調(diào)方法故源。
Activity的生命周期和啟動(dòng)模式
activity啟動(dòng)模式ANR的原因
ANR 出現(xiàn)的場(chǎng)景以及解決方案四大組件
Activity之間的通信方式
ListView的優(yōu)化
RecycleView的使用,原理汞贸,RecycleView優(yōu)化
RecyclerView怎么實(shí)現(xiàn)的item緩存绳军,跟ListView有什么區(qū)別
進(jìn)程和線程的概念,Android里怎樣實(shí)現(xiàn)多線程著蛙?
App啟動(dòng)崩潰異常捕捉
事件傳遞機(jī)制的介紹
Handler的原理和使用 Handler是怎么和線程綁定的
Handler的線程切換與事件分發(fā)手寫生產(chǎn)者/消費(fèi)者模式
手寫雙檢查單例模式删铃,各個(gè)步驟有什么區(qū)別
HashMap和HashTable區(qū)別,HashMap原理和實(shí)現(xiàn)踏堡,hash()的算法
Android的IPC機(jī)制(Binder)
什么是內(nèi)存泄漏猎唁,Android里有哪些內(nèi)存泄漏的場(chǎng)景,原因是什么
怎么實(shí)現(xiàn)LRU緩存
LRU緩存機(jī)制
- 怎么解決用戶高頻點(diǎn)擊打開新Activity導(dǎo)致的多實(shí)例問題(Activity啟動(dòng)模式)
算法:
1.二叉樹顷蟆,給出根節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)诫隅,找出從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑
- 一個(gè)無序,不重復(fù)數(shù)組帐偎,輸出N個(gè)元素逐纬,使得N個(gè)元素的和相加為M,給出時(shí)間復(fù)雜度削樊、空間復(fù)雜度豁生。手寫算法
- 數(shù)據(jù)結(jié)構(gòu)中堆的概念,堆排序
- 如何用兩個(gè)隊(duì)列(FIFO)實(shí)現(xiàn)棧(FILO)
- 了解常見排序算法嗎漫贞,手寫一下快排
- 怎么判斷兩個(gè)無環(huán)單鏈表是否相交
- 算法題甸箱,反轉(zhuǎn)數(shù)組
- 算法題,鏈表求和
- 算法,刪除數(shù)組中的重復(fù)元素
JAVA:
死鎖的概念迅脐,怎么避免死鎖
ReentrantLock的內(nèi)部實(shí)現(xiàn)
3.synchronized跟ReentranLock有什么區(qū)別芍殖?
4.synchronized與ReentranLock發(fā)生異常的場(chǎng)景.
ReentrantLock 、synchronized和volatile
關(guān)于volatile與synchronized集合的接口和具體實(shí)現(xiàn)類谴蔑,介紹
TreeMap具體實(shí)現(xiàn)
邏輯地址與物理地址豌骏,為什么使用邏輯地址
Java的幾種內(nèi)部類,區(qū)別是什么
String的hashCode()和Object的hashCode()
Java里泛型的實(shí)現(xiàn)
Java里加鎖的方式隐锭,synchornized關(guān)鍵字的原理窃躲,悲觀鎖和樂觀鎖都有哪些實(shí)現(xiàn)
死鎖的條件和解決方法,講講銀行家算法
泛型钦睡、泛型擦除蒂窒、通配符相關(guān)的東西
final、finally、finalize 的區(qū)別
接口刘绣、抽象類的區(qū)別
Java 四大引用
StringBuilder
Exception 和 Error
IO 樱溉、 NIO、 OKIO
ArrayList纬凤、LinkedList
HashMap 福贞、HashTable、HashSet
string,equals,==有什么區(qū)別
JVM
- 內(nèi)存區(qū)域
- 內(nèi)存模型
- 內(nèi)存分配回收策略
- Java 對(duì)象的創(chuàng)建停士、內(nèi)存布局和訪問定位
- GC過程挖帘,GC的算法都有哪些
垃圾收集算法 - 類加載機(jī)制
- 類加雙親委派模型機(jī)制
- 編譯器優(yōu)化
- 方法內(nèi)聯(lián)
- JVM 內(nèi)存結(jié)構(gòu)
- JVM 是如何執(zhí)行方法調(diào)用的?
- JVM 是如何實(shí)現(xiàn)反射的恋技?
- JVM 是如何實(shí)現(xiàn)泛型的拇舀?
- JVM 是如何實(shí)現(xiàn)異常的?
- JVM 是如何實(shí)現(xiàn)注解的蜻底?
- 逃逸分析
- 虛擬內(nèi)存和物理內(nèi)存的概念和關(guān)系骄崩,內(nèi)存分頁的調(diào)度算法
架構(gòu)與三方庫:
模式MVP,MVC介紹
RxJava的功能與原理實(shí)現(xiàn)
用到的一些開源框架薄辅,介紹一個(gè)看過源碼的要拂,內(nèi)部實(shí)現(xiàn)過程。
網(wǎng)絡(luò):
- TCP的三次握手四次揮手站楚,為什么要四次揮手
- TCP的流量控制算法(滑動(dòng)窗口)脱惰,擁塞控制算法
tcp的擁塞控制和流量控制 - HTTP1.0與2.0的區(qū)別 HTTPS 和 HTTP 的區(qū)別,HTTPS 2.0 3.0窿春?
- 網(wǎng)絡(luò)框架對(duì)比和源碼分析
- 自己去設(shè)計(jì)網(wǎng)絡(luò)請(qǐng)求框架拉一,怎么做?
- 網(wǎng)絡(luò)請(qǐng)求緩存處理旧乞,okhttp如何處理網(wǎng)絡(luò)緩存的
- 從網(wǎng)絡(luò)加載一個(gè)10M的圖片蔚润,說下注意事項(xiàng)
- TCP與UDP的區(qū)別
- TCP與UDP的應(yīng)用
- HTTP協(xié)議
- HTTP報(bào)文結(jié)構(gòu)
項(xiàng)目中的Webview與native通信
項(xiàng)目中對(duì)WebView的功能進(jìn)行了怎樣的增強(qiáng)
Activity生命周期
AsyncTask內(nèi)存泄露
dispatchTouchEvent,onInterceptEvent,onTouchEvent順序,關(guān)系
onMeasure,onLayout,onDraw關(guān)系
說說你對(duì)協(xié)程的理解
協(xié)程怎么取消
說說MVP與MVVM的區(qū)別
快手二面
1.算法題良蛮,二叉樹的最大深度
2.如果android端和IOS端調(diào)一個(gè)接口抽碌,一個(gè)通了一個(gè)沒通悍赢,你會(huì)如何解決
3.如果android端和IOS端調(diào)一個(gè)接口决瞳,一個(gè)比較慢,一個(gè)比較快左权,有什么思路
4.ARouter的原理是什么皮胡?如果不用ARouter,你會(huì)怎么去解藕赏迟。接口屡贺?設(shè)計(jì)接口有什么需要注意的?
5.h5與native交互做過什么工作?
6.登陸功能甩栈,登陸成功然后跳轉(zhuǎn)到一個(gè)新Activity泻仙,中間涉及什么?從事件傳遞量没,網(wǎng)絡(luò)請(qǐng)求,AMS交互角度分析
7.AMS交互調(diào)用生命周期是順序的嗎玉转?
8.binder進(jìn)程間通信可以調(diào)用原進(jìn)程方法嗎?
9.mvp與mvvm有什么區(qū)別殴蹄?
10.token放在本地如何保存究抓?如何加密比較好?
快手三面
1.viewModel的原理袭灯,為什么可以在Activity銷毀后保存數(shù)據(jù)
2.mvvm雙向數(shù)據(jù)綁定的原理是怎樣的刺下?ViewModel
3.說說你們項(xiàng)目中的難點(diǎn)是怎樣的?
4.偽代碼實(shí)現(xiàn)一個(gè)長(zhǎng)按事件
5.實(shí)現(xiàn)一個(gè)下載功能的接口
1.你們的項(xiàng)目中有什么難點(diǎn)稽荧?
2.你們項(xiàng)目的穩(wěn)定性如何橘茉?有做過什么穩(wěn)定性優(yōu)化的工作?
3.WebView性能優(yōu)化做過什么工作姨丈?
4.AIDL in out oneWay代表什么意思捺癞?
5.線程池了解多少?拒絕策略有幾種,為什么有newSingleThread
6.跨進(jìn)程通信了解多少构挤?管道了解嗎髓介?
7.協(xié)程介紹一下,講一個(gè)協(xié)程的scope與context筋现,協(xié)程的+號(hào)代表什么
8.Handler休眠是怎樣的唐础?epoll的原理是什么?如何實(shí)現(xiàn)延時(shí)消息矾飞,如果移除一個(gè)延時(shí)消息會(huì)解除休眠嗎一膨?
9.算法斐波那契臺(tái)階
10.手寫生產(chǎn)者消息者模型
11.IdleHandler應(yīng)用場(chǎng)景
字節(jié)跳動(dòng)2面
1.自定義圓角圖片
2.自定義LinearLayout,怎么測(cè)量子View寬高
3.setFactory和setFactory2有什么區(qū)別洒沦?
4.插件化換膚方案
5.插件化的原理豹绪,startActivity hook了哪個(gè)方法
6.手勢(shì)操作ActionCancel后怎么取消
7.怎么優(yōu)化xml inflate的時(shí)間,涉及IO與反射申眼。了解compose嗎瞒津?
8.算法題:二叉樹的每一層最左邊節(jié)點(diǎn)
9.RecyclerView 緩存結(jié)構(gòu),RecyclerView預(yù)取括尸,RecyclerView局部刷新
11.setOnTouchListener,onClickeListener和onTouchEvent的關(guān)系
- 線程池怎么實(shí)現(xiàn)巷蚪,阻塞隊(duì)列原理?
Fragment初始化參數(shù)調(diào)用哪個(gè)方法濒翻?
Fragment懶加載怎么實(shí)現(xiàn)屁柏?
java8對(duì)hashmap的優(yōu)化
hashmap和hashset區(qū)別啦膜,hash怎么散列的
HashMap的哈希散列實(shí)現(xiàn),線程安全嗎淌喻,為什么僧家?
OkHttp原理,怎么把參數(shù)組裝的
1.啟動(dòng) app 黑白屏優(yōu)化
2.穩(wěn)定——內(nèi)存優(yōu)化
3.流暢——卡頓優(yōu)化
4.節(jié)省——耗電優(yōu)化
5.安裝包——APK 瘦身
6.冷啟動(dòng)與熱啟動(dòng)
7.內(nèi)存泄漏的場(chǎng)景和解決辦法
9.webview 優(yōu)化
10.如何避免 OOM?
1.Android 系統(tǒng)架構(gòu)
2.View 的事件分發(fā)機(jī)制裸删?滑動(dòng)沖突怎么解決啸臀?
3.View 的繪制流程?
4.跨進(jìn)程通信
5.Android 系統(tǒng)啟動(dòng)流程是什么烁落?
6.啟動(dòng)一個(gè)程序乘粒,可以主界面點(diǎn)擊圖標(biāo)進(jìn)入,也可 以從一個(gè)程序中 跳轉(zhuǎn)過去伤塌,二者有什么區(qū)別灯萍?
7.AMS家族重要術(shù)語解釋
1.網(wǎng)絡(luò)底層框架:OkHttp 實(shí)現(xiàn)原理
2.網(wǎng)絡(luò)封裝框架:Retrofifit 實(shí)現(xiàn)原理
3.響應(yīng)式編程框架:RxJava 實(shí)現(xiàn)原理
4.圖片加載框架:Glide 實(shí)現(xiàn)原理
5.事件總線框架:EventBus 實(shí)現(xiàn)原理
6.內(nèi)存泄漏檢測(cè)框架:LeakCanary 實(shí)現(xiàn)原理
7.依賴注入框架:ButterKnife 實(shí)現(xiàn)原理
8.依賴全局管理框架:Dagger2 實(shí)現(xiàn)原理
9.數(shù)據(jù)庫框架:GreenDao 實(shí)現(xiàn)原理
1.從原理分析Kotlin的延遲初始化: lateinit var和by lazy
2.使用Kotlin Reified 讓泛型更簡(jiǎn)單安全
3.Kotlin里的Extension Functions實(shí)現(xiàn)原理分析
4.Kotlin系列之頂層函數(shù)和屬性
5.Kotlin 兼容 Java 遇到的最大的 “坑”
6.Kotlin 的協(xié)程用力瞥一眼
7.Kotlin 協(xié)程「掛起」的本質(zhì)
8.到底什么是「非阻塞式」掛起?協(xié)程真的更輕量級(jí)嗎每聪?
9.資源混淆是如何影響到Kotlin協(xié)程的
10.Kotlin Coroutines(協(xié)程) 完全解析
11.破解 Kotlin 協(xié)程
1.談?wù)勀銓?duì)Android設(shè)計(jì)模式的理解
2.MVC MVP MVVM原理和區(qū)別
3.你所知道的設(shè)計(jì)模式有哪些旦棉?
4.項(xiàng)目中常用的設(shè)計(jì)模式
5.手寫生產(chǎn)者/消費(fèi)者模式
6.寫出觀察者模式的代碼
7.適配器模式,裝飾者模式药薯,外觀模式的異同绑洛?
8.用到的一些開源框架,介紹一個(gè)看過源碼的童本,內(nèi)部實(shí)現(xiàn)過程真屯。
9.談?wù)剬?duì)RxJava的理解
10.Rxjava發(fā)送事件步驟
11.RxJava的作用,與平時(shí)使用的異步操作來比的優(yōu)缺點(diǎn)
12.說說EventBus作用穷娱,實(shí)現(xiàn)方式绑蔫,代替EventBus的方式
13.從0設(shè)計(jì)一款A(yù)pp整體架構(gòu),如何去做泵额?
14.說一款你認(rèn)為當(dāng)前比較火的應(yīng)用并設(shè)計(jì)(比如:直播APP配深,P2P金融,小視頻等)
15.談?wù)剬?duì)java狀態(tài)機(jī)理解
16.Fragment如果在Adapter中使用應(yīng)該如何解耦嫁盲?
17.Binder機(jī)制及底層實(shí)現(xiàn)
1.對(duì)熱修復(fù)和插件化的理解
2.插件化原理分析
3.模塊化實(shí)現(xiàn)(好處篓叶,原因)
4.熱修復(fù)、插件化
5.項(xiàng)目組件化的理解
6.描述清點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么
1羞秤、圖片庫對(duì)比
3缸托、圖片加載原理
4、自己去實(shí)現(xiàn)圖片庫锥腻,怎么做嗦董?
5母谎、Glide源碼解析
6瘦黑、Glide使用什么緩存?
7、Glide內(nèi)存緩存如何控制大行页狻匹摇?