歡迎光臨
每天分享高質量文章

19年3月移動端大廠面試題分享

作者:banking

連結:https://www.jianshu.com/p/984fff6b6b2a

2019年3月初,離開滴滴準備面試。

 

整理一下有印象的面試問題,準備找工作的同學可以參考。

高德:專家工程師

1、對Activity啟動流程的瞭解:AMS和ActivityThread涉及到的原始碼?
2、ANR的實現原理是什麼,AMS中涉及ANR的程式碼有哪些?
3、對MeasureSpec的理解,如何實現一個瀑布流的自定義ViewGroup?
4、記憶體最佳化做了哪些工作,LeakCannary實現細節。
5、layout_gravity和gravity的區別。
6、對Binder實現原理的理解。
7、對Flutter框架和實現原理的理解。

小紅書:

一面:

 

1、對Java多執行緒的理解,Sychronize修飾類和物件的區別?
2、使用過哪些多行程程式設計場景?AIDL的使用和原理。
3、手寫一個單例演演算法的實現。
4、ART和Davilk虛擬機器的區別是什麼?

 

二面:

 

1、如何實現工程的元件化解耦?
2、handler-looper原始碼解讀,如何保證在msg.postDelay情況下保證訊息次序。
3、leakCannary原理,如何判斷一個物件是否被回收?如何觸發手動gc?

 

三面:

 

1、開放問題:最佳化一個串列頁面的開啟速度和流暢性。
2、開放問題:設計一個圖片載入快取框架。
3、職業規劃和職業訴求。

快手:業務孵化部

一面~三面:

 

1、過往專案介紹和提問。
2、ListView和RecyclerView區別是什麼,兩者如何技術選型。
3、演演算法:實現一個o(n)複雜度的堆和最大數。
4、ART和Davlik垃圾回收區別;
5、開放性問題:如何設計垃圾回收演演算法?

螞蟻金服:專家工程師

一面(電面):

 

1、Android/Java中的Classloader有哪些,區別是什麼?
2、Android中的註解有哪幾種,分別用來做什麼?
3、瞭解或使用過哪些編譯插樁方案,原理和優缺點是什麼?
4、如何實現懶漢單例樣式?口述程式碼實現。
5、外掛化和熱修複的主流方案有哪些?
6、分別如何對java程式碼和資源實現熱修複?

 

二面:

 

1、專案實現細節。
2、Flutter框架和實現原理。
3、對ReactNative實現原理的瞭解。
4、筆試題:實現一個陣列的視窗掃描演演算法。

 

三面:

 

1、最有成就的專案是什麼?
2、該專案如何向外輸出?

 

四面:

 

1、設計一個網路最佳化方案,針對移動端弱網環境。
2、設計一個效能最佳化方案。
3、對leakcannary原理的瞭解,c層實現。

餓了麼:基礎架構組

一面:

 

1、記憶體最佳化使用過哪些方案,取得過哪些效果,衡量指標如何確定?
2、app效能檢測手段有哪些?
3、如何實現對一個方法執行耗時無痕埋點?
4、git實現原理是什麼,如何搭建git server?
5、git merge和git rebase的區別?git 雜湊演演算法的原理。
6、RPC和RESTful 的區別,專案中用的是哪種?
7、設計一個針對移動端弱網最佳化專案。

二面~三面:

 

1、專案細節,有什麼設計缺陷和改進方案。
2、Android工程的編譯流程。

位元組跳動:基礎架構組

一面:

 

1、做過哪些效能最佳化專案,說說實現細節。
2、TraceView的實現原理,分析資料誤差來源。
3、是否使用過SysTrace,原理的瞭解。
4、TextView setText耗時的原因,對TextView繪製層原始碼的理解。
5、對Flutter的原理瞭解,如何實現多Native頁面接入。

 

二面:

 

1、如何實現app的卡頓監控,線下和線上;比較這幾種方法的優劣。
2、瞭解哪些編譯插樁技術,聊聊使用細節。
3、HashMap的實現原理,如何解決雜湊衝突?
4、演演算法題:識別一個字串是否是ipv4地址。

三面:

 

1、你最優秀的工程設計專案,是怎麼設計和實現的;擴充套件,如何做成一個平臺級產品?
2、做過哪些效能最佳化專案?說下實現細節。
3、對Glide原始碼的瞭解,如何管理bitmap cache的,cache共有幾級?
4、對inBitmap的理解。
5、演演算法:o(n)複雜度實現偶數遞增奇數遞減單向連結排序。
6、演演算法:單向連結串列逆序。

 

四面:

 

1、過往經歷專案。
2、演演算法:實現一個陣列插入。(處理異常判別,不使用Collections相關介面)。

3、職業發展規劃。

Bigo

一面:

 

1、執行緒和行程的區別,什麼時候使用多執行緒和多行程?
2、Android中有哪些IPC方式,Binder的優勢和實現原理什麼?
3、描述AM-AMS binder通訊流程。
4、對檔案描述符怎麼理解?
5、Android中有哪些檔案儲存方式。
6、技術價值觀。

 

二面:

 

1、做過哪些流量最佳化方案?
2、運營專案設計思路,有什麼缺陷和改造建議。
3、這個專案的設計優勢,對高內聚低耦合的理解?

三面:

 

1、業務提問。
2、職業預期。

其他合集:美圖,作業幫,新東方,貝殼,脈脈

1、Fragment和Activity技術選型,兩者如何通訊。(新東方)
2、演演算法題:找到無序陣列的最大連續求和。(新東方)
3、gradle中flavorDimensions的含義,在什麼場景下使用過?
4、是否使用過CordinateLayout,巢狀滾動是如何實現的?
5、Android中有哪些跨執行緒通訊方式,區別是什麼?
6、AsyncTask有哪些使用侷限性,是如何使用自定義執行緒池的?
7、Serivce是如何做到高優先順序保活?
8、Android中使用過哪些持久化儲存,各自的使用場景是什麼?
9、如何不依賴框架實現一個資料庫column的資料型別改造?
10、演演算法題:
找到多個員工的共同繁忙時段 

https://github.com/banking/algorithm-dish/blob/master/algorithm-question/src/main/java/TimeAirbnb.java

11、對執行緒池的理解。(脈脈)
12、ReactNative實現原理,RN串列最佳化方案。(脈脈)
13、如何實現行程安全寫檔案?
14、OKhttp針對網路層有哪些最佳化?
15、對Android編譯釋出流程的瞭解。
16、實現對現有工程的flutter遷移。

贊(0)

分享創造快樂