凜冬已至,一個android碼農面進了騰訊,終於到達2020的春日

yilian發表於2019-12-18

由於眾所周知的原因,原生android開發如今已經日漸凋敝,

作為一個Android程式設計師,不僅要會Java,Kotlin,JavaScript,Css,Html,還要會Flutter,C++,FFmpeg,Linux等相關知識。

我有個朋友面試了n家公司,終於面上了騰訊
前前後後面試了快二十家公司,既有外包,也有中小型企業,也有準備D輪甚至上市的C輪企業,更有BAT等知名企業。
接下來就一一說一下他去面試各家公司的面試題。
也建議各位面試的時候不要上來就直奔BAT等,大廠面試官的技術廣度與深度也不是剛出來面試的你,能搞定的。
最好先去一些小公司看看他們問的哪些東西,自己回去在查漏補缺一下,最後去大廠。
最後祝各位能進入自己心儀的公司。

按照面試的時間順序來一一羅列他記住的面試題

image
image

武漢佰鈞成(外包OPPO,自家面試官)

兩輪面試

  • Activity的啟動流程
  • Activity的啟動模式,應用場景
  • 如何減少對第三方框架的耦合
  • hashmap的基本原理
image
image

博彥科技(外包OPPO,OPPO面試官)

兩輪面試

  • Handler機制
  • Binder機制
  • 寫一個單例模式,DCL為什麼要加V關鍵字
  • 直接在Activity Sleep 5000ms,再post一個runable會不會ANR。
  • 如何監聽ANR
  • View的繪製流程,每個都是幹什麼的
  • 事件傳遞機制
image
image

Insta360 (C輪公司)

三輪面試

  • 元件化如何實現元件通訊
  • HashMap基本原理 如何減少hash衝突 如何增大hash衝突
  • 安裝包怎麼最佳化的
  • 如果有A,B,C,D,E五個步驟,每個步驟都需要操作對應請求,用哪種設計模式。
image
image

華為外包

兩輪技術面試

  • 安裝包最佳化做了哪些工作
  • 對加班怎麼看的

本來一面完了就讓等著二面的,等了十分鐘後跟說二面面試官暫時不在,等下次再約時間,

出門等了10分鐘的公交,離家還有20分鐘的時候,又給他打電話讓他回去參加第二面,

然後就沒去了,太折騰人。

image
image

綠網科技

三輪技術面

  • hashmap原理
  • MVP,MVVM,MVC的區別是什麼
  • Java Memory Model的記憶體模型
  • 如果讓你設計一個app,打算怎麼設計
  • JVM垃圾回收有哪幾種演算法,有哪幾種垃圾回收處理器
  • Serial使用的哪一種回收演算法
  • JVM的記憶體模型
  • Android主執行緒是怎麼啟動的
  • dex是如何轉為機器碼的
  • llvm編譯是如何最佳化程式碼的
  • 說一個你自己的缺點。
image
image

同洲電子

四輪技術面

  • Activity的啟動流程
  • 靜態類的靜態方法能不能被子類重寫(不能,走的invoke-static指令,只有走invoke-virtual指令的才可能實現多型)
  • Linux的啟動流程
  • 對Native層有沒有興趣
  • 對做智慧家居有沒有興趣
  • 招一個應屆生進來做app也是做,招你也是做,為什麼要招你
image
image

順豐科技

一輪技術面 總共三輪面試

  • handler機制
  • looper的喚醒是在Java還是Native層,怎麼做到的
  • HashMap,ConcurrentHashMap,HashTable有什麼異同
  • Binder通訊機制
  • 跨平臺開發熟不熟悉
  • 如何提高海外使用者的訪問速度,假設伺服器在深圳。
  • 如何學習一個新東西,有哪些執行步驟
image
image

百度

  • 紅包隨機演算法 是怎麼做到的
  • 寫一個二叉樹的深度優先遍歷,遞迴 非遞迴
  • Android中LocalServerSocket是幹什麼用的
  • binder的Native層程式碼看過嗎
  • Linux有哪些RPC機制
  • 為什麼android使用了Binder機制沒采用共享記憶體
  • 如果讓你設計一套程式間通訊的機制,你會怎麼設計
  • Linux的模組動態載入機制是怎麼實現的
  • 一個物理屏劃分為三個邏輯屏,是靠誰來分發事件的。
  • ConcurrentHashMap是不是絕對的執行緒安全。(final,絕對執行緒安全,相對執行緒安全,執行緒不安全)
  • 執行緒池是如何管理執行緒狀態的
