金九銀十到了,很多小伙伴已經在面試或者面試的路上~
最近就有位阿里P7級別的Android研發跳槽騰訊,沒想到自己十年的開發經驗還沒用上就遭到面試官拒絕,到底是怎么回事呢?
經過一番溝通了解到,他是在Framework知識上吃了大虧……
**掌握 Framework 有什么用呢?**現在熱門的技術熱修復,插件化,所需要使用到的「欺上瞞下」都需要對 Activity 啟動以及與 AMS 互動等非常精通,自然需要利用 Framework的知識,此外,一些性能相關兼容,監聽 MessageQueue排查卡頓,甚至一些系統更新,例如 Android 9 對 hidden API 的限制,你也需要熟知 Framework 才可能找到突破口,
舉個例子,比如常說的 Handler,MessageQueue,Looper,看原始碼你就可以更好的理解那些概念:
-
ThreadLocal 做什么的?
-
Thread 和 Handler 的關系
-
為什么不能在子執行緒更新 UI?
-
idleHandler 什么時候運行?
-
主執行緒為什么回圈卻不會卡死?
-
ContentProvider、Broadcast、Service 是怎么利用 Message 監控 ANR 的?
再比如說 Android 的卡頓掉幀問題,很多文章都說卡頓是由于主執行緒耗時造成的,這其實只是一部分,其他的比如:
-
RenderThread 耗時也會導致卡頓
-
Binder 通信耗時也會導致卡頓
-
60 fps 下沒問題的 app 90fps或者 120fps 下也可能會卡頓
-
有時候低記憶體下你主執行緒讀個檔案可能都會導致卡頓
但如果你真正明白了卡頓的原理,再面對卡頓問題就不會那么慌了,
所以問題在于哪里?是你對于底層原理的了解,
相信近期有面試的小伙伴也可以感覺得到:現在面試是越來越難了!別說阿里、頭條、騰訊這些大廠,就連很多中小公司面試問的都全是原理,其中Framework層相關的知識非常多!
Binder和Handler就更是其中的必問項,絕對是必須要掌握的知識點!
像下面這些面試題就全是高頻問題,來看看自己能不能全答上來:
Handler 相關面試題:
-
View.post 與 Handler.post 有何不同?
-
主行程的 Looper 是何時創建的?
-
一個Thread可以有幾個Looper?幾個Handler?
-
執行緒關聯的Looper 是如何與 Handler 系結的?
-
系統中的同步屏障機制是怎樣的?
-
為什么系統不建議在子執行緒訪問UI?(為什么不能在子執行緒更新UI?)
-
MessageQueue 中如何提升訊息的優先級?
-
可以在子執行緒直接new一個Handler嗎?那該怎么做?
-
主執行緒中Looper的輪詢死回圈為何沒有阻塞主執行緒?
-
Handler記憶體泄漏問題及解決方案

Binder相關面試題:
-
Activity 啟動時與 AMS 互動,binder 互動的細節是怎么樣的?
-
ActivityThread 中的 ApplicationThread 是什么作用?
-
binder 互動程序中涉及到多少個執行緒?
-
啟動程序中如果想監控 binder 互動的頻率,怎么做?
-
binder 互動程序中,想要監控傳輸資料的大小,防止資料過大造成崩潰怎么做?
-
Binder是如何做到一次拷貝的?
-
為什么Intent不能傳遞大資料?
-
描述AIDL生成的java類細節;
-
為什么Intent不能傳遞大資料?
-
Binder機制是如何跨行程的?

一線企業的app都是多執行緒和多行程的,而Android行程間通信機制就是Binder,原生的執行緒間通信則是Handler,Binder和Handler是了解安卓運行機制必須要掌握的一個知識點,更是一線企業面試必問的知識點!
為了方便大家了解更多Android framework 相關知識點和其他技術知識點,我給大家收錄整理了一些學習檔案和面試題庫檔案,并上次至我 GitHub專案中:https://github.com/733gh/Android-T3 為了讓大家一起學習進步,特此在這分享給大家,



轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/297334.html
標籤:其他
上一篇:入職百度了!5年Android開發的求職之路,分享一波面試心得
下一篇:ios組件化
