前言
因爲衆所周知的緣由,原生android開發現在已經日漸凋敝,android
做爲一個Android程序員,不只要會Java,Kotlin,JavaScript,Css,Html,還要會Flutter,C++,FFmpeg,Linux等相關知識。程序員
我有個朋友面試了n家公司,終於面上了騰訊
前先後後面試了快二十家公司,既有外包,也有中小型企業,也有準備D輪甚至上市的C輪企業,更有BAT等知名企業。
接下來就一一說一下他去面試各家公司的面試題。
也建議各位面試的時候不要上來就直奔BAT等,大廠面試官的技術廣度與深度也不是剛出來面試的你,能搞定的。
最好先去一些小公司看看他們問的哪些東西,本身回去在查漏補缺一下,最後去大廠。
最後祝各位能進入本身心儀的公司。面試
按照面試的時間順序來一一羅列他記住的面試題算法
![image](http://static.javashuo.com/static/loading.gif)
武漢佰鈞成(外包OPPO,自家面試官)
兩輪面試編程
- Activity的啓動流程
- Activity的啓動模式,應用場景
- 如何減小對第三方框架的耦合
- hashmap的基本原理
![image](http://static.javashuo.com/static/loading.gif)
博彥科技(外包OPPO,OPPO面試官)
兩輪面試設計模式
- Handler機制
- Binder機制
- 寫一個單例模式,DCL爲何要加V關鍵字
- 直接在Activity Sleep 5000ms,再post一個runable會不會ANR。
- 如何監聽ANR
- View的繪製流程,每一個都是幹什麼的
- 事件傳遞機制
![image](http://static.javashuo.com/static/loading.gif)
Insta360 (C輪公司)
三輪面試安全
- 組件化如何實現組件通訊
- HashMap基本原理 如何減小hash衝突 如何增大hash衝突
- 安裝包怎麼優化的
- 若是有A,B,C,D,E五個步驟,每一個步驟都須要操做對應請求,用哪一種設計模式。
![image](http://static.javashuo.com/static/loading.gif)
華爲外包
兩輪技術面試服務器
原本一面完了就讓等着二面的,等了十分鐘後跟說二面面試官暫時不在,等下次再約時間,網絡
出門等了10分鐘的公交,離家還有20分鐘的時候,又給他打電話讓他回去參加第二面,app
而後就沒去了,太折騰人。
![image](http://static.javashuo.com/static/loading.gif)
綠網科技
三輪技術面
- hashmap原理
- MVP,MVVM,MVC的區別是什麼
- Java Memory Model的內存模型
- 若是讓你設計一個app,打算怎麼設計
- JVM垃圾回收有哪幾種算法,有哪幾種垃圾回收處理器
- Serial使用的哪種回收算法
- JVM的內存模型
- Android主線程是怎麼啓動的
- dex是如何轉爲機器碼的
- llvm編譯是如何優化代碼的
- 說一個你本身的缺點。
![image](http://static.javashuo.com/static/loading.gif)
同洲電子
四輪技術面
- Activity的啓動流程
- 靜態類的靜態方法能不能被子類重寫(不能,走的invoke-static指令,只有走invoke-virtual指令的纔可能實現多態)
- Linux的啓動流程
- 對Native層有沒有興趣
- 對作智能家居有沒有興趣
- 招一個應屆生進來作app也是作,招你也是作,爲何要招你
![image](http://static.javashuo.com/static/loading.gif)
順豐科技
一輪技術面 總共三輪面試
- handler機制
- looper的喚醒是在Java仍是Native層,怎麼作到的
- HashMap,ConcurrentHashMap,HashTable有什麼異同
- Binder通訊機制
- 跨平臺開發熟不熟悉
- 如何提升海外用戶的訪問速度,假設服務器在深圳。
- 如何學習一個新東西,有哪些執行步驟
![image](http://static.javashuo.com/static/loading.gif)
百度
- 紅包隨機算法 是怎麼作到的
- 寫一個二叉樹的深度優先遍歷,遞歸 非遞歸
- Android中LocalServerSocket是幹什麼用的
- binder的Native層代碼看過嗎
- Linux有哪些RPC機制
- 爲何android使用了Binder機制沒采用共享內存
- 若是讓你設計一套進程間通訊的機制,你會怎麼設計
- Linux的模塊動態加載機制是怎麼實現的
- 一個物理屏劃分爲三個邏輯屏,是靠誰來分發事件的。
- ConcurrentHashMap是否是絕對的線程安全。(final,絕對線程安全,相對線程安全,線程不安全)
- 線程池是如何管理線程狀態的
![image](http://static.javashuo.com/static/loading.gif)
大宇無限(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](http://static.javashuo.com/static/loading.gif)
平安
三輪面試
- http2.0 1.1 1.0的區別
- http如何保證安全性
- 安裝包優化有哪幾種方式
- 啓動優化有哪幾種方式
- View的繪製流程,每一個方法幹什麼的,若是要獲取View的寬高,在哪一個方法裏獲取
- 如何應對弱網環境
- android數據存儲方式
- 若是一個app沒法訪問網絡,你怎麼作數據存儲。
- DVM跟JVM的區別
- React Native跟原生開發的優劣
![image](http://static.javashuo.com/static/loading.gif)
騰訊
三輪面試 一面
- 算法題 通電小球
- 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](http://static.javashuo.com/static/loading.gif)
![image](http://static.javashuo.com/static/loading.gif)
這幾本有PDF版,須要能夠私信我【書籍】贈送
強烈推薦 極客時間專欄: 《張紹文-Android開發高手課》
這篇專欄很是很是吊 不過要求要有C++跟Linux基礎 並且張紹文本身也在後面講了,若是把他的文章裏講的內容所有摸透,熟悉過了以後,再刷點算法題,基本上沒有進不去的大廠
還有更多的面試題和算法題,能夠關注我