【Android面試寶典】2021年,騰訊等大廠Android高級開發面試全攻略!

寫在前面的話

筆者是前騰訊Android高工,曾經多次擔任面試官,現在在字節code。

從畢業到現在,被別人面試過,也面試過別人,大大小小的面試,一兩百次,也算久經沙場。

現在,我以騰訊非在職員工的身份來和大家分享一下騰訊Android崗面試的流程、攻略以及一些建議,希望能幫到看見這篇文章的有緣人。

都是乾貨,趕緊收藏,三連走起。

提筆初衷

寫這篇文的初衷是有很多朋友都在問我騰訊面試相關的問題(嗯哼,不少都是來打探面試真題的)。通過交流得知,不管是老猿還是新手,大家或多或少都有些害怕面試,尤其是大廠的面試。所以,在這裏詳細的講一下。

PS:本文涉及的範圍很廣,對多數面試騰訊的人來說都有參考價值,即便是準備面試其他公司,也有很多相通的地方。相信大家看完本文之後,一定會有所收穫。

本文主要分爲以下幾個部分:

  • 疑問解答
  • 面試流程
  • 面試攻略
  • 實用建議
  • 學習乾貨

2021年,大家一起報團取暖,一起牛掰!

關於工作的Q&A

應屆生的話,這裏就不多說了,只有一個建議:去大廠(大廠都可以,都能學到東西,薪資條件什麼的自己看着選)。

這裏主要給已經有3~5年的Android開發經驗的朋友心中的一些疑惑做一些解答。

我現在到底該不該跳槽?

  • 首先你需要想清楚,你想要的待遇薪資、公司平臺、團隊氛圍、老闆實力是什麼樣子。這些因素在綜合影響着你的工作和發展,如果只是厭煩當下的工作,沒有目標就跳槽的話成本太高了。

  • 第二個需要思考的問題就是:你爲面試做好準備了嗎?
    簡歷優化好了嗎?面試前要準備的技能知識複習好了嗎?算法題刷的怎麼樣了?項目準備好如何去說了嗎?如果你的回答是NO,八成會成爲炮灰。

騰訊(大廠)面試要怎麼準備?

設個問題涉及的內容很多,下面的版塊會展開進行詳細講解。

面試流程

大廠的部門一般比較多,崗位類型多,職級差異也大,所以大家的面試流程都是不一樣的。

一般來說,針對高開,大部分的大廠面試都會經歷2輪技術面,1輪領導面,1輪HR面,如果面試情況有爭議(或者面的特別好的情況)會有一輪加面,總體來講總共會有4輪面試。

以字節爲例,基本上所有面試都會在線上進行,一面2輪技術面,2面領導面(也會有一些技術的考察),3面就是HR面談薪資和定級了。

這裏圖解說一下普適性的面試流程。
(PS:面試如打怪升級,大家要先通關前面才能進入後面。大家可以通過這張圖來看自己打到了那裏。)

面試攻略

編碼面試

算法

在開篇準備階段我們就已經提過算法相關的準備工作,對於字節來說,算法面試 是每輪技術面試都會有的“飯後甜點”(也有可能考察多線程)

從字節的面試規則來看,這一面是流程的必然要求;

從考察點來看,這個環節主要考察面試者的編碼能力,思考能力,算法能力等等

雖然只有短短10分鐘的編程時間,卻可以讓你把缺點暴露的淋漓盡致,比如邊界條件的判斷,臨界值的定義,指針(或者說引用)的定義和維護等等,而這些只有你真的在練習算法的時候真正去思考,去關注,才能得到一個比較好的編程習慣

從這個角度來看,面試管如果問“快排”這樣思維固定,代碼固定的題目,反而是比較簡單的,所以“快排”的考察一般出現在一面最後的環節

比較能考察以上所提到的各種能力的,最常考察的就是鏈表,比如鏈表反轉,兩個鏈表相加,找到鏈表的倒數第n的節點等;鏈表相關的題目,說難不難,說簡單卻涉及很多細節,這裏我們就不貼具體的代碼了,小夥伴們上Leetcode 可以找到很多優秀的代碼示範

如果想練習高頻面試題目,筆者推薦牛客網的高頻面試題 >>> https://www.nowcoder.com/activity/oj

當然,如果要通過刷高頻通過算法面試,每道題至少刷3遍,加強自己的算法手感,才能在面試中不卡殼

多線程

