送給2018 年Android程序猿的面試必備大綱

阿里巴巴

● 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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壤巷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞧毙,更是在濱河造成了極大的恐慌胧华,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宙彪,死亡現(xiàn)場離奇詭異矩动,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)释漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門悲没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人男图,你說我怎么就攤上這事示姿。” “怎么了享言?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵峻凫,是天一觀的道長。 經(jīng)常有香客問我览露,道長荧琼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任差牛,我火速辦了婚禮命锄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘偏化。我一直安慰自己脐恩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布侦讨。 她就那樣靜靜地躺著驶冒,像睡著了一般苟翻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骗污,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天崇猫,我揣著相機(jī)與錄音,去河邊找鬼需忿。 笑死诅炉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屋厘。 我是一名探鬼主播涕烧,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼汗洒!你這毒婦竟也來了议纯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤仲翎,失蹤者是張志新(化名)和其女友劉穎痹扇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溯香,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年浓恶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玫坛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡包晰,死狀恐怖湿镀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伐憾,我是刑警寧澤勉痴,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站树肃,受9級(jí)特大地震影響蒸矛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胸嘴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一雏掠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劣像,春花似錦乡话、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诬像。三九已至,卻和暖如春闸婴,著一層夾襖步出監(jiān)牢的瞬間坏挠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工掠拳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留癞揉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓溺欧,卻偏偏與公主長得像喊熟,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姐刁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354