阿里巴巴
LRUCache原理
圖片加載原理
模塊化實(shí)現(xiàn)(好處,原因)
JVM
視頻加密傳輸
統(tǒng)計(jì)啟動(dòng)時(shí)長(zhǎng),標(biāo)準(zhǔn)
如何保持應(yīng)用的穩(wěn)定性
ThreadLocal 原理
談?wù)刢lassloader
動(dòng)態(tài)布局
熱修復(fù),插件化
HashMap源碼,SpareArray原理
性能優(yōu)化,怎么保證應(yīng)用啟動(dòng)不卡頓
怎么去除重復(fù)代碼
SP是進(jìn)程同步的嗎?有什么方法做到同步
介紹下SurfView
HashMap實(shí)現(xiàn)原理,ConcurrentHashMap 的實(shí)現(xiàn)原理
BroadcastReceiver,LocalBroadcastReceiver 區(qū)別
Bundle 機(jī)制
Handler 機(jī)制
android 事件傳遞機(jī)制
線程間 操作 List
App啟動(dòng)流程,從點(diǎn)擊桌面開(kāi)始
動(dòng)態(tài)加載
類加載器
OSGI
Https請(qǐng)求慢的解決辦法,DNS,攜帶數(shù)據(jù),直接訪問(wèn)IP
GC回收策略
畫出 Android 的大體架構(gòu)圖
描述清點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么
大體說(shuō)清一個(gè)應(yīng)用程序安裝到手機(jī)上時(shí)發(fā)生了什么;
對(duì) Dalvik、ART 虛擬機(jī)有基本的了解;
Android 上的 Inter-Process-Communication 跨進(jìn)程通信時(shí)如何工作的;
App 是如何沙箱化,為什么要這么做;
權(quán)限管理系統(tǒng)(底層的權(quán)限是如何進(jìn)行 grant 的)
進(jìn)程和 Application 的生命周期;
系統(tǒng)啟動(dòng)流程 Zygote進(jìn)程 –> SystemServer進(jìn)程 –> 各種系統(tǒng)服務(wù) –> 應(yīng)用進(jìn)程
recycleview listview 的區(qū)別,性能
排序,快速排序的實(shí)現(xiàn)
樹(shù):B+樹(shù)的介紹
圖:有向無(wú)環(huán)圖的解釋
TCP/UDP的區(qū)別
synchronized與Lock的區(qū)別
volatile
Java線程池
Java中對(duì)象的生命周期
類加載機(jī)制
雙親委派模型
Android事件分發(fā)機(jī)制
MVP模式
RxJava
抽象類和接口的區(qū)別
集合 Set實(shí)現(xiàn) Hash 怎么防止碰撞
JVM 內(nèi)存區(qū)域 開(kāi)線程影響哪塊內(nèi)存
垃圾收集機(jī)制 對(duì)象創(chuàng)建,新生代與老年代
二叉樹(shù) 深度遍歷與廣度遍歷
B樹(shù)、B+樹(shù)
消息機(jī)制
進(jìn)程調(diào)度
進(jìn)程與線程
死鎖
進(jìn)程狀態(tài)
JVM內(nèi)存模型
并發(fā)集合了解哪些
ConCurrentHashMap實(shí)現(xiàn)
CAS介紹
開(kāi)啟線程的三種方式,run()和start()方法區(qū)別
線程池
常用數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介
判斷環(huán)(猜測(cè)應(yīng)該是鏈表環(huán))
排序,堆排序?qū)崿F(xiàn)
鏈表反轉(zhuǎn)
騰訊
synchronized用法
volatile用法
動(dòng)態(tài)權(quán)限適配方案,權(quán)限組的概念
網(wǎng)絡(luò)請(qǐng)求緩存處理,okhttp如何處理網(wǎng)絡(luò)緩存的
圖片加載庫(kù)相關(guān),bitmap如何處理大圖,如一張30M的大圖,如何預(yù)防OOM
進(jìn)程保活
listview圖片加載錯(cuò)亂的原理和解決方案
https相關(guān),如何驗(yàn)證證書的合法性,https中哪里用了對(duì)稱加密,哪里用了非對(duì)稱加密,對(duì)加密算法(如RSA)等是否有了解
滴滴
MVP
廣播(動(dòng)態(tài)注冊(cè)和靜態(tài)注冊(cè)區(qū)別,有序廣播和標(biāo)準(zhǔn)廣播)
service生命周期
handler實(shí)現(xiàn)機(jī)制(很多細(xì)節(jié)需要關(guān)注:如線程如何建立和退出消息循環(huán)等等)
多線程(關(guān)于AsyncTask缺陷引發(fā)的思考)
數(shù)據(jù)庫(kù)數(shù)據(jù)遷移問(wèn)題
設(shè)計(jì)模式相關(guān)(例如Android中哪里使用了觀察者模式,單例模式相關(guān))
x個(gè)蘋果,一天只能吃一個(gè)、兩個(gè)、或者三個(gè),問(wèn)多少天可以吃完
TCP與UDP區(qū)別與應(yīng)用(三次握手和四次揮手)涉及到部分細(xì)節(jié)(如client如何確定自己發(fā)送的消息被server收到) HTTP相關(guān) 提到過(guò)Websocket 問(wèn)了WebSocket相關(guān)以及與socket的區(qū)別
是否熟悉Android jni開(kāi)發(fā),jni如何調(diào)用java層代碼
進(jìn)程間通信的方式
java注解
計(jì)算一個(gè)view的嵌套層級(jí)
項(xiàng)目組件化的理解
多線程斷點(diǎn)續(xù)傳原理
Android系統(tǒng)為什么會(huì)設(shè)計(jì)ContentProvider,進(jìn)程共享和線程安全問(wèn)題
jvm相關(guān)
Android相關(guān)優(yōu)化(如內(nèi)存優(yōu)化、網(wǎng)絡(luò)優(yōu)化、布局優(yōu)化、電量?jī)?yōu)化、業(yè)務(wù)優(yōu)化)
EventBus實(shí)現(xiàn)原理
美團(tuán)
static synchronized 方法的多線程訪問(wèn)和作用,同一個(gè)類里面兩個(gè)synchronized方法,兩個(gè)線程同時(shí)訪問(wèn)的問(wèn)題
內(nèi)部類和靜態(tài)內(nèi)部類和匿名內(nèi)部類,以及項(xiàng)目中的應(yīng)用
handler發(fā)消息給子線程,looper怎么啟動(dòng)
View事件傳遞
activity棧
封裝view的時(shí)候怎么知道view的大小
arraylist和linkedlist的區(qū)別,以及應(yīng)用場(chǎng)景
怎么啟動(dòng)service,service和activity怎么進(jìn)行數(shù)據(jù)交互
下拉狀態(tài)欄是不是影響activity的生命周期,如果在onStop的時(shí)候做了網(wǎng)絡(luò)請(qǐng)求,onResume的時(shí)候怎么恢復(fù)
view渲染
今日頭條
數(shù)據(jù)結(jié)構(gòu)中堆的概念,堆排序
死鎖的概念,怎么避免死鎖
ReentrantLock 、synchronized和volatile(n面)
HashMap
singleTask啟動(dòng)模式
用到的一些開(kāi)源框架,介紹一個(gè)看過(guò)源碼的,內(nèi)部實(shí)現(xiàn)過(guò)程。
消息機(jī)制實(shí)現(xiàn)
ReentrantLock的內(nèi)部實(shí)現(xiàn)
App啟動(dòng)崩潰異常捕捉
事件傳遞機(jī)制的介紹
ListView的優(yōu)化
二叉樹(shù),給出根節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn),找出從根節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑
模式MVP,MVC介紹
斷點(diǎn)續(xù)傳的實(shí)現(xiàn)
集合的接口和具體實(shí)現(xiàn)類,介紹
TreeMap具體實(shí)現(xiàn)
synchronized與ReentrantLock
手寫生產(chǎn)者/消費(fèi)者模式
邏輯地址與物理地址,為什么使用邏輯地址
一個(gè)無(wú)序,不重復(fù)數(shù)組,輸出N個(gè)元素,使得N個(gè)元素的和相加為M,給出時(shí)間復(fù)雜度、空間復(fù)雜度。手寫算法
.Android進(jìn)程分類
前臺(tái)切換到后臺(tái),然后再回到前臺(tái),Activity生命周期回調(diào)方法。彈出Dialog,生命值周期回調(diào)方法。
Activity的啟動(dòng)模式
愛(ài)奇藝
RxJava的功能與原理實(shí)現(xiàn)
RecycleView的使用,原理,RecycleView優(yōu)化
ANR的原因
四大組件
Service的開(kāi)啟方式
Activity與Service通信的方式
Activity之間的通信方式
HashMap的實(shí)現(xiàn),與HashSet的區(qū)別
JVM內(nèi)存模型,內(nèi)存區(qū)域
Java中同步使用的關(guān)鍵字,死鎖
MVP模式
Java設(shè)計(jì)模式,觀察者模式
Activity與Fragment之間生命周期比較
廣播的使用場(chǎng)景
?百度
Bitmap 使用時(shí)候注意什么?
Oom 是否可以try catch ?
內(nèi)存泄露如何產(chǎn)生?
適配器模式,裝飾者模式,外觀模式的異同?
ANR 如何產(chǎn)生?
String buffer 與string builder 的區(qū)別?
如何保證線程安全?
java四中引用
Jni 用過(guò)么?
多進(jìn)程場(chǎng)景遇見(jiàn)過(guò)么?
關(guān)于handler,在任何地方new handler 都是什么線程下
sqlite升級(jí),增加字段的語(yǔ)句
bitmap recycler 相關(guān)
強(qiáng)引用置為null,會(huì)不會(huì)被回收?
glide 使用什么緩存?
Glide 內(nèi)存緩存如何控制大小?
如何保證多線程讀寫文件的安全?
攜程
Activity啟動(dòng)模式
廣播的使用方式,場(chǎng)景
App中喚醒其他進(jìn)程的實(shí)現(xiàn)方式
AndroidManifest的作用與理解
List,Set,Map的區(qū)別
HashSet與HashMap怎么判斷集合元素重復(fù)
Java中內(nèi)存區(qū)域與垃圾回收機(jī)制
EventBus作用,實(shí)現(xiàn)方式,代替EventBus的方式
Android中開(kāi)啟攝像頭的主要步驟
網(wǎng)易
集合
concurrenthashmap
volatile
synchronized與Lock
Java線程池
wait/notify
NIO
垃圾收集器
Activity生命周期
AlertDialog,popupWindow,Activity區(qū)別
小米
String 為什么要設(shè)計(jì)成不可變的?
fragment 各種情況下的生命周期
Activity 上有 Dialog 的時(shí)候按 home 鍵時(shí)的生命周期
橫豎屏切換的時(shí)候,Activity 各種情況下的生命周期
Application 和 Activity 的 context 對(duì)象的區(qū)別
序列化的作用,以及 Android 兩種序列化的區(qū)別。
List 和 Map 的實(shí)現(xiàn)方式以及存儲(chǔ)方式。
靜態(tài)內(nèi)部類的設(shè)計(jì)意圖。
線程如何關(guān)閉,以及如何防止線程的內(nèi)存泄漏
360
軟引用、弱引用區(qū)別
垃圾回收
多線程:怎么用、有什么問(wèn)題要注意;Android線程有沒(méi)有上限,然后提到線程池的上限
JVM
鎖
OOM,內(nèi)存泄漏
ANR怎么分析解決
LinearLayout、RelativeLayout、FrameLayout的特性、使用場(chǎng)景
如何實(shí)現(xiàn)Fragment的滑動(dòng)
ViewPager使用細(xì)節(jié),如何設(shè)置成每次只初始化當(dāng)前的Fragment,其他的不初始化
ListView重用的是什么
進(jìn)程間通信的機(jī)制
AIDL機(jī)制
AsyncTask機(jī)制
如何取消AsyncTask
序列化
Android為什么引入Parcelable
有沒(méi)有嘗試簡(jiǎn)化Parcelable的使用
AIDL機(jī)制
項(xiàng)目:拉活怎么做的
應(yīng)用安裝過(guò)程
某海外直播公司
線程和進(jìn)程的區(qū)別?
為什么要有線程,而不是僅僅用進(jìn)程?
算法判斷單鏈表成環(huán)與否?
如何實(shí)現(xiàn)線程同步?
hashmap數(shù)據(jù)結(jié)構(gòu)?
arraylist 與 linkedlist 異同?
object類的equal 和hashcode 方法重寫,為什么?
hashmap如何put數(shù)據(jù)(從hashmap源碼角度講解)?
簡(jiǎn)述IPC?
fragment之間傳遞數(shù)據(jù)的方式?
簡(jiǎn)述tcp四次揮手?
threadlocal原理
內(nèi)存泄漏的可能原因?
用IDE如何分析內(nèi)存泄漏?
OOM的可能原因?
線程死鎖的4個(gè)條件?
差值器&估值器
簡(jiǎn)述消息機(jī)制相關(guān)
進(jìn)程間通信方式?
Binder相關(guān)?
觸摸事件的分發(fā)?
簡(jiǎn)述Activity啟動(dòng)全部過(guò)程?
okhttp源碼?
RxJava簡(jiǎn)介及其源碼解讀?
性能優(yōu)化如何分析systrace?
廣播的分類?
點(diǎn)擊事件被攔截,但是相傳到下面的view,如何操作?
Glide源碼?
ActicityThread相關(guān)?
volatile的原理
synchronize的原理
lock原理
翻轉(zhuǎn)一個(gè)單項(xiàng)鏈表
string to integer
合并多個(gè)單有序鏈表(假設(shè)都是遞增的)
其他公司
四大組件
Android中數(shù)據(jù)存儲(chǔ)方式
微信主頁(yè)面的實(shí)現(xiàn)方式
微信上消息小紅點(diǎn)的原理
兩個(gè)不重復(fù)的數(shù)組集合中,求共同的元素。
上一問(wèn)擴(kuò)展,海量數(shù)據(jù),內(nèi)存中放不下,怎么求出。
Java中String的了解。
ArrayList與LinkedList區(qū)別
堆排序過(guò)程,時(shí)間復(fù)雜度,空間復(fù)雜度
快速排序的時(shí)間復(fù)雜度,空間復(fù)雜度
RxJava的作用,與平時(shí)使用的異步操作來(lái)比,優(yōu)勢(shì)
Android消息機(jī)制原理
Binder機(jī)制介紹
為什么不能在子線程更新UI
JVM內(nèi)存模型
Android中進(jìn)程內(nèi)存的分配,能不能自己分配定額內(nèi)存
垃圾回收機(jī)制與調(diào)用System.gc()區(qū)別
Android事件分發(fā)機(jī)制
斷點(diǎn)續(xù)傳的實(shí)現(xiàn)
RxJava的作用,優(yōu)缺點(diǎn)