阿里巴巴
● LRUCache原理
● 圖片加載原理
● 模塊化實(shí)現(xiàn)(好處者疤,原因)
● JVM
● 視頻加密傳輸
● 統(tǒng)計(jì)啟動(dòng)時(shí)長,標(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)擊桌面開始
● 動(dòng)態(tài)加載
● 類加載器
● OSGI
● Https請(qǐng)求慢的解決辦法,DNS礼饱,攜帶數(shù)據(jù)哨查,直接訪問IP
● GC回收策略
● 畫出 Android 的大體架構(gòu)圖
● 描述清點(diǎn)擊 Android Studio 的 build 按鈕后發(fā)生了什么
● 大體說清一個(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)
● 樹:B+樹的介紹
● 圖:有向無環(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ū)域 開線程影響哪塊內(nèi)存
● 垃圾收集機(jī)制 對(duì)象創(chuàng)建编检,新生代與老年代
● 二叉樹 深度遍歷與廣度遍歷
● B樹、B+樹
● 消息機(jī)制
● 進(jìn)程調(diào)度
● 進(jìn)程與線程
● 死鎖
● 進(jìn)程狀態(tài)
● JVM內(nèi)存模型
● 并發(fā)集合了解哪些
● ConCurrentHashMap實(shí)現(xiàn)
● CAS介紹
● 開啟線程的三種方式,run()和start()方法區(qū)別
● 線程池
● 常用數(shù)據(jù)結(jié)構(gòu)簡介
● 判斷環(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ò)緩存的
● 圖片加載庫相關(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ù)庫數(shù)據(jù)遷移問題
● 設(shè)計(jì)模式相關(guān)(例如Android中哪里使用了觀察者模式,單例模式相關(guān))
● x個(gè)蘋果蜡坊,一天只能吃一個(gè)杠输、兩個(gè)赎败、或者三個(gè)秕衙,問多少天可以吃完
● TCP與UDP區(qū)別與應(yīng)用(三次握手和四次揮手)涉及到部分細(xì)節(jié)(如client如何確定自己發(fā)送的消息被server收到) HTTP相關(guān) 提到過Websocket 問了WebSocket相關(guān)以及與socket的區(qū)別
● 是否熟悉Android jni開發(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)程共享和線程安全問題
● jvm相關(guān)
● Android相關(guān)優(yōu)化(如內(nèi)存優(yōu)化据忘、網(wǎng)絡(luò)優(yōu)化、布局優(yōu)化搞糕、電量優(yōu)化勇吊、業(yè)務(wù)優(yōu)化)
● EventBus實(shí)現(xiàn)原理
美團(tuán)
● static synchronized 方法的多線程訪問和作用,同一個(gè)類里面兩個(gè)synchronized方法窍仰,兩個(gè)線程同時(shí)訪問的問題
● 內(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)用場景
● 怎么啟動(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)模式
● 用到的一些開源框架频祝,介紹一個(gè)看過源碼的,內(nèi)部實(shí)現(xiàn)過程脆淹。
● 消息機(jī)制實(shí)現(xiàn)
● ReentrantLock的內(nèi)部實(shí)現(xiàn)
● App啟動(dòng)崩潰異常捕捉
● 事件傳遞機(jī)制的介紹
● ListView的優(yōu)化
● 二叉樹常空,給出根節(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è)無序咐柜,不重復(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)模式
愛奇藝
● RxJava的功能與原理實(shí)現(xiàn)
● RecycleView的使用泰涂,原理,RecycleView優(yōu)化
● ANR的原因
● 四大組件
● Service的開啟方式
● Activity與Service通信的方式
● Activity之間的通信方式
● HashMap的實(shí)現(xiàn)辐怕,與HashSet的區(qū)別
● JVM內(nèi)存模型逼蒙,內(nèi)存區(qū)域
● Java中同步使用的關(guān)鍵字,死鎖
● MVP模式
● Java設(shè)計(jì)模式寄疏,觀察者模式
● Activity與Fragment之間生命周期比較
● 廣播的使用場景
百度
● Bitmap 使用時(shí)候注意什么是牢?
● Oom 是否可以try catch ?
● 內(nèi)存泄露如何產(chǎn)生陕截?
● 適配器模式驳棱,裝飾者模式,外觀模式的異同农曲?
● ANR 如何產(chǎn)生社搅?
● String buffer 與string builder 的區(qū)別?
● 如何保證線程安全乳规?
● java四中引用
● Jni 用過么形葬?
● 多進(jìn)程場景遇見過么?
● 關(guān)于handler驯妄,在任何地方new handler 都是什么線程下
● sqlite升級(jí)荷并,增加字段的語句
● bitmap recycler 相關(guān)
● 強(qiáng)引用置為null,會(huì)不會(huì)被回收青扔?
● glide 使用什么緩存源织?
● Glide 內(nèi)存緩存如何控制大小微猖?
● 如何保證多線程讀寫文件的安全谈息?
攜程
● Activity啟動(dò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中開啟攝像頭的主要步驟
網(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ū)別
● 垃圾回收
● 多線程:怎么用桨吊、有什么問題要注意威根;Android線程有沒有上限,然后提到線程池的上限
● JVM
● 鎖
● OOM视乐,內(nèi)存泄漏
● ANR怎么分析解決
● LinearLayout洛搀、RelativeLayout、FrameLayout的特性佑淀、使用場景
● 如何實(shí)現(xiàn)Fragment的滑動(dòng)
● ViewPager使用細(xì)節(jié)留美,如何設(shè)置成每次只初始化當(dāng)前的Fragment,其他的不初始化
● ListView重用的是什么
● 進(jìn)程間通信的機(jī)制
● AIDL機(jī)制
● AsyncTask機(jī)制
● 如何取消AsyncTask
● 序列化
● Android為什么引入Parcelable
● 有沒有嘗試簡化Parcelable的使用
● AIDL機(jī)制
● 項(xiàng)目:拉活怎么做的
● 應(yīng)用安裝過程
某海外直播公司
● 線程和進(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源碼角度講解)谭梗?
● 簡述IPC?
● fragment之間傳遞數(shù)據(jù)的方式宛蚓?
● 簡述tcp四次揮手?
● threadlocal原理
● 內(nèi)存泄漏的可能原因激捏?
● 用IDE如何分析內(nèi)存泄漏?
● OOM的可能原因凄吏?
● 線程死鎖的4個(gè)條件远舅?
● 差值器&估值器
● 簡述消息機(jī)制相關(guān)
● 進(jìn)程間通信方式?
● Binder相關(guān)痕钢?
● 觸摸事件的分發(fā)图柏?
● 簡述Activity啟動(dòng)全部過程?
● okhttp源碼任连?
● RxJava簡介及其源碼解讀蚤吹?
● 性能優(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ǔ)方式
● 微信主頁面的實(shí)現(xiàn)方式
● 微信上消息小紅點(diǎn)的原理
● 兩個(gè)不重復(fù)的數(shù)組集合中椭懊,求共同的元素诸蚕。
● 上一問擴(kuò)展步势,海量數(shù)據(jù),內(nèi)存中放不下背犯,怎么求出坏瘩。
● Java中String的了解。
● ArrayList與LinkedList區(qū)別
● 堆排序過程漠魏,時(shí)間復(fù)雜度倔矾,空間復(fù)雜度
● 快速排序的時(shí)間復(fù)雜度,空間復(fù)雜度
● RxJava的作用柱锹,與平時(shí)使用的異步操作來比哪自,優(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)