1. 程式人生 > 其它 >Android中為什麼需要Handler,不可思議

Android中為什麼需要Handler,不可思議

阿里一面(考察技術深度)面試時間1小時

1. 面試官:來先介紹下你最成熟的一個專案是哪個?

(放心,面試上來都是先問你專案,瞭解下你情況)

2. 面試官:嗯嗯嗯,好的,我這有紙,能簡單的畫一下你這個專案的架構圖嗎?

3. 面試官:好,來說一說在專案中做過哪些優化?

4. 面試官:按照你說的,在專案啟動的時候,為了提速開啟APP,你說你做了dex分包的預載入操作,為什麼需要多開一個程序單獨進行dex的預載入?

5. 面試官:dex一般都解壓到哪裡?如何做的?

6. 面試官:MVP的缺點是什麼?

7. 面試官:除了MVP,MVC,MVVM外還有什麼其他的架構方式?

(考下你的知識點,還是比較簡單的,想必大家都瞭解過吧,很久以前瞭解的clean架構,還有jetpack的AAC)

好了,面試到這裡已經有段時間了,問題還是比較簡單的,屬於熱身階段,下面就開始進入深度的問題了

8. 面試官:你做了Android這麼久了,說一說你擅長的地方

(你們懂的,深入問題先得弄清你哪裡擅長,不然沒法進入深度提問,當然這裡作者選擇了效能優化方向)

9. 面試官:來說一說,在5.0以上和4.0載入dex時的方式有什麼區別?

(這個還是有一定深度的,沒有真正做過效能優化的小夥伴們,可能真的不知道,簡單說下,5.0以上會在安裝的時候就會自動載入多dex了,而4.0不會)

10. 面試官:為什麼5.0以上要有這個機制?

(這個還真沒答上來,知道的小夥伴們記得留言)

11. 面試官:你瞭解過odex嗎?

(估計是對上一題的提醒,無奈只是聽過,具體不是很瞭解)

12. 面試官:說一下你瞭解的Android虛擬機器有哪些?

(繼續深挖。。。ART虛擬機器,dalvik虛擬機器,說完感覺有的後悔,感覺接下來的問題就是要繼續深挖)

13. 面試官:這兩個虛擬機器有什麼區別嗎?

(還好還好,還是知道一點的,ART虛擬機器是可以自動在安裝的時候就去載入多dex的,但是dalvik虛擬機器不會哦)

14. 面試官:低頭看簡歷,大概2分鐘,繼續問:說說什麼是同步屏障,在Android繪製的過程中,掉幀是如何處理的

(沒有繼續深挖虛擬機器,這個考察的都是Android繪製的原理,看過原理的應該都知道,同步屏障,然後傳送VSync脈衝訊號包括掉幀的處理等等,還是比較簡單的,就不一一敘述了)

15.面試官:瞭解過x2c嗎?它和常規的xml轉換有什麼區別 (比較簡單,不在敘述)

16.面試官:Handler持有Activity的引用會造成記憶體洩漏,那麼如何避免?

17.面試官:記憶體洩漏,還有哪些檢測工具?

18.面試官:LeakCanary 的原理說一說 (你們懂的,肯定是17題的時候,我引出的LeakCanary 。。。。哈哈,陳述原理吧)

19.面試官:ANR 的原理說一說

20.面試官:還做了哪些記憶體優化

(縮減包體積,縮減資源路徑 微信的一個框架AndResGuard瞭解下,還可以把圖片轉換成webp)

21.面試官:webp和普通的png的區別在哪

(好吧,上一題留的坑,不過只是知道webp滿足圖片的清晰度要求及大小會很小,其他的瞭解的不多)

22.面試官:webp的原理你知道嗎

(佈置到。。。=,=)

23.面試官:okHttp的原理你瞭解嗎?使用時是如何對它封裝的

(這個還是瞭解的,開始考網路方面了)

24.面試官:dagger瞭解過嗎?動態編譯知道嗎?

(基礎送分題)

25.面試官:動態編譯和反射相比,除了效能方面外還有什麼區別?

26.面試官:來後面有黑板,畫一下工廠模式的UML圖吧

(1面進入了尾聲,考察下動手能力)

27.面試官:處理過什麼手勢回饋嗎

28.面試官:處理死鎖嗎?如何避免

(估計是感覺我有點疲憊和緊張,開始問一些簡單的問題緩和下,哈哈)

29.面試官:http和https有什麼區別?

30.面試官:三次握手簡單說下

31.面試官:做個題吧,就寫個雙鏈表翻轉吧

(最後一題)

一面完事,然後進來一個人非常好的兄臺,給我送了一杯水

結尾

最後,針對上面談的內容,給大家推薦一個Android資料,應該對大家有用。

首先是一個知識清單:(對於現在的Android及移動網際網路來說,我們需要掌握的技術)

泛型原理丶反射原理丶Java虛擬機器原理丶執行緒池原理丶
註解原理丶註解原理丶序列化
Activity知識體系(Activity的生命週期丶Activity的任務棧丶Activity的啟動模式丶View原始碼丶Fragment核心相關丶service原理等)
程式碼框架結構優化(資料結構丶排序演算法丶設計模式)
APP效能優化(使用者體驗優化丶適配丶程式碼調優)
熱修復丶熱升級丶Hook技術丶IOC架構設計
NDK(c程式設計丶C++丶JNI丶LINUX)
如何提高開發效率?
MVC丶MVP丶MVVM
微信小程式
Hybrid
Flutter

接下來是資料清單:(敲黑板!!!

開源分享:《Android學習筆記總結+移動架構視訊+大廠面試真題+專案實戰原始碼》

1.資料結構和演算法

2.設計模式

3.全套體系化高階架構視訊;七大主流技術模組,視訊+原始碼+筆記

4.面試專題資料包(怎麼能少了一份全面的面試題總結呢~)

不論遇到什麼困難,都不應該成為我們放棄的理由!共勉~

如果你看到了這裡,覺得文章寫得不錯就給個讚唄?如果你覺得那裡值得改進的,請給我留言。一定會認真查詢,修正不足。謝謝。