一区宇、JAVA
1、基礎(chǔ)
- java的特點(diǎn) (OOP)值戳,封裝议谷、繼承、多態(tài)
- 什么是多態(tài)堕虹?多態(tài)的實(shí)現(xiàn)機(jī)制是什么卧晓?
- 靜態(tài)屬性和靜態(tài)方法是否可以被繼承?是否可以被重寫赴捞?以及原因逼裆?
- ==、equals螟炫、hashCode的作用波附,區(qū)別
- 抽象類與接口的異同
- new String("a")創(chuàng)建了幾個對象?String StringBuffer和StringBuilder的比較
- 淺拷貝與深拷貝的區(qū)別
- final昼钻、finally、finally的區(qū)別
2封寞、集合
- Java集合框架中有哪些類 然评? 都有什么特點(diǎn) ?
- ArrayList和LinkList的區(qū)別 狈究? Vector ?
- hashmap實(shí)現(xiàn)(底層數(shù)據(jù)結(jié)構(gòu))碗淌,hashcode算法,如何擴(kuò)容抖锥,怎么處理hash沖突亿眠?處理hash沖突都有哪些辦法?(聯(lián)系ThreadLocal)
- hashmap磅废、 hashtable纳像、ConcurrentHashMap;如何實(shí)現(xiàn)線程安全拯勉,底層原理竟趾?HashMap線程不安全如何體現(xiàn)?
- LinkedHashMap原理宫峦,作用岔帽?(LruCache)
- HashMap、ArrayMap导绷、SparseMap比較犀勒?
3、虛擬機(jī)
- JVM內(nèi)存區(qū)域怎樣劃分
- 垃圾回收機(jī)制
- 類加載過程、類加載機(jī)制
- 強(qiáng)引用贾费、軟應(yīng)用钦购、弱應(yīng)用
4、并發(fā)
- 線程狀態(tài)的理解(阻塞铸本,運(yùn)行等等)
- Thread方法的區(qū)別:sleep肮雨、yield、join箱玷、wait
- 線程池的原理怨规,四種線程池的區(qū)別,線程的個數(shù)選擇
- 線程安全:volatile ,synchonized,lock,CAS,ThreadLocal
- 線程通信:synchonized+wait/notify;lock+condition;生產(chǎn)者與消費(fèi)者
5锡足、設(shè)計(jì)模式
二波丰、Android
1、Activity
- Activity生命周期
- Activity A 啟動另一個Activity B 會調(diào)用哪些方法舶得?如果B是透明主題的又或則是個DialogActivity呢
- onSaveInstanceState()方法的作用 ? 何時會被調(diào)用掰烟?
- Activity的四種啟動模式、應(yīng)用場景 沐批?
- Activity跟window纫骑,view,ViewRoot之間的關(guān)系九孩?
- Activity的啟動過程先馆?
2、Fragment
- Fragment 生命周期
- Fragment 與Activity如何通信躺彬,F(xiàn)ragment如何之間通信
- Fragment中add與replace的區(qū)別(Fragment重疊)
- Fragment懶加載如何實(shí)現(xiàn)
- FragmentPagerAdapter與FragmentStatePagerAdapter的區(qū)別與使用場景
3煤墙、Service
- 談一談Service的生命周期?
- Service的兩種啟動方式宪拥?區(qū)別在哪仿野?
- 如何保證Service不被殺死 ?
- 能否在Service開啟耗時操作 她君? 怎么做 脚作?
4、Broadcast Receiver
- 廣播有幾種形式 ? 都有什么特點(diǎn) 犁河?
- 廣播的兩種注冊方式 鳖枕?
- 廣播發(fā)送和接收的原理了解嗎 ?(Binder機(jī)制桨螺、AMS)
5宾符、View
- 描述一下View事件傳遞分發(fā)機(jī)制?
- onTouch灭翔、onTouchEvent魏烫、onClick的執(zhí)行順序
- 如何解決View的事件沖突 辣苏? 舉個開發(fā)中遇到的例子 ?
- 講下View的繪制流程哄褒?
- 自定義View的過程稀蟋,自定義View需要注意什么
- Android屏幕渲染機(jī)制
- invalidate()、postInvalidate()呐赡、requestLayout()分析的區(qū)別 退客?
- SurfaceView和View的區(qū)別?
- 當(dāng)一個TextView的實(shí)例調(diào)用setText()方法后執(zhí)行了什么
- Android布局優(yōu)化之ViewStub链嘀、include萌狂、merge的作用與原理
- LinearLayout,RelativeLayout布局流程、性能對比
- 動畫的種類有哪些怀泊?如何使用茫藏,以及底層原理?
- 為什么屬性動畫移動后可以點(diǎn)擊霹琼,而補(bǔ)間動畫不行务傲?
- ListView 和 RecyclerView的比較
6、Handler
- 談?wù)勏C(jī)制Handler ? 作用 枣申?有哪些要素 售葡?流程是怎樣的 ?
- 一個線程能否創(chuàng)建多個Handler忠藤,Handler跟Looper之間的對應(yīng)關(guān)系 天通?
- 為什么系統(tǒng)不建議在子線程訪問UI
- Looper死循環(huán)為什么不會導(dǎo)致應(yīng)用卡死
- 使用Handler的postDealy后消息隊(duì)列會有什么變化 ?
- 可以在子線程直接new一個Handler嗎 熄驼?怎么做 ?
- Message可以如何創(chuàng)建 烘豹? 哪種效果更好 瓜贾? 為什么 ?
7携悯、IPC
- Android中進(jìn)程和線程的關(guān)系祭芦? 區(qū)別?
- 如何開啟多進(jìn)程 憔鬼? 應(yīng)用是否可以開啟N個進(jìn)程 龟劲?
- 為何需要IPC?多進(jìn)程通信可能會出現(xiàn)的問題轴或?
- Android中IPC方式昌跌、各種方式優(yōu)缺點(diǎn),為什么選擇Binder照雁?
- Binder機(jī)制的作用和原理蚕愤?
- Binder框架中ServiceManager的作用?
- Bundle傳遞對象為什么需要序列化?Serialzable和Parcelable的區(qū)別萍诱?
- 講講AIDL悬嗓?原理是什么?如何優(yōu)化多模塊都使用AIDL的情況裕坊?
Bitmap
- Bitmap使用需要注意哪些問題 包竹?
- Bitmap.recycle()會立即回收么?什么時候會回收籍凝?如果沒有地方使用這個Bitmap周瞎,為什么垃圾回收不會直接回收?
- 一張圖片從SD卡加載到內(nèi)存和從drawable加載大小有區(qū)別嗎静浴?內(nèi)存占用是怎么計(jì)算的堰氓?
- Bitmap如何處理大圖,如一張30M的大圖苹享,如何預(yù)防OOM双絮?
http://www.reibang.com/p/3f6f6e4f1c88
https://blog.csdn.net/android_destiny/article/details/51782508
http://www.reibang.com/p/3f6f6e4f1c88
數(shù)據(jù)庫
- 數(shù)據(jù)庫索引
- 數(shù)據(jù)庫升級
- 數(shù)據(jù)庫建表、增刪改查基本語句
適配
- 屏幕適配
https://blog.csdn.net/zgcqflqinhao/article/details/77766164
http://www.reibang.com/p/a4b8e4c5d9b0
http://www.reibang.com/p/4aa23d69d481
blankj
https://juejin.im/post/5c18039d5188253b7e74987e
https://github.com/Firedamp/Rudeness - 版本適配
https://blog.csdn.net/qq_23062979/article/details/81294550
https://blog.csdn.net/zzf112/article/details/53127515
性能優(yōu)化
- 內(nèi)存優(yōu)化
- UI界面優(yōu)化
- 啟動優(yōu)化
- 網(wǎng)絡(luò)優(yōu)化
- apk瘦身
- Bitmap優(yōu)化
- ListView優(yōu)化
- RecyclerView優(yōu)化
開源框架
- Rxjava
Flowable和Observable區(qū)別
map和flatmap
線程切換如何實(shí)現(xiàn) - AAC+Jetpack
observer和observerForever的區(qū)別
為什么用ViewModelProviders而不是new得问,ViewModel與MVP里Presenter的對比 - Retrofit
Retrofit動態(tài)代理細(xì)節(jié)實(shí)現(xiàn)囤攀,如何與Rxjava配合使用,動態(tài)代理能代理抽象類嗎?Retrofit為什么會選擇接口來定義請求方法宫纬。
*RxJava,Okhttp,Retrofit,Glide,LeakCanary,BlockCanary,ButterKnife,EventBus