前言
剛從阿里面試回來,想和大家分享一些我的面試經驗,以及面試題目。
這篇文章將會更加聚焦在面試前需要看哪些資料,一些面試技巧以及一些這次的面試考題。
面試經歷
7月確定想走后開始看各種面經,復習基礎知識,月末開始投簡歷,心里比較中意字節跳動,但深知第一次就面大概率涼涼,就先投了美團、快手。
美團率先約面試,算法題都比較簡單,很快做出,但第一次確實很緊張,導致很多基礎知識一片凌亂,二面就掛了……
快手可能是投的崗位和能力不大匹配吧,沒收到面試通知……
之后就找朋友內推,投了字節跳動,一周后開始電話一面,面完后就那邊和朋友玩了兩天。結果,過了兩天都還沒收到回復,以為涼了……
后面,第三天時,二面面試官加了我的微信,開始約二面時間。二面結束后,面試官明確說讓我等三面(開心) 。
大約五天后,面試官約了三面。
三面過程很順利,結束后又過了三天,和HR簡單聊了聊,然后說還有一個leader面。
后面逛Boss直聘時有猿輔導要簡歷,給了過去后也面試了一波,也是白紙寫代碼,三輪技術和一輪HR,比較穩妥的過了。
期間有一道題很簡單但腦子就是蒙了,面試官引導多次無果后換了個題,很快做出來了。(這里給猿輔導面試官們點贊,體驗都很棒)
四面過后,HR問我還面誰沒,我明確說了在面騰訊還差一輪 ,于是HR說等我面完騰訊再討論具體待遇,但offer確定了。
字節三面技術題
一面
1:插件化。啟動activity的hook方式。taskAffity。
2:okhttp支持HTTP2?http2的功能有哪些?tcp方面擁塞控制?tsl的握手和具體的非對稱加密算法。非對稱名稱
3:handler的post(Runnable)如何實現的。callback,runnable,msg的執行優先級。阻塞是怎么實現的?為什么不會阻塞主線程?
5:求二叉樹中兩個節點之間的最大距離。
6:206含義,未修改資源是哪個,302含義,301含義
7:多進程通信問題。binder優勢。aidl生成的java類細節。多進程遇到哪些問題?
8:動態代理傳入的參數都有哪些?非接口的類能實現動態代理嗎?ASM的原理
9:Application和Activity在Context的繼承樹上有何區別?二者使用上有何不同?
10:任意一顆二叉樹,求最大節點距離
二面
1:設計一個日志系統。
2:內存泄露的分類。怎么查看內存泄露的問題
3:touch事件源碼問題。
4:組件化的問題。module和app之間的區別。moduler通信是如何實現的。
5:native奔潰的日志采集,怎么處理?
6:注解實現一個提示功能:如果int的值大于了3需要提示。
三面
1:介紹下flutter的啟動流程
2:介紹下flutter與weex的區別
3:組件化介紹一下
4:webview中與js通信的手段有哪些?
5:介紹下flutter_boost的原理
四面
1:適配器和裝飾模式各自特點和使用場景
2:視頻編解碼是怎么做的
3:三色球排序
最后
其實Android開發的知識點就那么多,面試問來問去還是那么點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己復習到了哪個階段就好。
雖然 Android 沒有前幾年火熱了,已經過去了會四大組件就能找到高薪職位的時代了。這只能說明 Android 中級以下的崗位飽和了,現在高級工程師還是比較缺少的,很多高級職位給的薪資真的特別高(錢多也不一定能找到合適的),所以努力讓自己成為高級工程師才是最重要的。
這里附上上述的面試題相關的幾十套字節跳動,京東,小米,騰訊、頭條、阿里、美團等公司21年的面試題。把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節。
由于篇幅有限,這里以圖片的形式給大家展示一小部分。
詳細整理在文檔可以見;
Android架構視頻+BAT面試專題PDF+學習筆記?
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。
Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。