Android進階學習資料!4面位元組跳動拿到Offer,揮淚整理面經
導語
本部分內容是關於Android進階的一些知識總結,涉及到的知識點比較雜,不過都是面試中幾乎常問的知識點,也是加分的點。
關於這部分內容,可能需要有一些具體的專案實踐。在面試的過程中,結合具體自身實踐經歷,才能更加深入透徹的描繪出來。
Android高階知識點
一、Android效能優化
1.描述一下android的系統架構?
2.Android執行緒間通訊有哪幾種方式
3. 如何避免OOM異常
4.Android程式執行時許可權與檔案系統許可權的區別?
5.Hybrid 通訊原理是什麼,有做研究嗎?
6.Framework工作方式及原理,Activity是如何生成一個view的,機制是什麼
7.ANR是什麼?怎樣避免和解決ANR
8.Devik程序,linux程序,執行緒的區別
9.卡頓 {如何檢測卡頓,卡頓原理是什麼,怎麼判斷頁面響應卡頓還是邏輯處理造成的卡頓} ,BlockCanary 的原理
二、Android熱修復、外掛化、元件化
1.談談對 ClassLoader 的理解
2.自定義 ClassLoader
3.外掛化為什麼會出現,如何程式碼載入,資源載入,代理 Hook)
4.如何從一個老專案一步步實現元件化,主要問思路,考察架構能力和思考能力。(需要考慮很多,每一步做什麼,順序很重要)
5.元件化和模組化的理解與區別?
6.class檔案載入Dex原理
7.Gradle自動補丁包生成原理
三、Android Framework、 ROM定製、Ubuntu、Linux之類的問題
1.Binder 機制(IPC、AIDL 的使用)
2.Activity 啟動流程,App 啟動流程
3.Android 影象顯示相關流程,Vsync 訊號等
4.為什麼使用 Parcelable,好處是什麼
5.AMS 、PMS
6.類載入機制
7.Ubuntu編譯安卓系統
8.對Dalvik、ART虛擬機器有什麼瞭解?
9.JVM記憶體區域,開執行緒影響哪塊記憶體
四、架構設計和設計模式
1.MVC MVP MVVM原理和區別
2.專案中常用的設計模式
3.說說EventBus作用,實現方式,代替EventBus的方式
4.Fragment如果在Adapter中使用應該如何解耦?
5.實現一個Json解析器(可以通過正則提高速度)
6.從0設計一款App整體架構,如何去做?
7.Fragment如果在Adapter中使用應該如何解耦?
8.談談你對Android設計模式的理解
五、演算法
1.手寫一個氣泡排序
2.快速排序的過程、時間複雜度、空間複雜度
3.蟻群演算法與蒙特卡洛演算法
4.兩個不重複的陣列集合中,求共同的元素。
5.2000萬個整數,找出第五十大的數字?
6.求1000以內的水仙花數以及40億以內的水仙花數
7.寫出你所知道的排序演算法及時空複雜度,穩定性
8.二叉樹給出根節點和目標節點,找出從根節點到目標節點的路徑
六、網路和安全機制
1.TCP的3次握手和四次揮手
2.HTTP與HTTPS的區別以及如何實現安全性
3.App 是如何沙箱化,為什麼要這麼做?
4.談談你對WebSocket的理解
5.請解釋安卓為啥要加簽名機制?
6.HTTP1.0與2.0的區別
7.視訊加密傳輸
8.https中哪裡用了對稱加密,哪裡用了非對稱加密,對加密演算法(如RSA)等是否有了解?
七、Flutter相關
1.Flutter 中的生命週期
2.Widget 和 element 和 RenderObject 之間的關係?
3.Flutter中的Widget、State、Context 的核心概念?是為了解決什麼問題?
4.State 物件的初始化流程?
5.講一下flutter的幾個特點/優缺點
6.Flutter 如何與 Android iOS 通訊?
7.說一下什麼是狀態管理,為什麼需要它?
8.說一下 BLoC 模式?
更多學習和討論,歡迎加入我們的知識星球!
群內有許多來自一線的技術大牛,也有在小廠或外包公司奮鬥的碼農,我們致力打造一個平等,高質量的Android交流圈子,不一定能短期就讓每個人的技術突飛猛進,但從長遠來說,眼光,格局,長遠發展的方向才是最重要的。
這裡有2000+小夥伴,讓你的學習不寂寞~·