2019 金三銀四:阿里P9架構(gòu)的Android大廠面試題總結(jié)
職場的金三銀四跳槽季又來了,不同的是今年比往年「冷」一些,形式更加嚴(yán)峻一些,大家多多少少可能都聽到或看到一些信息,就是好多公司在優(yōu)化裁員,代表的就是滴滴、京東這種大型互聯(lián)網(wǎng)公司,已經(jīng)官宣了。在這種情況下,3、4月份有一波離職、求職潮。作為求職者來說,面試是一道坎,很多人會恐懼面試,即使是工作很多年的老鳥,可能仍存在面試的焦慮。
這些題目是我之前的面試以及在金三銀四中去百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線互聯(lián)網(wǎng)公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術(shù)面試的幾率。
由于涉及到的面試題較多導(dǎo)致篇幅較長,我根據(jù)這些面試題所涉及到的常問范圍總結(jié)了并做出了一份學(xué)習(xí)進階路線圖、視頻資料及面試題答案免費分享給大家,文末有領(lǐng)取!
主要分為以下幾部分:
- Android面試題
- 高級開發(fā)技術(shù)面試題
- 跨平臺Hybrid 開發(fā)
一、Android面試題
Android面試題包括Android基礎(chǔ),還有一些源碼級別的、原理這些等。所以想去大公司面試,一定要多看看源碼和實現(xiàn)方式,常用框架可以試試自己能不能手寫實現(xiàn)一下,鍛煉一下自己。
(一)Android基礎(chǔ)知識點
- 四大組件是什么
- 四大組件的生命周期和簡單用法
- Activity之間的通信方式
- Activity各種情況下的生命周期
- 橫豎屏切換的時候,Activity 各種情況下的生命周期
- Activity與Fragment之間生命周期比較
- Activity上有Dialog的時候按Home鍵時的生命周期
- 兩個Activity 之間跳轉(zhuǎn)時必然會執(zhí)行的是哪幾個方法?
- 前臺切換到后臺,然后再回到前臺,Activity生命周期回調(diào)方法。彈出* * Dialog,生命值周期回調(diào)方法。
- Activity的四種啟動模式對比
- Activity狀態(tài)保存于恢復(fù)
- fragment各種情況下的生命周期
- Fragment狀態(tài)保存startActivityForResult是哪個類的方法,在什么情況下使用?
- 如何實現(xiàn)Fragment的滑動?
- fragment之間傳遞數(shù)據(jù)的方式?
- Activity 怎么和Service 綁定?
- 怎么在Activity 中啟動自己對應(yīng)的Service?
- service和activity怎么進行數(shù)據(jù)交互?
- Service的開啟方式
- 請描述一下Service 的生命周期
- 談?wù)勀銓ontentProvider的理解
- 說說ContentProvider、ContentResolver、ContentObserver 之間的關(guān)系
- 請描述一下廣播BroadcastReceiver的理解
- 廣播的分類
- 廣播使用的方式和場景
- 在manifest 和代碼中如何注冊和使用BroadcastReceiver?
- 本地廣播和全局廣播有什么差別?
- BroadcastReceiver,LocalBroadcastReceiver 區(qū)別
- AlertDialog,popupWindow,Activity區(qū)別
- Application 和 Activity 的 Context 對象的區(qū)別
- Android屬性動畫特性
- 如何導(dǎo)入外部數(shù)據(jù)庫?
- LinearLayout、RelativeLayout、FrameLayout的特性及對比,并介紹使用場景。
- 談?wù)剬涌谂c回調(diào)的理解
- 回調(diào)的原理
- 寫一個回調(diào)demo
- 介紹下SurfView
- RecycleView的使用
- 序列化的作用,以及Android兩種序列化的區(qū)別
- 差值器
- 估值器
- Android中數(shù)據(jù)存儲方式
(二)Android源碼相關(guān)分析
- Android動畫框架實現(xiàn)原理
- Android各個版本API的區(qū)別
- Requestlayout,onlayout,onDraw,DrawChild區(qū)別與聯(lián)系
- invalidate和postInvalidate的區(qū)別及使用
- Activity-Window-View三者的差別
- 談?wù)剬olley的理解
- 如何優(yōu)化自定義View
- 低版本SDK如何實現(xiàn)高版本api?
- 描述一次網(wǎng)絡(luò)請求的流程
- HttpUrlConnection 和 okhttp關(guān)系
- Bitmap對象的理解
- looper架構(gòu)
- ActivityThread,AMS,WMS的工作原理
- 自定義View如何考慮機型適配
- 自定義View的事件
- AstncTask+HttpClient 與 AsyncHttpClient有什么區(qū)別?
- LaunchMode應(yīng)用場景
- AsyncTask 如何使用?
- SpareArray原理
- 請介紹下ContentProvider 是如何實現(xiàn)數(shù)據(jù)共享的?
- AndroidService與Activity之間通信的幾種方式
- IntentService原理及作用是什么?
- 說說Activity、Intent、Service 是什么關(guān)系
- ApplicationContext和ActivityContext的區(qū)別
- SP是進程同步的嗎?有什么方法做到同步?
- 談?wù)劧嗑€程在Android中的使用
- 進程和 Application 的生命周期
- 封裝View的時候怎么知道view的大小
- RecycleView原理
- AndroidManifest的作用與理解
(三)常見的一些原理性問題
- Handler機制和底層實現(xiàn)
- Handler、Thread和HandlerThread的差別
- handler發(fā)消息給子線程,looper怎么啟動?
- 關(guān)于Handler,在任何地方new Handler 都是什么線程下?
- ThreadLocal原理,實現(xiàn)及如何保證Local屬性?
- 請解釋下在單線程模型中Message、Handler、Message Queue、* Looper之間的關(guān)系
- 請描述一下View事件傳遞分發(fā)機制
- Touch事件傳遞流程
- 事件分發(fā)中的onTouch 和onTouchEvent 有什么區(qū)別,又該如何使用?
- View和ViewGroup分別有哪些事件分發(fā)相關(guān)的回調(diào)方法
- View刷新機制
- View繪制流程
- 自定義控件原理
- 自定義View如何提供獲取View屬性的接口?
- Android代碼中實現(xiàn)WAP方式聯(lián)網(wǎng)
- AsyncTask機制
- AsyncTask原理及不足
- 如何取消AsyncTask?
- 為什么不能在子線程更新UI?
- ANR產(chǎn)生的原因是什么?
- ANR定位和修正
- oom是什么?
- 什么情況導(dǎo)致oom?
- 有什么解決方法可以避免OOM?
- Oom 是否可以try catch?為什么?
- 內(nèi)存泄漏是什么?
- 什么情況導(dǎo)致內(nèi)存泄漏?
- 如何防止線程的內(nèi)存泄漏?
- 內(nèi)存泄露場的解決方法
- 內(nèi)存泄漏和內(nèi)存溢出區(qū)別?
- LruCache默認(rèn)緩存大小
- ContentProvider的權(quán)限管理(解答:讀寫分離,權(quán)限控制-精確到表級,URL控制)
- 如何通過廣播攔截和abort一條短信?
- 廣播是否可以請求網(wǎng)絡(luò)?
- 廣播引起anr的時間限制是多少?
- 計算一個view的嵌套層級
- Activity棧
- Android線程有沒有上限?
- 線程池有沒有上限?
- ListView重用的是什么?
- Android為什么引入Parcelable?
- 有沒有嘗試簡化Parcelable的使用?
(四)開發(fā)中常見的一些問題
- ListView 中圖片錯位的問題是如何產(chǎn)生的?
- 混合開發(fā)有了解嗎?
- 知道哪些混合開發(fā)的方式?說出它們的優(yōu)缺點和各自使用場景?(解* 答:比如:RN,weex,H5,小程序,WPA等。做Android的了解一些前- 端js等還是很有好處的);
- 屏幕適配的處理技巧都有哪些?
- 服務(wù)器只提供數(shù)據(jù)接收接口,在多線程或多進程條件下,如何保證數(shù)據(jù)的有序到達?
- 動態(tài)布局的理解
- 怎么去除重復(fù)代碼?
- 畫出 Android 的大體架構(gòu)圖
- Recycleview和ListView的區(qū)別
- ListView圖片加載錯亂的原理和解決方案
- 動態(tài)權(quán)限適配方案,權(quán)限組的概念
- Android系統(tǒng)為什么會設(shè)計ContentProvider?
- 下拉狀態(tài)欄是不是影響activity的生命周期
- 如果在onStop的時候做了網(wǎng)絡(luò)請求,onResume的時候怎么恢復(fù)?
- Bitmap 使用時候注意什么?
- Bitmap的recycler()
- Android中開啟攝像頭的主要步驟
- ViewPager使用細(xì)節(jié),如何設(shè)置成每次只初始化當(dāng)前的Fragment,其他的不初始化?
- 點擊事件被攔截,但是想傳到下面的View,如何操作?
- 微信主頁面的實現(xiàn)方式
- 微信上消息小紅點的原理
- CAS介紹(這是阿里巴巴的面試題,我不是很了解,可以參考博客: CAS簡介)
二、高級開發(fā)技術(shù)面試題
這里講的是大公司需要用到的一些高端Android技術(shù),這里專門整理了一個文檔,希望大家都可以看看。這些題目有點技術(shù)含量,需要好點時間去研究一下的。
(一)圖片
- 圖片庫對比
- 圖片庫的源碼分析
- 圖片框架緩存實現(xiàn)
- LRUCache原理
- 圖片加載原理
- 自己去實現(xiàn)圖片庫,怎么做?
- Glide源碼解析
- Glide使用什么緩存?
- Glide內(nèi)存緩存如何控制大???
(二)網(wǎng)絡(luò)和安全機制
- 網(wǎng)絡(luò)框架對比和源碼分析
- 自己去設(shè)計網(wǎng)絡(luò)請求框架,怎么做?
- okhttp源碼
- 網(wǎng)絡(luò)請求緩存處理,okhttp如何處理網(wǎng)絡(luò)緩存的
- 從網(wǎng)絡(luò)加載一個10M的圖片,說下注意事項
- TCP的3次握手和四次揮手
- TCP與UDP的區(qū)別
- TCP與UDP的應(yīng)用
- HTTP協(xié)議
- HTTP1.0與2.0的區(qū)別
- HTTP報文結(jié)構(gòu)
- HTTP與HTTPS的區(qū)別以及如何實現(xiàn)安全性
- 如何驗證證書的合法性?
- https中哪里用了對稱加密,哪里用了非對稱加密,對加密算法(如RSA)等是否有了解?
- client如何確定自己發(fā)送的消息被server收到?
- 談?wù)勀銓ebSocket的理解
- WebSocket與socket的區(qū)別
- 談?wù)勀銓Π沧亢灻睦斫狻?/li>
- 請解釋安卓為啥要加簽名機制?
- 視頻加密傳輸
- App 是如何沙箱化,為什么要這么做?
- 權(quán)限管理系統(tǒng)(底層的權(quán)限是如何進行 grant 的)?
(三)數(shù)據(jù)庫
- sqlite升級,增加字段的語句
- 數(shù)據(jù)庫框架對比和源碼分析
- 數(shù)據(jù)庫的優(yōu)化
- 數(shù)據(jù)庫數(shù)據(jù)遷移問題
(四)算法
- 排序算法有哪些?
- 最快的排序算法是哪個?
- 手寫一個冒泡排序
- 手寫快速排序代碼
- 快速排序的過程、時間復(fù)雜度、空間復(fù)雜度
- 手寫堆排序
- 堆排序過程、時間復(fù)雜度及空間復(fù)雜度
- 寫出你所知道的排序算法及時空復(fù)雜度,穩(wěn)定性
- 二叉樹給出根節(jié)點和目標(biāo)節(jié)點,找出從根節(jié)點到目標(biāo)節(jié)點的路徑
- 給阿里2萬多名員工按年齡排序應(yīng)該選擇哪個算法?
- GC算法(各種算法的優(yōu)缺點以及應(yīng)用場景)
- 蟻群算法與蒙特卡洛算法
- 子串包含問題(KMP 算法)寫代碼實現(xiàn)
- 一個無序,不重復(fù)數(shù)組,輸出N個元素,使得N個元素的和相加為M,給出時間復(fù)雜度、空間復(fù)雜度。手寫算法
- 萬億級別的兩個URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分組->多文件讀寫效率->磁盤尋址以及應(yīng)用層面對尋址的優(yōu)化)
- 百度POI中如何試下查找最近的商家功能(提示:坐標(biāo)鏡像+R樹)。
- 兩個不重復(fù)的數(shù)組集合中,求共同的元素。
- 兩個不重復(fù)的數(shù)組集合中,這兩個集合都是海量數(shù)據(jù),內(nèi)存中放不下,怎么求共同的元素?
- 一個文件中有100萬個整數(shù),由空格分開,在程序中判斷用戶輸入的整數(shù)是否在此文件中。說出最優(yōu)的方法
- 一張Bitmap所占內(nèi)存以及內(nèi)存占用的計算
- 2000萬個整數(shù),找出第五十大的數(shù)字?
- 燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現(xiàn)在有若干條材質(zhì)相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
- 求1000以內(nèi)的水仙花數(shù)以及40億以內(nèi)的水仙花數(shù)
- 5枚硬幣,2正3反如何劃分為兩堆然后通過翻轉(zhuǎn)讓兩堆中正面向上的硬8幣和反面向上的硬幣個數(shù)相同
- 時針走一圈,時針分針重合幾次
- N*N的方格紙,里面有多少個正方形
- x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完?
- (五)插件化、模塊化、組件化、熱修復(fù)、增量更新、Gradle
- 對熱修復(fù)和插件化的理解
- 插件化原理分析
- 模塊化實現(xiàn)(好處,原因)
- 熱修復(fù),插件化
- 項目組件化的理解
- 描述清點擊 Android Studio 的 build 按鈕后發(fā)生了什么
(六)架構(gòu)設(shè)計和設(shè)計模式
- 談?wù)勀銓ndroid設(shè)計模式的理解
- MVC MVP MVVM原理和區(qū)別
- 你所知道的設(shè)計模式有哪些?
- 項目中常用的設(shè)計模式
- 手寫生產(chǎn)者/消費者模式
- 寫出觀察者模式的代碼
- 適配器模式,裝飾者模式,外觀模式的異同?
- 用到的一些開源框架,介紹一個看過源碼的,內(nèi)部實現(xiàn)過程。
- 談?wù)剬xJava的理解
- RxJava的功能與原理實現(xiàn)
- RxJava的作用,與平時使用的異步操作來比的優(yōu)缺點
- 說說EventBus作用,實現(xiàn)方式,代替EventBus的方式
- 從0設(shè)計一款A(yù)pp整體架構(gòu),如何去做?
- 說一款你認(rèn)為當(dāng)前比較火的應(yīng)用并設(shè)計(比如:直播APP,P2P金融,小視頻等)
- 談?wù)剬ava狀態(tài)機理解
- Fragment如果在Adapter中使用應(yīng)該如何解耦?
- Binder機制及底層實現(xiàn)
- 對于應(yīng)用更新這塊是如何做的?(解答:灰度,強制更新,分區(qū)域更新)?
- 實現(xiàn)一個Json解析器(可以通過正則提高速度)
- 統(tǒng)計啟動時長,標(biāo)準(zhǔn)
(七)性能優(yōu)化
- 如何對Android 應(yīng)用進行性能分析以及優(yōu)化?
- ddms 和 traceView
- 性能優(yōu)化如何分析systrace?
- 用IDE如何分析內(nèi)存泄漏?
- Java多線程引發(fā)的性能問題,怎么解決?
- 啟動頁白屏及黑屏解決?
- 啟動太慢怎么解決?
- 怎么保證應(yīng)用啟動不卡頓?
- App啟動崩潰異常捕捉
- 自定義View注意事項
- 現(xiàn)在下載速度很慢,試從網(wǎng)絡(luò)協(xié)議的角度分析原因,并優(yōu)化(提示:網(wǎng)絡(luò)的5層都可以涉及)。
- Https請求慢的解決辦法(提示:DNS,攜帶數(shù)據(jù),直接訪問IP)
- 如何保持應(yīng)用的穩(wěn)定性
- RecyclerView和ListView的性能對比
- ListView的優(yōu)化
- RecycleView優(yōu)化
- View渲染
- Bitmap如何處理大圖,如一張30M的大圖,如何預(yù)防OOM
- java中的四種引用的區(qū)別以及使用場景
- 強引用置為null,會不會被回收?
(八)NDK、jni、Binder、AIDL、進程通信有關(guān)
- 請介紹一下NDK
- 什么是NDK庫?
- jni用過嗎?
- 如何在jni中注冊native函數(shù),有幾種注冊方式?
- Java如何調(diào)用c、c++語言?
- jni如何調(diào)用java層代碼?
- 進程間通信的方式?
- Binder機制
- 簡述IPC?
- 什么是AIDL?
- AIDL解決了什么問題?
- AIDL如何使用?
- Android 上的 Inter-Process-Communication 跨進程通信時如何工作的?
- 多進程場景遇見過么?
- Android進程分類?
- 進程和 Application 的生命周期?
- 進程調(diào)度
- 談?wù)剬M程共享和線程安全的認(rèn)識
- 談?wù)剬Χ噙M程開發(fā)的理解以及多進程應(yīng)用場景
- 什么是協(xié)程?
(九)framework層、ROM定制、Ubuntu、Linux之類的問題
- java虛擬機的特性
- 談?wù)剬vm的理解
- JVM內(nèi)存區(qū)域,開線程影響哪塊內(nèi)存
- 對Dalvik、ART虛擬機有什么了解?
- Art和Dalvik對比
- 虛擬機原理,如何自己設(shè)計一個虛擬機(內(nèi)存管理,類加載,雙親委派)
- 談?wù)勀銓﹄p親委派模型理解
- JVM內(nèi)存模型,內(nèi)存區(qū)域
- 類加載機制
- 談?wù)剬lassLoader(類加載器)的理解
- 談?wù)剬討B(tài)加載(OSGI)的理解
- 內(nèi)存對象的循環(huán)引用及避免
- 內(nèi)存回收機制、GC回收策略、GC原理時機以及GC對象
- 垃圾回收機制與調(diào)用System.gc()區(qū)別
- Ubuntu編譯安卓系統(tǒng)
- 系統(tǒng)啟動流程是什么?(提示:Zygote進程 –> SystemServer進程 –> 各種系統(tǒng)服務(wù) –> 應(yīng)用進程)
- 大體說清一個應(yīng)用程序安裝到手機上時發(fā)生了什么
- 簡述Activity啟動全部過程
- App啟動流程,從點擊桌面開始
- 邏輯地址與物理地址,為什么使用邏輯地址?
- Android為每個應(yīng)用程序分配的內(nèi)存大小是多少?
- Android中進程內(nèi)存的分配,能不能自己分配定額內(nèi)存?
- 進程?;畹姆绞?/li>
- 如何保證一個后臺服務(wù)不被殺死?(相同問題:如何保證service在后臺不被kill?)比較省電的方式是什么?
- App中喚醒其他進程的實現(xiàn)方式
四、跨平臺Hybrid 開發(fā)
- flutter
- Html5項目實戰(zhàn)
- HTML&CSS&JavaScript 實戰(zhàn)
- WordPress搭建網(wǎng)站項目實戰(zhàn)
- 前端Vue架構(gòu)
- 前端樣式開發(fā)
- Weex內(nèi)置能力
- Weex原生應(yīng)用
- Weex擴展框架
- WeexUI架構(gòu)
- 介紹你做過的哪些項目
- 都使用過哪些框架、平臺?
- 都使用過哪些自定義控件?
- 研究比較深入的領(lǐng)域有哪些?
- 對業(yè)內(nèi)信息的關(guān)注渠道有哪些?
- 最近都讀哪些書?
- 有沒有什么開源項目?
- 自己最擅長的技術(shù)點,最感興趣的技術(shù)領(lǐng)域和技術(shù)點
- 項目中用了哪些開源庫,如何避免因為引入開源庫而導(dǎo)致的安全性和穩(wěn)定性問題
- 實習(xí)過程中做了什么,有什么產(chǎn)出?
五、小結(jié)
由于題目很多整理答案的工作量太大,所以僅限于提供知識點,如果你正在找工作,建議逐個過一遍,不懂的可以群里提問討論,但是請先自行上網(wǎng)查閱相關(guān)知識點,對于已經(jīng)掌握的可以忽略以節(jié)省時間。
希望我這些面試總結(jié)可以幫助還沒有找到工作的伙伴們,傳遞一份溫暖~
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了華為Android三面成功通過,面試官都問了什么,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-26
- 這篇文章主要介紹了Android 一線大廠面試總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-08
2019年Android高級面試題與相關(guān)知識點總結(jié)
這篇文章主要介紹了2019年Android高級面試題與相關(guān)知識點,總結(jié)分析了Android開發(fā)中涉及的各種常見知識點與相關(guān)原理,需要的朋友可以參考下2019-11-21- 這篇文章主要介紹了2019年必備的Android面試題及參考答案,整理匯總了Android開發(fā)中常見的各種知識點、技術(shù)細(xì)節(jié)與注意事項,需要的朋友可以參考下2019-10-30
- 這篇文章主要介紹了2019 Android 面試真題集錦,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)2019-08-28
這篇文章主要介紹了這20道題,聽說只有大廠的Android工程師能全對,趕快一起來測試一下自己把,看看是不是都掌握了2020-05-25


