天天看點

2021華為Android面試真題解析了解Android架構元件後,建構APP超簡單!輕松拿下offer

其實不是Android不行了,而是你跟不上了

我的很多讀者都在回報說,現在一個崗位可以收到的履歷數,是前幾年的幾倍。我們必須承認,僧多粥少就是 Android 行業的現狀,别說國中級工程師,就是進階工程師也是一抓一大把。企業招人的眼光也越來越高,如果你沒點“真東西”,是真的挺難的。

前幾天和一位 Android 前輩聊天,他說面試中很多工程師,對特别基礎的問題都停留在“使用過”或者“聽說過”。沒有深入到技術細節裡,在競争激烈的市場中就隻能被淘汰。下面這些,是他提到的幾個問題,你能快速回答上麼?

  • SoftReference(軟引用)在記憶體不足時會被虛拟機回收,那它會不會導緻 OOM?
  • Android 的 Touch 事件中 CANCEL 事件是如何産生的?哪些場景下會發生 CANCEL 事件?
  • Handler 中的 Looper 無限循環,為什麼沒有阻塞UI主線程?
  • 你在履歷中寫“精通多線程”,那麼:線程中自己的“工作記憶體”指的是什麼? 為什麼阿裡開發規範中不允許使用 Executors 建立線程池?

你一定想說“面試造火箭,工作擰螺絲”。實際上,你的答案反映了你對技術了解的深度,以及解決問題的能力。 聽起來很套路,但企業需要的是能對自己送出代碼負責、對使用每一個工具負責的「進階/資深 Android 開發」。

OPPO面試

第一面

1、手寫算法題。貓撲素數;1到n,求1的個數;單詞反轉;

2、Activity的加載模式。

standard,singleTop,singleTask,singleInstance。

3、什麼時候會用到singleTask?

在MainActivity的時候用到

4、Handler機制?

5、一個線程是否隻有一個Looper?

6、如何保證一個線程隻有一個Looper?

7、多線程的方式有哪些?

8、ANR異常發生條件

(1)5s内沒有響應使用者輸入事件

(2)10s内廣播接收器沒有處理完畢

(3)20s内服務沒有處理完畢

9、如何分析ANR?

10、自定義View和ViewGroup

11、事件處理:分發,攔截,處理。

12、GC算法

13、View動畫,屬性動畫,幀動畫。再說下View和屬性動畫差別。

第二面

1、OkHttp原理?

2、Retrofit原理?為何用代理?代理的作用是什麼?

3、ButterKnife原理?用到反射嗎?為什麼?

4、ANR異常如何查找并分析?

5、JVM記憶體模型?性能調優?

6、垃圾搜集算法有哪些?G1算法?

7、Http和Https的差別?

(1)Https是ssl加密傳輸,Http是明文傳輸

(2)Https是使用端口443,而Http使用80

(3)HttpsSSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定要比Http協定安全

(4)Https協定需要到CA申請證書

8、加密算法有哪些?對稱加密和非對稱加密的差別?

(1)MD5,SHA1,Base64,RSA,AES,DES

(2)對稱:使用相同密鑰,需要在網絡傳輸,安全性不高。

(3)非對稱:使用一對密鑰,公鑰和私鑰,私鑰不在網絡傳輸,是以安全性高。

9、TCP的三次握手?兩次行不行?為什麼?TCP攻擊知道嗎?如何進行攻擊?

10、記憶體優化如何做?

11、看過那些源碼?

12、會對代碼進行review嗎?何時review?怎麼review?

13、項目中遇到的讓你棘手的問題?多久解決,怎麼解決?

14、平時如何學習?何時學習?怎麼學習?學習管道?

第三面

1、前幾次面試感覺如何?

2、你現在的APP日活是多少?

3、你現在如何處理崩潰日志?

4、你覺得小團隊好還是大團隊好? 5 你的優點和缺點說下?

6、你的發展方向說下?是先講究寬度還是講究深度,為什麼?

7、為什麼離職?

8、其他小問題,如哪裡人啊?現在工資怎樣?要求如何,何時到崗啊?有什麼問題要問我的嗎?

騰訊

三輪面試 一面

1、算法題 通電小球

2、Android 沉浸式狀态欄 怎麼實作的

3、事件處理函數有哪幾個,父View 子View 監聽同一個事件,重寫哪些方法。在哪個View重寫?

4、ViewRootImpl接受事件嗎?

5、apk編譯打包流程 V1,V2 簽名差別

6、利用logging監聽方法耗時,會不會讓app增大延遲。

7、插件化怎麼加載資源的?

8、JVM怎麼保證gc效率跟線程運作效率的 ?

9、如果android沒用對應的view,flutter能運作嗎? 手寫單例模式,volatile 跟 synchronized差別?

10、接口暴露,但是不讓别人調用,有哪些辦法?

二面

1、為什麼采用flatbuffer? 比Json好在哪裡?

2、如何處理Crash,NativeCrash呢?Google是怎麼做到的?如果上報過程中再次産生Crash能不能捕捉到?

3、uncaughtException是被誰調用的,如果再次崩潰能不能捕獲到?

4、Linux是怎麼知道app崩潰的,如果想要在被kill前 做一些耗時操作,該怎麼做?

5、考慮設計一個crash捕捉子產品。

6、100萬個數字求100個最大值。

7、手寫快速排序算法。

三面 (GM面)

1、kotlin比Java好在哪裡,是函數式程式設計嗎?

2、如何防止DNS劫持?

3、如果讓你實作一個調試器,你會怎麼設計?靜态調試?動态調試呢?

最後

在此為大家準備了四節優質的Android進階進階視訊:

架構師項目實戰——全球首批Android開發者對Android架構的見解

下方二維碼直接領取:

2021華為Android面試真題解析了解Android架構元件後,建構APP超簡單!輕松拿下offer

附相關架構及資料

2021華為Android面試真題解析了解Android架構元件後,建構APP超簡單!輕松拿下offer

roid進階進階視訊:**

架構師項目實戰——全球首批Android開發者對Android架構的見解

下方二維碼直接領取:

[外鍊圖檔轉存中…(img-hkuXfMvo-1629362974665)]

附相關架構及資料

[外鍊圖檔轉存中…(img-91LNAWsi-1629362974667)]

領取擷取往期Android進階架構資料、源碼、筆記、視訊。進階UI、性能優化、架構師課程、NDK、混合式開發(ReactNative+Weex)微信小程式、Flutter全方面的Android進階實踐技術,群内還有技術大牛一起讨論交流解決問題。

繼續閱讀