最後算法面試部分,有可能也會對多線程相關題目進行考察,這部分一般不會很難,主要考察編碼能力,以及對多線程的理解,如線程之間是如何進行協作的,如何保證線程安全及線程的等待通知等

比較常考的就是“四個線程abcd,啓動順序不定,a線程打印a, b線程打印b,按順序輸出abcd”,這也是筆者在字節面試中遇到的一道題

這個問題主要考察線程的等待通知機制,在實現上並不難,筆者也寫過一篇文章來分析相關的代碼及內部原理,可以點擊 >>>找我獲取《線程手冊》PDF

相信看完這個線程手冊,基本上 90% 的多線程問題都難不倒你了(剩下的10%是AQS實現原理相關問題,就更深入一些了)

技術面試

這裏筆者指除了編碼之外的技術能力面試,針對Android面試來說,通常會對兩大塊進行考察,一部分是語言相關,一部分是Android相關

語言部分

語言來講,通常是Java,其他的也有Koltin, Groovy, Kotlin, C++ 等方面的考察,除java外其他的都會根據簡歷的情況進行一定考察

Java面試題就很多了,一般 warm up 的 題目就是以面向對象相關問題進行展開,再進行深度提問,比如筆者就遇到過提問“對多態有什麼理解,多態是如何實現的”這樣的問題(於是有了筆者最近整理的一份PDF手冊 >>> 到底什麼是多態?(找我領取多態手冊)

其他高頻的還有Hashmap相關源碼,線程併發問題,等等,筆者在這裏想要強調的是,針對Android 高工的面試,一定是要挖一些有深度的東西的

比如面試管問題Hashmap源碼,你要能講出來Hashmap源碼的實現細節,並且能拓展到如何實現線程安全的Hashmap,CurrentHashmap是怎麼實現的,又有哪些其他的線程安全容器,他們內部又是如何實現的線程安全等等,具體細節請參考 >>> 找我獲取《線程高併發手冊》PDF

當然,看源碼不是一件輕鬆的事情,這又是另外一個話題了,如果你暫時讀源碼比較喫力,可以先參考筆者的相關文章,再去自己讀源碼捋思路,進一步內化爲自己的知識

Android部分

針對高開面試,Android部分自然也避不開源碼相關內容,比較常問的就是“Activity的啓動流程”,“系統啓動流程”之類,這些筆者也都做了輸出,可以點擊 >>> Android11源碼分析(找我獲取) 查看相關係列文章

另外插件化,組件化,熱更新,性能優化這些相對“進階”一些的技術點也會着重進行考察

拿字節面試來講,就對插件化相關問題進行了考察,尤其是對代碼細節考察的比較仔細,比如插件Activity是在哪裏做的Hook,如何“欺上瞞下”進行替換的

這樣考察的目的一來是先檢驗面試者是不是真的做過或者研究過,二來也是對代碼的深度理解進行考察

筆者的建議是,抓住一兩個跟項目相關的有深度的點進行深挖,再結合源碼去做一些研究工作,把這些技術點作爲自己在面試中的核心競爭力和賣點,展示給面試管

比如筆者的核心競爭力就是Android源碼和插件化,只要問這兩個問題相關的,筆者基本上都不在話下

打造自己的核心競爭力,是高開面試必須要做的一步

附錄:1307頁字節跳動等大廠Android面試全套真題解析

實用建議

面試這件事,功夫在平時,臨場時最重要的是心態。下面給大家幾點實用性建議。

  • 充分準備
    珍惜每次的面試機會,做好充分的準備。刷題什麼的不要懈怠。上面的資料多看幾遍,力扣的題目最好都刷一下。(尤其是算法題,千萬不要偷懶,算法是決定工資水平的一個分水嶺,想拿高薪的千萬不能放棄算法題)。

  • 不拋棄 不放棄
    失敗是成功之母。要有失敗的心理準備,不要因爲一次的不順利就灰心。簡歷會被放回到人才庫,其他部門仍可以讓你去繼續面試,不過是從頭再面(就當做積累經驗吧)。

  • 猥瑣發育,別浪
    在準備跳槽的朋友尤其要注意,很多時候,你覺得你很有價值,其實那只是一個幻覺,其實是平臺的價值。離開了平臺,你什麼也不是(並不是貶低和打擊你的信心,只是希望你不要盲目自信)。希望大家能有謙虛學習的態度,猥瑣發育,別浪。

Android技術學習推薦(B站免費資源)

*最全FrameWork層源碼分析 | 這裏是萬能的的Binder底層原理解析(全)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章