前言
我20年畢業于一所雙非本科院校計算機專業,之前在小米實習和作業了一年,一直都是Android開發, 年中的時候因為個人原因打算離開小米到外面看看,投了很多簡歷,最終面試了位元組跳動、騰訊、美團、快手,憂喜參半,本文對這這次面試做一個總結,
位元組跳動
位元組是一個同學內推的,也是我很想去的一個公司,整個面試流程下來體驗很nice,效率很高,面試官人也很親切,
- 手寫代碼:計算View樹上所有view的數量,引數ViewGroup
- 主執行緒Looper一直回圈查訊息為何沒卡主執行緒?
- RecyclerView相對ListView區別?
- Bitmap resize相關,設定option,decode
- 用MultiDex解決何事?其根本原因在于?Dex如何優化?主Dex放哪些東西?主Dex和其他Dex呼叫、關聯?Odex優化點在于什么?
- Dalvik和Art虛擬機區別?
- 多渠道打包如何實作(Flavor、Dimension應用)?從母包生出渠道包實作方法?渠道標識替換原理?
- Android打包哪些型別檔案不能混淆?
- Retrofit主要實作機制?Retrofit的作用、原理
- 動態代理靜態代理區別?
- 模塊化怎么做?怎么設計?介面發現暴漏怎么做?基于什么基本思想?
- MVC、MVP、MVVM應用和彼此本質區別?
- Glide快取特點
- 擅長哪個方向?
- 演算法題:兩個執行緒分別持續列印奇數和偶數,實作兩個執行緒的交替列印(從小到大)
- 模塊化、工程化架構思想
騰訊
騰訊是一個哥們幫忙內推的,我也挺想去騰訊的,但沒有面過,能記住的內容就這么多了,
- GC機制;
- RxJava有沒有了解;
- 記憶體泄漏怎么排查;
- app的頁面突然卡了一下,怎么排查?
- ANR怎么排查?定義是什么?
- 使用過哪些開源庫;
- 對OKHttp有哪些了解?這個框架設計怎么樣?
- Databinding有哪些了解?
- EventBus了解嗎?
- 安卓的注解有什么了解?
- RelativeLayout和LinearLayout怎么選?為什么?
- 自定義Layout主要有那幾個流程?
- 滑動程序卡頓,重繪率太低,怎么排查?
美團
美團是這幾次面試中最順利的一次了,
- tcp中的3次握手,get和post的區別
- TCP和UDP的區別,五層協議
- 執行緒和行程的區別,執行緒狀態,同步鎖,Java里面應用到同步鎖的情景,Android哪里用到了同步鎖
- 專案中做過哪些優化?簡單說下,
- List中的ArrayList和LinkedList的區別,hashmap和hashtable的區別,hashmap的底層實作,如何解決hash沖突
- 演算法,一個三叉樹,求深度,求最大節點數
- IPC有哪些(Messenger,AIDL,socket),如果讓你分類,如何將它們分類,為什么?
- Broadcast可以跨行程么?如果可以,是通過什么實作的
- 了解Binder么?
- 了解Service么?說下bindService和startService的區別?
- 專案中的bug,你是如何解決的?
快手
這次面試流程比較長,快手感覺很注重演算法,我后來也被HR答復演算法需要加強,想去快手的話多刷點題吧,
- Android/ 布局優化
- Activity啟動模式
- RecyclerView和ListView區別
- Handler機制,loop方法為何不會造成ANR
- View繪制流程
- SingleTop和standard啟動模式下,生命周期回呼有何不同
- onStart和onResume區別
- Java/ 面向物件三大特性
- Array和Linked區別
- HashMap底層
- 行程間通信方式
- equals和==區別
- 執行緒間加鎖的方式
- 設計模式
- synchronized的不同使用
- 例外
- 執行緒池
- 創建執行緒的方式
- OS/ 死鎖
- 網路/ tcp和udp的區別
- 合并k個有序鏈表
最后
這就是本次面試記錄下來的一些內容,從投簡歷到面試一系列環節中還是可以感受到就業比較難,我自己水平也有很大的提升空間,總之不要隨便裸辭,時刻做好技術提升的準備,
借此機會分享幾套位元組跳動、騰訊、美團、快手等公司2021年的面試題,把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節,由于篇幅有限,這里以圖片的形式給大家展示一部分,希望能對你有幫助,


上述【高清技術腦圖】以及【配套的架構技術PDF】可以Vx掃描下方CSDN官方二維碼免費獲取!

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/389294.html
標籤:其他
