前言
每次面試前的準(zhǔn)備都是到處查找資料融柬,這次打算記錄一下準(zhǔn)備過(guò)程中的遇到的問(wèn)題,作為對(duì)自己所掌握的知識(shí)點(diǎn)的一個(gè)總結(jié)趋距,查漏補(bǔ)缺粒氧,也能讓后續(xù)的面試更加順利。本文主要是列出問(wèn)題节腐,答案也會(huì)視情況在后續(xù)文章更新外盯。本文的內(nèi)容后續(xù)也會(huì)持續(xù)更新。
Java篇
-
java
多態(tài)的實(shí)現(xiàn)原理翼雀。動(dòng)態(tài)類型綁定相關(guān)门怪。 -
volatile
關(guān)鍵字作用。內(nèi)存可見(jiàn)性(jmm
的理解)锅纺,禁止指令重排掷空,無(wú)法保證原子性。 -
synchronized
關(guān)鍵字作用囤锉,實(shí)現(xiàn)原理坦弟。公平鎖/非公平鎖,可重入鎖/不可重入鎖官地,樂(lè)觀鎖/悲觀鎖酿傍,共享鎖/排他鎖。鎖升級(jí)驱入。 - 死鎖的概念赤炒,什么情況下造成死鎖。
-
HashMap
數(shù)據(jù)結(jié)構(gòu)亏较,擴(kuò)容原理莺褒,java8
版本的鏈表轉(zhuǎn)紅黑樹(shù)。HashMap
的源代碼需要熟讀雪情,里面有很多經(jīng)典代碼設(shè)計(jì)遵岩。 -
ConcurrentHashMap
數(shù)據(jù)結(jié)構(gòu),如何get,擴(kuò)容原理尘执,擴(kuò)容時(shí)其他線程如果感知舍哄,CAS
和synchronized
的使用。 - 線程池誊锭。為什么要用線程池表悬。
ThreadPoolExecutor
的各個(gè)參數(shù)的具體含義。幾種阻塞隊(duì)列BlockingQueue
的使用和區(qū)別丧靡。線程池的種類以及其對(duì)應(yīng)的參數(shù)蟆沫。 -
join
的使用 -
wait
和sleep
的區(qū)別 -
Object
類有哪些方法 -
CopyOnWriteArrayList
如何實(shí)現(xiàn)同步 - 有哪些線程安全的容器類
Jvm篇
-
jvm
內(nèi)存模型。線程共享區(qū)窘行,非線程共享區(qū)饥追。 -
GC
算法。標(biāo)記-清除罐盔,復(fù)制算法但绕,標(biāo)記整理。GC
的目的是降低GC
頻率惶看。 -
GC root
如何選取捏顺。
Android篇
-
Android
事件分發(fā)機(jī)制。除了view
里面的那一套纬黎,你知道事件是怎么從點(diǎn)擊屏幕傳到Activity
的嗎幅骄?IMS
的事件處理機(jī)制。 -
Activity
的生命周期本今。fragment
生命周期拆座。service
生命周期。 - 卡頓的原理冠息。如果做線上卡頓監(jiān)控挪凑,具體如何實(shí)現(xiàn)。
- 如何定位內(nèi)存泄漏逛艰,其實(shí)現(xiàn)原理是什么躏碳。
-
ANR
的概念,如何排查散怖。ANR
具體觸發(fā)的原理(延時(shí)消息)菇绵。 - 講一講
Handler
。Looper
镇眷,MessageQueue
相關(guān)咬最,擴(kuò)展到ThreadLocal
相關(guān)。底層的epoll
實(shí)現(xiàn)監(jiān)聽(tīng)偏灿。消息延時(shí)的實(shí)現(xiàn)原理丹诀,post
的實(shí)現(xiàn)原理。 - 如何不壓縮情況實(shí)現(xiàn)大長(zhǎng)圖的加載翁垂。
BitmapRegionDecoder
實(shí)現(xiàn)區(qū)域加載铆遭。 -
MVP
MVVC
架構(gòu) - 熱修復(fù)。熱修復(fù)的工作流程沿猜,
Tinker
框架的實(shí)現(xiàn)原理枚荣,AndFix
實(shí)現(xiàn)原理,Robust
實(shí)現(xiàn)原理啼肩。各個(gè)框架的優(yōu)劣橄妆。 - 組件化。為什么要組件化祈坠?使用組件化的過(guò)程中遇到過(guò)哪些問(wèn)題害碾?怎么解決的?
- 插件化赦拘。四大組件的插件化實(shí)現(xiàn)原理慌随,資源插件化的實(shí)現(xiàn)原理,資源沖突的解決方案躺同。市面上各個(gè)插件化框架的實(shí)現(xiàn)原理
- 如何進(jìn)程备蟛拢活
-
ListView
圖片加載錯(cuò)亂的原理和解決方案 -
RecyclerView
和ListView
的區(qū)別,性能差異 -
LRUCached
原理 SparseArray
-
SP
是進(jìn)程同步的嗎蹋艺?如果做到進(jìn)程同步 -
SurfaceView
剃袍,GLSurfaceView
,TextureView
捎谨,SurfaceTexture
的異同 -
BroadcastReceiver
和LocalBroadcastReceiver
區(qū)別 -
Bundle
機(jī)制 -
apk
打包過(guò)程 -
apk
安裝過(guò)程 - 系統(tǒng)開(kāi)機(jī)流程
-
Dalvik
和ART
區(qū)別 -
App
是如何做成沙箱化的 -
down
move
up
事件的傳遞 - 下拉通知欄對(duì)
activity
生命周期的影響 - 線上卡頓檢測(cè)如何做
- 線上內(nèi)存泄漏民效,
oom
如何檢測(cè) - R8 proguard
Jetpack篇
-
ViewModel
在橫豎屏切換時(shí)為什么不銷毀。onRetainNonConfigurationInstance
LiveData
Room
Android Framework篇
-
Activity
的啟動(dòng)流程 -
Service
的啟動(dòng)流程 -
BroadcastReceiver
的啟動(dòng)流程 -
ContentProvider
的啟動(dòng)流程 -
IMS
事件監(jiān)聽(tīng)與分發(fā) -
Android
有哪些IPC
手段涛救。 -
Binder
實(shí)現(xiàn)原理畏邢。 -
Handler
如何實(shí)現(xiàn)延時(shí)消息的 -
Android
幀渲染原理 -
setContentView
的流程 - 進(jìn)程啟動(dòng)過(guò)程
網(wǎng)絡(luò)篇
-
https
如何驗(yàn)證證書(shū)的合法性 -
https
請(qǐng)求慢的解決方法 -
TCP
和UDP
區(qū)別與應(yīng)用 -
Socket
和Websocket
的區(qū)別與應(yīng)用
三方框架篇
-
okhttp
如何處理網(wǎng)絡(luò)緩存的。有哪些攔截器 -
EventBus
實(shí)現(xiàn)原理 RxJava
-
Glide
Fresco
對(duì)比 -
Retrofit
實(shí)現(xiàn)原理
設(shè)計(jì)模式篇
- 單例模式州叠。懶漢式棵红,惡漢式,雙重校驗(yàn)咧栗,靜態(tài)內(nèi)部類逆甜,枚舉。手寫單例模式致板。
- 手寫觀察者模式
-
Android
系統(tǒng)哪些地方用到了設(shè)計(jì)模式