前言
每次面試前的準(zhǔn)備都是到處查找資料,這次打算記錄一下準(zhǔn)備過程中的遇到的問題,作為對自己所掌握的知識點的一個總結(jié),查漏補缺,也能讓后續(xù)的面試更加順利。本文主要是列出問題,答案也會視情況在后續(xù)文章更新。本文的內(nèi)容后續(xù)也會持續(xù)更新。
Java篇
-
java多態(tài)的實現(xiàn)原理。動態(tài)類型綁定相關(guān)。 -
volatile關(guān)鍵字作用。內(nèi)存可見性(jmm的理解),禁止指令重排,無法保證原子性。 -
synchronized關(guān)鍵字作用,實現(xiàn)原理。公平鎖/非公平鎖,可重入鎖/不可重入鎖,樂觀鎖/悲觀鎖,共享鎖/排他鎖。鎖升級。 - 死鎖的概念,什么情況下造成死鎖。
-
HashMap數(shù)據(jù)結(jié)構(gòu),擴(kuò)容原理,java8版本的鏈表轉(zhuǎn)紅黑樹。HashMap的源代碼需要熟讀,里面有很多經(jīng)典代碼設(shè)計。 -
ConcurrentHashMap數(shù)據(jù)結(jié)構(gòu),如何get,擴(kuò)容原理,擴(kuò)容時其他線程如果感知,CAS和synchronized的使用。 - 線程池。為什么要用線程池。
ThreadPoolExecutor的各個參數(shù)的具體含義。幾種阻塞隊列BlockingQueue的使用和區(qū)別。線程池的種類以及其對應(yīng)的參數(shù)。 -
join的使用 -
wait和sleep的區(qū)別 -
Object類有哪些方法 -
CopyOnWriteArrayList如何實現(xiàn)同步 - 有哪些線程安全的容器類
Jvm篇
-
jvm內(nèi)存模型。線程共享區(qū),非線程共享區(qū)。 -
GC算法。標(biāo)記-清除,復(fù)制算法,標(biāo)記整理。GC的目的是降低GC頻率。 -
GC root如何選取。
Android篇
-
Android事件分發(fā)機制。除了view里面的那一套,你知道事件是怎么從點擊屏幕傳到Activity的嗎?IMS的事件處理機制。 -
Activity的生命周期。fragment生命周期。service生命周期。 - 卡頓的原理。如果做線上卡頓監(jiān)控,具體如何實現(xiàn)。
- 如何定位內(nèi)存泄漏,其實現(xiàn)原理是什么。
-
ANR的概念,如何排查。ANR具體觸發(fā)的原理(延時消息)。 - 講一講
Handler。Looper,MessageQueue相關(guān),擴(kuò)展到ThreadLocal相關(guān)。底層的epoll實現(xiàn)監(jiān)聽。消息延時的實現(xiàn)原理,post的實現(xiàn)原理。 - 如何不壓縮情況實現(xiàn)大長圖的加載。
BitmapRegionDecoder實現(xiàn)區(qū)域加載。 -
MVPMVVC架構(gòu) - 熱修復(fù)。熱修復(fù)的工作流程,
Tinker框架的實現(xiàn)原理,AndFix實現(xiàn)原理,Robust實現(xiàn)原理。各個框架的優(yōu)劣。 - 組件化。為什么要組件化?使用組件化的過程中遇到過哪些問題?怎么解決的?
- 插件化。四大組件的插件化實現(xiàn)原理,資源插件化的實現(xiàn)原理,資源沖突的解決方案。市面上各個插件化框架的實現(xiàn)原理
- 如何進(jìn)程?;?/li>
-
ListView圖片加載錯亂的原理和解決方案 -
RecyclerView和ListView的區(qū)別,性能差異 -
LRUCached原理 SparseArray-
SP是進(jìn)程同步的嗎?如果做到進(jìn)程同步 -
SurfaceView,GLSurfaceView,TextureView,SurfaceTexture的異同 -
BroadcastReceiver和LocalBroadcastReceiver區(qū)別 -
Bundle機制 -
apk打包過程 -
apk安裝過程 - 系統(tǒng)開機流程
-
Dalvik和ART區(qū)別 -
App是如何做成沙箱化的 -
downmoveup事件的傳遞 - 下拉通知欄對
activity生命周期的影響 - 線上卡頓檢測如何做
- 線上內(nèi)存泄漏,
oom如何檢測 - R8 proguard
Jetpack篇
-
ViewModel在橫豎屏切換時為什么不銷毀。onRetainNonConfigurationInstance LiveDataRoom
Android Framework篇
-
Activity的啟動流程 -
Service的啟動流程 -
BroadcastReceiver的啟動流程 -
ContentProvider的啟動流程 -
IMS事件監(jiān)聽與分發(fā) -
Android有哪些IPC手段。 -
Binder實現(xiàn)原理。 -
Handler如何實現(xiàn)延時消息的 -
Android幀渲染原理 -
setContentView的流程 - 進(jìn)程啟動過程
網(wǎng)絡(luò)篇
-
https如何驗證證書的合法性 -
https請求慢的解決方法 -
TCP和UDP區(qū)別與應(yīng)用 -
Socket和Websocket的區(qū)別與應(yīng)用
三方框架篇
-
okhttp如何處理網(wǎng)絡(luò)緩存的。有哪些攔截器 -
EventBus實現(xiàn)原理 RxJava-
GlideFresco對比 -
Retrofit實現(xiàn)原理
設(shè)計模式篇
- 單例模式。懶漢式,惡漢式,雙重校驗,靜態(tài)內(nèi)部類,枚舉。手寫單例模式。
- 手寫觀察者模式
-
Android系統(tǒng)哪些地方用到了設(shè)計模式