前言
移動研發火熱不停,越來越多人開始學習 android 開發。但很多人感覺入門容易成長很難,對未來比較迷茫,不知道自己技能該怎么提升,到達下一階段需要補充哪些內容。市面上也多是談論知識圖譜,缺少體系和成長節奏感,特此編寫一份 android 研發進階之路,希望能對大家有所幫助。
在這里我把攻城獅分成初級、中級、高級和資深四個階段,分別對研發設計能力、工具使用、系統原理和架構等作出要求。
Activity基礎相關
說下Activity生命周期 ?
Activity A 啟動另一個Activity B 會調用哪些方法?如果B是透明主題的又或則是個DialogActivity呢 ? 說下onSaveInstanceState()方法的作用 ? 何時會被調用?
說下 Activity的四種啟動模式、應用場景 ?
了解哪些Activity常用的標記位Flags?
說下 Activity跟window,view之間的關系?
橫豎屏切換的Activity生命周期變化?
如何啟動其他應用的Activity?
Activity的啟動過程?(重點)
Fragment基礎相關
談一談Fragment的生命周期 ?
與Activity生命周期的不同 ?
談談Activity和Fragment的區別?
Fragment中add與replace的區別(Fragment重疊) getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之間的區別?
FragmentPagerAdapter與FragmentStatePagerAdapter的區別與使用場景
Service基礎相關
談一談Service的生命周期?
Service的兩種啟動方式?區別在哪?
如何保證Service不被殺死 ? 能否在Service開啟耗時操作 ?怎么做 ?
用過哪些系統Service ?
了解ActivityManagerService嗎?發揮什么作用(重點)
Broadcast Receiver基礎相關
廣播有幾種形式 ? 都有什么特點 ?
廣播的兩種注冊方式 ?
廣播發送和接收的原理了解嗎 ?(Binder機制、AMS)
ContentProvider基礎相關
ContentProvider了解多少?
ContentProvider的權限管理?
說說ContentProvider、ContentResolver、ContentObserver 之間的關系?
數據存儲相關
描述一下Android數據持久存儲方式?
SharedPreferences的應用場景?注意事項?
SharedPrefrences的apply和commit有什么區別?
了解SQLite中的事務操作嗎?是如何做的 使用SQLite做批量操作有什么好的方法嗎?
如何刪除SQLite中表的個別字段?
使用SQLite時會有哪些優化操作?
IPC(重點)
Android中進程和線程的關系?區別?
如何開啟多進程 ?應用是否可以開啟N個進程 ?
為何需要IPC?
多進程通信可能會出現的問題?
Android中IPC方式、各種方式優缺點,為什么選擇Binder?
Binder機制的作用和原理?
Binder框架中ServiceManager的作用?
Bundle傳遞對象為什么需要序列化?Serialzable和Parcelable的區別?
講講AIDL?原理是什么?如何優化多模塊都使用AIDL的情況?
View相關
講下View的繪制流程?
MotionEvent是什么?包含幾種事件?什么條件下會產生?
描述一下View事件傳遞分發機制?
如何解決View的事件沖突 ?舉個開發中遇到的例子 ?
scrollTo()和scollBy()的區別?
Scroller是怎么實現View的彈性滑動?
invalidate()和postInvalidate()的區別 ?
SurfaceView和View的區別?
自定義View如何考慮機型適配 ?
Handler相關
談談消息機制Handler ? 作用 ?有哪些要素 ?流程是怎樣的 ?
一個線程能否創建多個Handler,Handler跟Looper之間的對應關系 ?
軟引用跟弱引用的區別 Handler 引起的內存泄露原因以及最佳解決方案
為什么系統不建議在子線程訪問UI Looper死循環為什么不會導致應用卡死
使用Handler的postDealy后消息隊列會有什么變化 ?
可以在子線程直接new一個Handler嗎 ?怎么做 ?
Message可以如何創建 ?哪種效果更好 ?為什么 ?
線程(重點)相關
線程池的好處?
線程池的幾個參數的理解,四種線程池的使用場景 Android中還了解哪些方便線程切換的類?
講講AsyncTask的原理 IntentService有什么用 ?
直接在Activity中創建一個thread跟在service中創建一個thread之間的區別
ThreadPoolExecutor的工作策略 ?
Handler、Thread和HandlerThread的差別?
ThreadLocal的原理 多線程是否一定會高效(優缺點) 多線程中,
讓你做一個單例,你會怎么做
除了notify還有什么方式可以喚醒線程
什么是ANR ? 什么情況會出現ANR ?如何避免 ?
在不看代碼的情況下如何快速定位出現ANR問題所在 ?
Bitmap相關
Bitmap使用需要注意哪些問題 ?
Bitmap.recycle()會立即回收么?
什么時候會回收?如果沒有地方使用這個Bitmap,為什么垃圾回收不會直接回收?
一張Bitmap所占內存以及內存占用的計算 Android中緩存更新策略 ?
LRU的原理 ?
性能優化(重點)
圖片的三級緩存中,圖片加載到內存中,如果內存快爆了,會發生什么?怎么處理?
內存中如果加載一張500*500的png高清圖片.應該是占用多少的內存?
WebView的性能優化 ?
Bitmap如何處理大圖,如一張30M的大圖,如何預防OOM 內存回收機制與GC算法(各種算法的優缺點以及應用場景);GC原理時機以及GC對象
內存泄露和內存溢出的區別 ?
AS有什么工具可以檢測內存泄露
性能優化,怎么保證應用啟動不卡頓?
黑白屏怎么處理?
強引用置為null,會不會被回收?
ListView跟RecyclerView的區別, ListView的adapter是什么adapter ?
LinearLayout、FrameLayout、RelativeLayout性能對比,為什么?
JNI相關
對JNI是否了解 如何加載NDK庫 ?
如何在JNI中注冊Native函數,有幾種注冊方法 ?
你用JNI來實現過什么功能 ?怎么實現的 ?(加密處理、影音方面、圖形圖像處理)
設計模式相關
你所知道的設計模式有哪些?
談談MVC、MVP和MVVM,好在哪里,不好在哪里 ?
封裝p層之后.如果p層數據過大,如何解決 是否能從Android中舉幾個例子說說用到了什么設計模式 ?
裝飾模式和代理模式有哪些區別 ?
實現單例模式有幾種方法 ?
懶漢式中雙層鎖的目的是什么 ?兩次判空的目的又是什么?
用到的一些開源框架,介紹一個看過源碼的,內部實現過程。
Fragment如果在Adapter中使用應該如何解耦?
最后
贈送大家一套完整的Android學習資料吧。
以前一直是自己在網上東平西湊的找,找到的東西也是零零散散,很多時候都是看著看著就沒了,時間浪費了,問題卻還沒得到解決,很讓人抓狂。
后面我就自己整理了一套資料,還別說,真香!
資料有條理,有系統,還很全面,我不方便直接放出來,大家可以先看看有沒有用得到的地方吧。
附上白嫖地址:《Android架構視頻+BATJ面試專題PDF+學習筆記》
c/DSkNLaERkbnFoS0ZF)**
[外鏈圖片轉存中…(img-B715TcPG-1620724991617)]
[外鏈圖片轉存中…(img-uF7T6gEX-1620724991620)]
[外鏈圖片轉存中…(img-P8srU2tN-1620724991623)]
[外鏈圖片轉存中…(img-XUMsD5st-1620724991625)]
[外鏈圖片轉存中…(img-AtrxKPBt-1620724991626)]