一.圖片
1恒傻、圖片庫(kù)對(duì)比
2、LRUCache原理
3建邓、圖片加載原理
4盈厘、自己去實(shí)現(xiàn)圖片庫(kù),怎么做官边?
5沸手、Glide源碼解析
6外遇、Glide使用什么緩存?
7契吉、Glide內(nèi)存緩存如何控制大刑隆?
二.網(wǎng)絡(luò)和安全機(jī)制
1.網(wǎng)絡(luò)框架對(duì)比和源碼分析
2.自己去設(shè)計(jì)網(wǎng)絡(luò)請(qǐng)求框架栅隐,怎么做塔嬉?
3.網(wǎng)絡(luò)請(qǐng)求緩存處理,okhttp如何處理網(wǎng)絡(luò)緩存的租悄;
4.從網(wǎng)絡(luò)加載一個(gè)10M的圖片谨究,說(shuō)下注意事項(xiàng)
5.TCP的3次握手和四次揮手
6.TCP與UDP的區(qū)別
7.TCP與UDP的應(yīng)用
8.HTTP協(xié)議
9.HTTP1.0與2.0的區(qū)別
10.HTTP報(bào)文結(jié)構(gòu)
11.HTTP與HTTPS的區(qū)別以及如何實(shí)現(xiàn)安全性
12.如何驗(yàn)證證書(shū)的合法性?
13.https中哪里用了對(duì)稱加密,哪里用了非對(duì)稱加密泣棋,對(duì)加密算法(如RSA)等是否有了解?
14.client如何確定自己發(fā)送的消息被server收到?
15.談?wù)勀銓?duì)WebSocket的理解
16.WebSocket與socket的區(qū)別
17.談?wù)勀銓?duì)安卓簽名的理解。
18.請(qǐng)解釋安卓為啥要加簽名機(jī)制?
19.視頻加密傳輸
20.App 是如何沙箱化鸯屿,為什么要這么做寄摆?
21.權(quán)限管理系統(tǒng)(底層的權(quán)限是如何進(jìn)行 grant 的)修赞?
三.數(shù)據(jù)庫(kù)
1.sqlite升級(jí)柏副,增加字段的語(yǔ)句
2.數(shù)據(jù)庫(kù)框架對(duì)比和源碼分析
3.數(shù)據(jù)庫(kù)的優(yōu)化
4.數(shù)據(jù)庫(kù)數(shù)據(jù)遷移問(wèn)題
四.算法
1.排序算法有哪些括享?
2.最快的排序算法是哪個(gè)捞烟?
3.手寫(xiě)一個(gè)冒泡排序
4.手寫(xiě)快速排序代碼
5.快速排序的過(guò)程板驳、時(shí)間復(fù)雜度裁着、空間復(fù)雜度
6.手寫(xiě)堆排序
7.堆排序過(guò)程英古、時(shí)間復(fù)雜度及空間復(fù)雜度
8.寫(xiě)出你所知道的排序算法及時(shí)空復(fù)雜度换可,穩(wěn)定性
9.二叉樹(shù)給出根節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),找出從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑
10給阿里2萬(wàn)多名員工按年齡排序應(yīng)該選擇哪個(gè)算法沾鳄?
11.GC算法(各種算法的優(yōu)缺點(diǎn)以及應(yīng)用場(chǎng)景)
12.蟻群算法與蒙特卡洛算法
13.子串包含問(wèn)題(KMP 算法)寫(xiě)代碼實(shí)現(xiàn)
14一個(gè)無(wú)序,不重復(fù)數(shù)組,輸出N個(gè)元素休弃,使得N個(gè)元素的和相加為M,給出時(shí)間復(fù)雜度塔猾、.空間復(fù)雜度。手寫(xiě)算法
15.萬(wàn)億級(jí)別的兩個(gè)URL文件A和B丈甸,如何求出A和B的差集C(提示:Bit映射->hash分組->多文件讀寫(xiě)效率->磁盤尋址以及應(yīng)用層面對(duì)尋址的優(yōu)化)
16.百度POI中如何試下查找最近的商家功能(提示:坐標(biāo)鏡像+R樹(shù))。
17.兩個(gè)不重復(fù)的數(shù)組集合中睦擂,求共同的元素。
18.兩個(gè)不重復(fù)的數(shù)組集合中杖玲,這兩個(gè)集合都是海量數(shù)據(jù),內(nèi)存中放不下摆马,怎么求共同的元素?
19.一個(gè)文件中有100萬(wàn)個(gè)整數(shù)囤采,由空格分開(kāi),在程序中判斷用戶輸入的整數(shù)是否在此文件中蕉毯。說(shuō)出最優(yōu)的方法
20.一張Bitmap所占內(nèi)存以及內(nèi)存占用的計(jì)算
21.2000萬(wàn)個(gè)整數(shù),找出第五十大的數(shù)字恕刘?
22.燒一根不均勻的繩抒倚,從頭燒到尾總共需要1個(gè)小時(shí)。現(xiàn)在有若干條材質(zhì)相同的繩子托呕,問(wèn)如何用燒繩的方法來(lái)計(jì)時(shí)一個(gè)小時(shí)十五分鐘呢?
23.求1000以內(nèi)的水仙花數(shù)以及40億以內(nèi)的水仙花數(shù)
24.5枚硬幣项郊,2正3反如何劃分為兩堆然后通過(guò)翻轉(zhuǎn)讓兩堆中正面向上的硬8幣和反面向上的硬幣個(gè)數(shù)相同
25.時(shí)針走一圈,時(shí)針?lè)轴樦睾蠋状?/p>
26.N*N的方格紙,里面有多少個(gè)正方形
27.x個(gè)蘋(píng)果着降,一天只能吃一個(gè)、兩個(gè)、或者三個(gè)蓄喇,問(wèn)多少天可以吃完?
五.插件化妆偏、模塊化、組件化钱骂、熱修復(fù)、增量更新见秽、Gradle
1.對(duì)熱修復(fù)和插件化的理解
2.插件化原理分析
3.模塊化實(shí)現(xiàn)(好處,原因)
4.熱修復(fù),插件化
5.項(xiàng)目組件化的理解
6.描述清點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么
六.架構(gòu)設(shè)計(jì)和設(shè)計(jì)模式
1.談?wù)勀銓?duì)Android設(shè)計(jì)模式的理解
2.MVC MVP MVVM原理和區(qū)別
3.你所知道的設(shè)計(jì)模式有哪些张吉?
4.項(xiàng)目中常用的設(shè)計(jì)模式
5.手寫(xiě)生產(chǎn)者/消費(fèi)者模式
6.寫(xiě)出觀察者模式的代碼
7.適配器模式,裝飾者模式肮蛹,外觀模式的異同?
8.用到的一些開(kāi)源框架伦忠,介紹一個(gè)看過(guò)源碼的省核,內(nèi)部實(shí)現(xiàn)過(guò)程气忠。
9.談?wù)剬?duì)RxJava的理解
10.Rxjava發(fā)送事件步驟
11.RxJava的作用,與平時(shí)使用的異步操作來(lái)比的優(yōu)缺點(diǎn)
12.說(shuō)說(shuō)EventBus作用旧噪,實(shí)現(xiàn)方式,代替EventBus的方式
13.從0設(shè)計(jì)一款A(yù)pp整體架構(gòu)淘钟,如何去做?
14.說(shuō)一款你認(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)
18.對(duì)于應(yīng)用更新這塊是如何做的?(解答:灰度桅滋,強(qiáng)制更新,分區(qū)域更新)?
19.實(shí)現(xiàn)一個(gè)Json解析器(可以通過(guò)正則提高速度)
20.統(tǒng)計(jì)啟動(dòng)時(shí)長(zhǎng),標(biāo)準(zhǔn)
七.性能優(yōu)化
1.如何對(duì)Android 應(yīng)用進(jìn)行性能分析以及優(yōu)化?
2.ddms 和 traceView
3.性能優(yōu)化如何分析systrace栅表?
4.用IDE如何分析內(nèi)存泄漏?
5.Java多線程引發(fā)的性能問(wèn)題怪瓶,怎么解決?
6.啟動(dòng)頁(yè)白屏及黑屏解決洗贰?
7.啟動(dòng)太慢怎么解決陨倡?
8.怎么保證應(yīng)用啟動(dòng)不卡頓敛滋?
9.App啟動(dòng)崩潰異常捕捉
10自定義View注意事項(xiàng)
11.現(xiàn)在下載速度很慢,試從網(wǎng)絡(luò)協(xié)議的角度分析原因,并優(yōu)化(提示:網(wǎng)絡(luò)的5層都可以涉及)兴革。
12.Https請(qǐng)求慢的解決辦法(提示:DNS,攜帶數(shù)據(jù)杂曲,直接訪問(wèn)IP)
13.如何保持應(yīng)用的穩(wěn)定性
14.RecyclerView和ListView的性能對(duì)比
15.ListView的優(yōu)化
16.RecycleView優(yōu)化
17.View渲染
18.Bitmap如何處理大圖,如一張30M的大圖咱揍,如何預(yù)防OOM
19.java中的四種引用的區(qū)別以及使用場(chǎng)景
20.強(qiáng)引用置為null,會(huì)不會(huì)被回收煤裙?
八.NDK、jni噪漾、Binder、AIDL欣硼、進(jìn)程通信有關(guān)
1.請(qǐng)介紹一下NDK
2.什么是NDK庫(kù)?
3.jni用過(guò)嗎?
4.如何在jni中注冊(cè)native函數(shù)分别,有幾種注冊(cè)方式?
5.Java如何調(diào)用c存淫、c++語(yǔ)言?
6.jni如何調(diào)用java層代碼桅咆?
7.進(jìn)程間通信的方式?
8.Binder機(jī)制
9.簡(jiǎn)述IPC?
10.什么是AIDL薛夜?
11.AIDL解決了什么問(wèn)題?
12.AIDL如何使用梯澜?
13.Android 上的 Inter-Process-Communication 跨進(jìn)程通信時(shí)如何工作的?
14.多進(jìn)程場(chǎng)景遇見(jiàn)過(guò)么渴析?
15.Android進(jìn)程分類?
16.進(jìn)程和 Application 的生命周期俭茧?
17.進(jìn)程調(diào)度
18.談?wù)剬?duì)進(jìn)程共享和線程安全的認(rèn)識(shí)
19談?wù)剬?duì)多進(jìn)程開(kāi)發(fā)的理解以及多進(jìn)程應(yīng)用場(chǎng)景
20.什么是協(xié)程?
九.framework層午磁、ROM定制、Ubuntu迅皇、Linux之類的問(wèn)題
1.java虛擬機(jī)的特性
2.談?wù)剬?duì)jvm的理解
3.JVM內(nèi)存區(qū)域,開(kāi)線程影響哪塊內(nèi)存
4.對(duì)Dalvik漏隐、ART虛擬機(jī)有什么了解?
5.Art和Dalvik對(duì)比
6.虛擬機(jī)原理青责,如何自己設(shè)計(jì)一個(gè)虛擬機(jī)(內(nèi)存管理,類加載脖隶,雙親委派)
7.談?wù)勀銓?duì)雙親委派模型理解
8.JVM內(nèi)存模型,內(nèi)存區(qū)域
9.類加載機(jī)制
10.談?wù)剬?duì)ClassLoader(類加載器)的理解
11.談?wù)剬?duì)動(dòng)態(tài)加載(OSGI)的理解
12.內(nèi)存對(duì)象的循環(huán)引用及避免
13.內(nèi)存回收機(jī)制产阱、GC回收策略、GC原理時(shí)機(jī)以及GC對(duì)象
14.垃圾回收機(jī)制與調(diào)用System.gc()區(qū)別
15.Ubuntu編譯安卓系統(tǒng)
16.系統(tǒng)啟動(dòng)流程是什么构蹬?(提示:Zygote進(jìn)程 –> SystemServer進(jìn)程 –> 各種系統(tǒng)服務(wù) –> 應(yīng)用進(jìn)程)
17.大體說(shuō)清一個(gè)應(yīng)用程序安裝到手機(jī)上時(shí)發(fā)生了什么
18.簡(jiǎn)述Activity啟動(dòng)全部過(guò)程
19.App啟動(dòng)流程,從點(diǎn)擊桌面開(kāi)始
20.邏輯地址與物理地址庄敛,為什么使用邏輯地址俗壹?