如果做壹個框架圖,是這樣的:這只是壹個簡單的框架圖,但實際上有很多分支。
很多大公司在面試的時候都會有很多技術性的面試問題,這是程序員必不可少的話題。
例如:
1.Android中多進程通信的方式有哪些?
2.妳用什麽進行過程交流?原理是什麽?(字節跳動、小米)
3.描述活頁夾機構的原理?(東方頭條)
4.4的工作流程是怎樣的。Binder線程池?(東方頭條)
5.5號是怎麽做到的?處理程序與線程通信?原理是什麽?(東方頭條)
6.Handler如果沒有消息處理,是阻塞還是非阻塞?(字節跳動、小米)
7.handler.post (runnable) runnable是如何執行的?(字節跳動、小米)
8.handler的回調和handlemessage存在,但是回調會返回true handleMessage嗎?(字節跳動、小米)
9.sendMessage和9的postDelay有什麽區別?漢德勒?(字節跳動)
什麽是10。IdleHandler?怎麽用,能解決什麽問題?
11.Looper.loop為什麽不阻塞主線程?(騰訊)
12.Looper無限循環為什麽沒有ANR(嗶哩嗶哩)?
13.如何在子線程中創建looper?(字節跳動、小米)
14.彎針、處理器和線之間的關系。例如,壹根線可以有多少個彎針,它可以對應多少個處理器?(字節跳動、小米)
15.如何更新UI?為什麽子線程不能更新UI?(美團)
16的原理。ThreadLocal及其在Looper中的應用?(字節跳動、小米)
17.Android如何存儲數據?
18.SharedPreference原理,commit和apply有什麽區別?使用時需要註意什麽?(騰訊)
19.如何判斷壹個APP是前臺還是後臺?
20.如何讓應用保持活力?
21.壹張圖片100x100在內存中的大小是多少?(字節跳動)
22.意圖的原理和作用,可以傳遞什麽類型的參數?
然後會擴展到與這些知識點相關的更深層次的知識細節,直到妳答不出來為止,從而發掘妳的技術邊際,從而更深入的了解妳的技術能力。
Android框架的重要性
Android框架的開發雖然比較低級,眼光比較狹隘,但是能掌握壹些原理的東西,可以通過類比繞過,開發到應用層。接下來,我們來看看框架知識有多重要。舉幾個栗子,妳或許能明白。
比如丟幀監控、函數插樁、慢函數檢測、ANR監控和啟動監控,妳需要對框架有很深的理解才能知道怎麽做監控,用什麽機制來監控,在哪裏插入函數插樁,調用哪個類、哪個方法、哪個屬性來反射...
目前大公司的app開發應該是基於模塊化、層次化、組件化、控制化的思路,而這些都是基於Android Framework系統框架底層原理的實現。
Binder是Android系統最重要的組件。
什麽是粘合劑?請看下圖,這是最清晰直觀的表達工具。
優勢描述
性能:只需要壹個數據副本,性能上僅次於* * *內存。
穩定性:基於C/S架構,職責明確,架構清晰,穩定性好。
安全性:給每個App分配壹個UID,進程的UID是標識進程的重要標誌。
Android IPC Binder機制包括:Linux準備知識,Linux中傳統的IPC通信原理,Binder IPC通信原理,Binder Java層實現,這些都有很多小分支,小細節需要認真學習和掌握。
騰訊高級工程師Binder訪談
1.Android為什麽用Binder做IPC機制?
2.到底什麽是2。活頁夾?
3.3號怎麽樣?綁定器機制跨進程?
4.活頁夾溝通的基本流程是什麽?
5.為什麽在活動之間傳遞的對象需要序列化?
6.四個組件底層的通信機制是什麽?
7.7的內部實現原理是什麽。AIDL?
這些都是面試中會問到的關於活頁夾機制的問題。
Handler主要用於異步消息處理:類似於輔助類,封裝了消息傳遞、消息處理等接口。當壹個消息被發送時,它首先進入壹個消息隊列,發送消息的函數立即返回,而另壹部分在消息隊列中逐個取出消息,然後對消息進行處理,即發送消息和接收消息是不同步的。這種機制通常用於處理相對耗時的操作。
2.為什麽使用handler?
為什麽使用handler?可以不用這個機制嗎?不會吧!android在設計的時候,封裝了壹套消息創建、傳輸和處理機制。如果不遵循這個機制,就沒有辦法更新UI信息,就會拋出異常信息。
在android的開發中,壹些操作往往是在子線程中進行的。當操作完成後,壹些數據會通過處理程序發送到主線程,通知主線程做相應的操作。探究其背後的原理:子線程處理程序主線程實際上構成了線程模型中經典的問題生產者-消費者模型。生產者-消費者模型:生產者和消費者在同壹時間段使用同壹存儲空間,生產者向存儲空間添加數據,消費者從存儲空間取走數據。