由於眾所周知的原因,原生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。如何監聽ANRView的繪製流程,每個都是幹什麼的事件傳遞機制Insta360 (C輪公司)
三輪面試
元件化如何實現元件通訊HashMap基本原理 如何減少hash衝突 如何增大hash衝突安裝包怎麼優化的如果有A,B,C,D,E五個步驟,每個步驟都需要操作對應請求,用哪種設計模式。華為外包
兩輪技術面試
安裝包優化做了哪些工作對加班怎麼看的本來一面完了就讓我等著二面的,等了十分鐘後跟我說二面面試官暫時不在,等下次再約時間,出門等了10分鐘的公交,離家還有20分鐘的時候,又給我打電話讓我回去參加第二面,然後就沒去了,太折騰人。
綠網科技
三輪技術面
hashmap原理MVP,MVVM,MVC的區別是什麼Java Memory Model的記憶體模型如果讓你設計一個app,打算怎麼設計JVM垃圾回收有哪幾種演算法,有哪幾種垃圾回收處理器Serial使用的哪一種回收演算法JVM的記憶體模型Android主執行緒是怎麼啟動的dex是如何轉為機器碼的llvm編譯是如何優化程式碼的說一個你自己的缺點。最終結果是這樣的 哈哈,還是不能要太高
[圖片上傳失敗...(image-1845f3-1569589285005)]
<figcaption></figcaption>
同洲電子
四輪技術面
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++,比較看重思路與抽象的解決方案
金九銀十,希望大家都找到滿意的工作