凜冬已至,一個android碼農(nóng)面進(jìn)了騰訊,終于到達(dá)2020的春日
由于眾所周知的原因,原生android開發(fā)如今已經(jīng)日漸凋敝,
作為一個Android程序員,不僅要會Java,Kotlin,JavaScript,Css,Html,還要會Flutter,C++,FFmpeg,Linux等相關(guān)知識。
我有個朋友面試了n家公司,終于面上了騰訊
前前后后面試了快二十家公司,既有外包,也有中小型企業(yè),也有準(zhǔn)備D輪甚至上市的C輪企業(yè),更有BAT等知名企業(yè)。
接下來就一一說一下他去面試各家公司的面試題。
也建議各位面試的時候不要上來就直奔BAT等,大廠面試官的技術(shù)廣度與深度也不是剛出來面試的你,能搞定的。
最好先去一些小公司看看他們問的哪些東西,自己回去在查漏補缺一下,最后去大廠。
最后祝各位能進(jìn)入自己心儀的公司。
按照面試的時間順序來一一羅列他記住的面試題
image
武漢佰鈞成(外包OPPO,自家面試官)
兩輪面試
- Activity的啟動流程
- Activity的啟動模式,應(yīng)用場景
- 如何減少對第三方框架的耦合
- hashmap的基本原理
image
博彥科技(外包OPPO,OPPO面試官)
兩輪面試
- Handler機制
- Binder機制
- 寫一個單例模式,DCL為什么要加V關(guān)鍵字
- 直接在Activity Sleep 5000ms,再post一個runable會不會ANR。
- 如何監(jiān)聽ANR
- View的繪制流程,每個都是干什么的
- 事件傳遞機制
image
Insta360 (C輪公司)
三輪面試
- 組件化如何實現(xiàn)組件通信
- HashMap基本原理 如何減少hash沖突 如何增大hash沖突
- 安裝包怎么優(yōu)化的
- 如果有A,B,C,D,E五個步驟,每個步驟都需要操作對應(yīng)請求,用哪種設(shè)計模式。
image
華為外包
兩輪技術(shù)面試
本來一面完了就讓等著二面的,等了十分鐘后跟說二面面試官暫時不在,等下次再約時間,
出門等了10分鐘的公交,離家還有20分鐘的時候,又給他打電話讓他回去參加第二面,
然后就沒去了,太折騰人。
image
綠網(wǎng)科技
三輪技術(shù)面
- hashmap原理
- MVP,MVVM,MVC的區(qū)別是什么
- Java Memory Model的內(nèi)存模型
- 如果讓你設(shè)計一個app,打算怎么設(shè)計
- JVM垃圾回收有哪幾種算法,有哪幾種垃圾回收處理器
- Serial使用的哪一種回收算法
- JVM的內(nèi)存模型
- Android主線程是怎么啟動的
- dex是如何轉(zhuǎn)為機器碼的
- llvm編譯是如何優(yōu)化代碼的
- 說一個你自己的缺點。
image
同洲電子
四輪技術(shù)面
- Activity的啟動流程
- 靜態(tài)類的靜態(tài)方法能不能被子類重寫(不能,走的invoke-static指令,只有走invoke-virtual指令的才可能實現(xiàn)多態(tài))
- Linux的啟動流程
- 對Native層有沒有興趣
- 對做智能家居有沒有興趣
- 招一個應(yīng)屆生進(jìn)來做app也是做,招你也是做,為什么要招你
image
順豐科技
一輪技術(shù)面 總共三輪面試
- handler機制
- looper的喚醒是在Java還是Native層,怎么做到的
- HashMap,ConcurrentHashMap,HashTable有什么異同
- Binder通信機制
- 跨平臺開發(fā)熟不熟悉
- 如何提高海外用戶的訪問速度,假設(shè)服務(wù)器在深圳。
- 如何學(xué)習(xí)一個新東西,有哪些執(zhí)行步驟
image
百度
- 紅包隨機算法 是怎么做到的
- 寫一個二叉樹的深度優(yōu)先遍歷,遞歸 非遞歸
- Android中LocalServerSocket是干什么用的
- binder的Native層代碼看過嗎
- Linux有哪些RPC機制
- 為什么android使用了Binder機制沒采用共享內(nèi)存
- 如果讓你設(shè)計一套進(jìn)程間通信的機制,你會怎么設(shè)計
- Linux的模塊動態(tài)加載機制是怎么實現(xiàn)的
- 一個物理屏劃分為三個邏輯屏,是靠誰來分發(fā)事件的。
- ConcurrentHashMap是不是絕對的線程安全。(final,絕對線程安全,相對線程安全,線程不安全)
- 線程池是如何管理線程狀態(tài)的
image
大宇無限(C輪公司 前身是豌豆莢)
他第二心儀的一家公司,辦公環(huán)境,氛圍,福利都特別好 總共七輪面試 五輪技術(shù)面
- Kotlin的訪問權(quán)限
- Koltin為什么比Java更安全
- Koltin比Java好在哪
- JVM的內(nèi)存模型
- JMM的內(nèi)存模型
- 為什么操作數(shù)棧是Thread-Private
- 計算二叉樹的深度
- ArrayList跟LinkeList區(qū)別
- ArrayList如何擴(kuò)容的,如何提高ArrayList的效率
- 動態(tài)代理靜態(tài)代理區(qū)別
- 啟動優(yōu)化怎么做的。
- 如果給你個IOS APP,你打算怎么優(yōu)化。
- http有哪幾種版本,版本間有什么區(qū)別。https跟http有什么區(qū)別。
- apk為什么要簽名,v1跟v2簽名的區(qū)別
- apk從編譯打包都安裝的流程
- dex到odex為什么不能在編譯期優(yōu)化
- 熱修復(fù)原理
- 你的優(yōu)勢是什么
image
平安
三輪面試
- http2.0 1.1 1.0的區(qū)別
- http如何保證安全性
- 安裝包優(yōu)化有哪幾種方式
- 啟動優(yōu)化有哪幾種方式
- View的繪制流程,每個方法干什么的,如果要獲取View的寬高,在哪個方法里獲取
- 如何應(yīng)對弱網(wǎng)環(huán)境
- android數(shù)據(jù)存儲方式
- 如果一個app無法訪問網(wǎng)絡(luò),你怎么做數(shù)據(jù)存儲。
- DVM跟JVM的區(qū)別
- React Native跟原生開發(fā)的優(yōu)劣
image
騰訊
三輪面試 一面
- 算法題 通電小球
- Android 沉浸式狀態(tài)欄 怎么實現(xiàn)的
- 事件處理函數(shù)有哪幾個,父View 子View 監(jiān)聽同一個事件,重寫哪些方法。在哪個View重寫?
- ViewRootImpl接受事件嗎?
- apk編譯打包流程 V1,V2 簽名區(qū)別
- 利用logging監(jiān)聽方法耗時,會不會讓app增大延遲。
- eventbus為什么要用CopyOnWriteList?
- 插件化怎么加載資源的?
- JVM怎么保證gc效率跟線程運行效率的 ?
- 如果android沒用對應(yīng)的view,flutter能運行嗎? 手寫單例模式,volatile 跟 synchronized區(qū)別?
- 接口暴露,但是不讓別人調(diào)用,有哪些辦法?
二面
- 為什么采用flatbuffer? 比Json好在哪里?
- 如何處理Crash,NativeCrash呢?Google是怎么做到的?如果上報過程中再次產(chǎn)生Crash能不能捕捉到?
- uncaughtException是被誰調(diào)用的,如果再次崩潰能不能捕獲到?
- Linux是怎么知道app崩潰的,如果想要在被kill前 做一些耗時操作,該怎么做?
- 考慮設(shè)計一個crash捕捉模塊。
- 100萬個數(shù)字求100個最大值。
- 手寫快速排序算法。
三面 (GM面)
- kotlin比Java好在哪里,是函數(shù)式編程嗎?
- 如何防止DNS劫持?
- 如果讓你實現(xiàn)一個調(diào)試器,你會怎么設(shè)計?靜態(tài)調(diào)試?動態(tài)調(diào)試呢?
總結(jié)
大廠基本上不太看重具體的技術(shù),無論你是Java還是C++,比較看重思路與抽象的解決方案
如果看到這里的同學(xué),想在技術(shù)上有精進(jìn)的話,推薦幾本書跟專欄
強烈推薦《深入理解JVM(周志明)》《Android開發(fā)藝術(shù)探索》《Android內(nèi)核剖析》
推薦 《Linux鳥哥私房菜》《unix環(huán)境高級編程》
image
image
這幾本有PDF版,需要可以私信我【書籍】查看
https://shimo.im/docs/x9X6TTW6KqqhHGy6
強烈推薦 極客時間專欄: 《張紹文-Android開發(fā)高手課》
這篇專欄非常非常吊 不過要求要有C++跟Linux基礎(chǔ) 而且張紹文自己也在后面講了,如果把他的文章里講的內(nèi)容全部摸透,熟悉過了之后,再刷點算法題,基本上沒有進(jìn)不去的大廠
還有更多的面試題和算法題,可以私信我【安卓】或者查看這篇文章:
https://zhuanlan.zhihu.com/p/98027083