image
image

大宇無限(C輪公司 前身是豌豆莢)

他第二心儀的一家公司,辦公環境,氛圍,福利都特別好 總共七輪面試 五輪技術面

  • Kotlin的訪問許可權
  • Koltin為什麼比Java更安全
  • Koltin比Java好在哪
  • JVM的記憶體模型
  • JMM的記憶體模型
  • 為什麼運算元棧是Thread-Private
  • 計算二叉樹的深度
  • ArrayList跟LinkeList區別
  • ArrayList如何擴容的,如何提高ArrayList的效率
  • 動態代理靜態代理區別
  • 啟動最佳化怎麼做的。
  • 如果給你個IOS APP,你打算怎麼最佳化。
  • http有哪幾種版本,版本間有什麼區別。https跟http有什麼區別。
  • apk為什麼要簽名,v1跟v2簽名的區別
  • apk從編譯打包都安裝的流程
  • dex到odex為什麼不能在編譯期最佳化
  • 熱修復原理
  • 你的優勢是什麼
image
image

平安

三輪面試

  • http2.0 1.1 1.0的區別
  • http如何保證安全性
  • 安裝包最佳化有哪幾種方式
  • 啟動最佳化有哪幾種方式
  • View的繪製流程,每個方法幹什麼的,如果要獲取View的寬高,在哪個方法裡獲取
  • 如何應對弱網環境
  • android資料儲存方式
  • 如果一個app無法訪問網路,你怎麼做資料儲存。
  • DVM跟JVM的區別
  • React Native跟原生開發的優劣
image
image

騰訊

三輪面試 一面

  • 演算法題 通電小球
  • Android 沉浸式狀態列 怎麼實現的
  • 事件處理函式有哪幾個,父View 子View 監聽同一個事件,重寫哪些方法。在哪個View重寫?
  • ViewRootImpl接受事件嗎?
  • apk編譯打包流程 V1,V2 簽名區別
  • 利用logging監聽方法耗時,會不會讓app增大延遲。
  • eventbus為什麼要用CopyOnWriteList?
  • 外掛化怎麼載入資源的?
  • JVM怎麼保證gc效率跟執行緒執行效率的 ?
  • 如果android沒用對應的view,flutter能執行嗎? 手寫單例模式,volatile 跟 synchronized區別?
  • 介面暴露,但是不讓別人呼叫,有哪些辦法?

二面

  • 為什麼採用flatbuffer? 比Json好在哪裡?
  • 如何處理Crash,NativeCrash呢?Google是怎麼做到的?如果上報過程中再次產生Crash能不能捕捉到?
  • uncaughtException是被誰呼叫的,如果再次崩潰能不能捕獲到?
  • Linux是怎麼知道app崩潰的,如果想要在被kill前 做一些耗時操作,該怎麼做?
  • 考慮設計一個crash捕捉模組。
  • 100萬個數字求100個最大值。
  • 手寫快速排序演算法。

三面 (GM面)

  • kotlin比Java好在哪裡,是函數語言程式設計嗎?
  • 如何防止DNS劫持?
  • 如果讓你實現一個偵錯程式,你會怎麼設計?靜態除錯?動態除錯呢?

總結

大廠基本上不太看重具體的技術,無論你是Java還是C++,比較看重思路與抽象的解決方案

如果看到這裡的同學,想在技術上有精進的話,推薦幾本書跟專欄

強烈推薦《深入理解JVM(周志明)》《Android開發藝術探索》《Android核心剖析》

推薦 《Linux鳥哥私房菜》《unix環境高階程式設計》

image
image
image
image

這幾本有PDF版,需要可以私信我【書籍】檢視

https://shimo.im/docs/x9X6TTW6KqqhHGy6

強烈推薦 極客時間專欄: 《張紹文-Android開發高手課》

這篇專欄非常非常吊 不過要求要有C++跟Linux基礎 而且張紹文自己也在後面講了,如果把他的文章裡講的內容全部摸透,熟悉過了之後,再刷點演算法題,基本上沒有進不去的大廠

還有更多的面試題和演算法題,可以私信我【安卓】或者檢視這篇文章:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2669318/,如需轉載,請註明出處,否則將追究法律責任。

相關文章