題圖和下面的插圖都是我根據各網站整理出來的內容,須要的直接聯繫就行了android
When the snows fall and the white winds blow, the lone wolf dies but
the pack survives ----- Ned
Stark
因爲衆所周知的緣由,原生android開發現在已經日漸凋敝,做爲一個Android程序員,不只要會Java,Kotlin,JavaScript,Css,Html,還要會Flutter,C++,FFmpeg,Linux等相關知識。程序員
筆者從7月份開始面試,到8月中旬截止(由於騰訊已經面試經過,本身面試面的也累了,就決定去騰訊了) 接下來就說說各家的面試題,一共面試了快二十家公司,既有外包,也有中小型企業,也有準備D輪甚至上市的C輪企業,更有BAT等知名企業。接下來就一一說一下各家公司的面試題。 也建議各位面試的時候不要上來就直奔BAT等,大廠面試官的技術廣度與深度也不是剛出來面試的你,能搞定的。最好先去一些小公司看看他們問的哪些東西,本身回去在查漏補缺一下,最後去大廠。 最後祝各位能進入本身心儀的公司。面試
按照面試的時間順序來一一羅列各家公
司的面試題。(記憶可能出現紕漏,哈哈,各位看看就好,有些公司的面試可能比較常規,就沒有什麼特別的印象)算法
武漢佰鈞成(外包OPPO,自家面試官)
由於是週六的專場面試,也不用請假,因此立刻就參加了這家公司的面試。 兩輪面試編程
- Activity的啓動流程
- Activity的啓動模式,應用場景
- 如何減小對第三方框架的耦合
- hashmap的基本原理
博彥科技(外包OPPO,OPPO面試官)
兩輪面試設計模式
- Handler機制
- Binder機制
- 寫一個單例模式,DCL爲何要加V關鍵字
- 直接在Activity Sleep 5000ms,再post一個runable會不會ANR。
- 如何監聽ANR
- View的繪製流程,每一個都是幹什麼的
- 事件傳遞機制
Insta360 (C輪公司)
三輪面試安全
- 組件化如何實現組件通訊
- HashMap基本原理 如何減小hash衝突 如何增大hash衝突
- 安裝包怎麼優化的
- 若是有A,B,C,D,E五個步驟,每一個步驟都須要操做對應請求,用哪一種設計模式。
華爲外包
兩輪技術面試性能優化
原本一面完了就讓我等着二面的,等了十分鐘後跟我說二面面試官暫時不在,等下次再約時間,出門等了10分鐘的公交,離家還有20分鐘的時候,又給我打電話讓我回去參加第二面,而後就沒去了,太折騰人。服務器
綠網科技
三輪技術面網絡
- hashmap原理
- MVP,MVVM,MVC的區別是什麼
-
- 若是讓你設計一個app,打算怎麼設計
- JVM垃圾回收有哪幾種算法,有哪幾種垃圾回收處理器
- Serial使用的哪種回收算法
- JVM的內存模型
- Android主線程是怎麼啓動的
- dex是如何轉爲機器碼的
- llvm編譯是如何優化代碼的
- 說一個你本身的缺點。
最終結果是這樣的 哈哈,仍是不能要過高
![clipboard.png clipboard.png](http://static.javashuo.com/static/loading.gif)
現組建了一個Android的大圈子共同取暖,內有大神小白起飛,圈內會不定時更新一些Android中高級的進階資料,歡迎你們帶着技術問題來討論,共同成長進步!(包含資深UI工程師,Android底層開發工程師,Android架構師,原生性能優化及混合優化,flutter專精,大廠面試);
同洲電子
四輪技術面
- Activity的啓動流程
- 靜態類的靜態方法能不能被子類重寫(不能,走的invoke-static指令,只有走invoke-virtual指令的纔可能實現多態)
- Linux的啓動流程
- 對Native層有沒有興趣
- 對作智能家居有沒有興趣
- 招一個應屆生進來作app也是作,招你也是作,爲何要招你
順豐科技
一輪技術面 總共三輪面試
- handler機制
- looper的喚醒是在Java仍是Native層,怎麼作到的
- HashMap,ConcurrentHashMap,HashTable有什麼異同
- Binder通訊機制
- 跨平臺開發熟不熟悉
- 如何提升海外用戶的訪問速度,假設服務器在深圳。
- 如何學習一個新東西,有哪些執行步驟
百度
- 紅包隨機算法 是怎麼作到的
- 寫一個二叉樹的深度度優先遍歷,遞歸 非遞歸
- Android中LocalServerSocket是幹什麼用的
- binder的Native層代碼看過嗎
- Linux有哪些RPC機制
- 爲何android使用了Binder機制沒采用共享內存
- 若是讓你設計一套進程間通訊的機制,你會怎麼設計
- Linux的模塊動態加載機制是怎麼實現的
- 一個物理屏劃分爲三個邏輯屏,是靠誰來分發事件的。
- ConcurrentHashMap是否是絕對的線程安全。(final,絕對線程安全,相對線程安全,線程不安全)
- 線程池是如何管理線程狀態的
大宇無限(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爲何不能在編譯期優化
- 熱修復原理
- 你的優點是什麼
平安
三輪面試
- http2.0 1.1 1.0的區別
- http如何保證安全性
- 安裝包優化有哪幾種方式
- 啓動優化有哪幾種方式
- View的繪製流程,每一個方法幹什麼的,若是要獲取View的寬高,在哪一個方法裏獲取
- 如何應對弱網環境
- android數據存儲方式
- 若是一個app沒法訪問網絡,你怎麼作數據存儲。
- DVM跟JVM的區別
- React Native跟原生開發的優劣
騰訊
三輪面試 一面
- 算法題 通電小球
- 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內核剖析》,給你們準備了一份很全面的Android進階資料;內容有面試專題講解丶Android一系列從初級到中級高級的知識的講解,以及最新最火的互聯網技術的講解,flutter—底層開發-性能優化—移動架構—資深UI工程師 —NDK ;網盤自取連接:https://pan.baidu.com/s/1vqgc...
提取碼:r637