2020實習春招技術開發崗面經:騰訊 & 字節跳動(已Offer)

這裏簡單說一下我的個人情況:

        本人本碩985軟件工程,17年畢業後在TP-Link做過接近一年的安卓開發,後來才辭職考研回母校繼續提升自我。原本是打算找一份算法的實習,但今年算法崗的形勢不容樂觀,競爭激烈。所以在2月初決定把重心放在開發上,做自己喜歡的安卓,然後就開始投遞簡歷了。

        2月初的時候很多大廠都還沒開始招聘暑假實習,我就在牛客網上找大廠的內推貼來看,當時字節跳動每天都有十幾個內推貼,甚是瘋狂!我就找了三四個字節的內推郵箱發去了自己的簡歷。大概2月7號發的簡歷,10號就收到了來自北京的HR約面試的電話,郵件中給的是牛客的視頻面試鏈接。然後14號連着一面二面,完了直接電話約三面,16號三面完,當晚8點收到了HR的Offer Call。(三次技術面)

        由於疫情的原因,字節跳動的崗位base北京又太遠了,去到要隔離14天。想了很久,大概到了3月3號決定投一下base深圳的騰訊,4號官網投遞了簡歷,然後約了9號一面,接着12號二面,當晚三面的面試官加了QQ,約了15號三面。接着17號HR面,最後19號晚上8點順利收到HR的Offer Call。(三次技術面 + HR面)

 

字節跳動 - 安卓開發崗

一面(45min):

1. Activity的創建流程與原理(OnStart、OnCreate、OnResume等)

2. Handler的原理(Handler、Looper、MessageQueue等)

3. View的繪製過程(OnMeasure、OnLayout、OnDraw)

4. Binder機制以及原理(binder驅動、共享內存等)

5. 談談設計模式(23種設計模式,MVC和MVP的區別)

6. 談談對操作系統中的進程的理解

7. 操作系統中有哪些跨進程通信(IPC)的方法(信號量、管道、共享內存等)

8. 講講Java中類的加載過程

還有一些問題遺忘了,最後是做一道編程題,二叉樹查找相關的,用遞歸完成了。

二面(60min):

1. TCP三次握手原理及細節,談及爲什麼不能兩次握手的原因

2. ShareReference的用法和原理

3. Java垃圾回收的過程

4. 內存泄漏問題(Java中static引起的內存泄漏問題等)

5. JVM內存管理相關問題

6. 智力題:兩個骰子(6面)如何表示2月全部日期

還有一些非常難的Java方面的問題遺忘了,編程題考查二叉樹Z字型遍歷,不能用STL庫。

三面(30min):

1. Activity的創建原理,談及ActivityManagerService偏Framework層的理解

2. 談談WindowManagerService的工作機制和原理

3. 談談讀過哪些開源的安卓庫源碼

4. 數學題:兩個人輪流投擲硬幣,規定正面贏,正反面各50%概率,計算先投的人獲勝的概率(用級數去解決)

5. HTTP和HTTPS原理,區別,各自的優勢

6. 談談對token的理解

這次面試沒有編程題,很簡短但是較爲嚴肅,前兩次氣氛都較爲輕鬆。

HR電話(10min):

簡單聊了一下以前的工作經歷和學習經歷,爲什麼辭職考研,對未來的職業規劃,然後就介紹公司的待遇和福利等等,發了口頭Offer,三天後郵件正式Offer。

 

騰訊 - 移動客戶端開發崗

一面(60min):

1. 自我介紹後直接聊起了以前在TP做過的兩個項目。第一個項目問到了設計模式中MVC和MVP的區別,ListView和RecyclerView的區別,如何用ListView實現RecyclerView等同的效果;第二個項目比較大,當時代碼量有三千行左右,從Framework層到應用層都有涉及,然後問到了跨進程通信,一個大的數據包跨進程通信中如何保證安全(拆包、安全校驗等)

2. Java的類型擦除

3. HashMap的原理(哈希映射、衝突解決的方法等)

3. 安卓的一系列基礎問題

這次面試非常注重過往項目的經驗,還有些問題遺忘了,編程題兩道:中序和後序推導出前序(二叉樹遞歸完成)、給出一個鏈表刪除倒數第五個節點

二面(60min):

1. 談談對Handler、Looper的理解,他們倆的數量關係

2. Java中內部類和靜態內部類的區別

3. Java的泛型擦除問題(因爲一面沒答好,二面又重新拿出來問我了,還好我提前準備過)

這次面試非常注重基礎知識的考察,當然有很多問題遺忘了,編程題是:數組中每個值看作一棟樓的高度,站在數組中的一個位置求前後能看到的樓的數目(高樓擋在前面會看不到後面的樓)

三面(1h20min):

1. 談談以前自己的學習方式,有沒有讀書做筆記的習慣或者寫技術博客的習慣等

2. 談談以前在學校做過的項目(本科做過兩個科研項目,NLP、EEG,我都分別詳細講了)

3. 談談之前在TP工作的項目,每個項目的時間分配和具體流程,包括技術細節,以及遇到的比較困難的問題,還有自己的成長

4. 談談Activity的原理,生命週期(面試官希望我答出Native層的原理,雖然我讀過安卓源碼的書籍,但當時一緊張就答得不太全面)

5. 廣播的收發過程,如何做一個有序廣播

6. 談談對四大組件的理解

7. 講一下HashMap的原理(爲什麼到了8個節點就變成紅黑樹)

8. 以前做過哪些優化相關的工作

9. 談談webview的原理和通信機制

10. 概率題:x%的人喜歡籃球、y%的人喜歡排球、z%的人喜歡足球,問同時喜歡籃球和排球的人是多少

這次面試從家庭背景學習情況問到過往項目,再問到基礎知識,真的細緻入微哈哈~當然還是有些問題遺忘了,中間還問了能過來實習的時間。最後編程題是:兩個超大的字符串文件,求他們的最長迴文子串,要求不能調用庫(當時用動態規劃完成,但是時間複雜度爲N^2,其實用馬拉車算法可以降低複雜度,但當時我並沒有練過,所以就把代碼交上去了)

HR面(30min):

1. 首先自我介紹一下,談談能過來實習的時間

2. 辭職考研的原因

3. 考研之後的半年做了啥(當時我在研究生入學前實習了一下)

4. 講講之前在TP工作的成長

5. 談談本科到現在的學習方式(在學習課本知識的過程有沒有自己打代碼實現demo之類)

6. 研究生階段學習成績如何,排名什麼位置

7. 上學期參與了實驗室的什麼項目,具體負責什麼

6. 談談自己的優缺點

8. 相比其他實習生,覺得自己比他們的優勢的地方

9. 談談之前面試的三個面試官,逐位評價一下

10. 上一份TP的工作是校招的嗎?當時還有沒有面試其他公司?當時面試公司這麼少是處於什麼考慮的?

11. 現在實習還有沒有找別的公司,有沒有拿到其他公司的Offer(這裏我如實說了字節跳動的Offer)

12. 對比騰訊和字節跳動,談談自己的想法,會如何做選擇,選擇的原因是什麼

13. 最後,覺得騰訊爲什麼需要你?

 

總結和給各位同學的建議

無論是本科生還是研究生,實習生還是正式工作(社招除外),面試永遠考察的都是基礎!所以萬變不離其中,好好複習計算機學科相關的基礎知識,特別是常問的那一系列問題,每次面試完立刻覆盤,查缺補漏。不要害怕失敗,每次的失敗都會換來一段成長,這是非常寶貴的~然後編程題,平時花些時間上牛客或者leetcode刷一下題就好了。

面試的時候,保持自信心,回答問題不要着急保證思路清晰。然後對每個問題都誠實回答,不會的不能裝懂,可以謙虛請教面試官。最重要的是,堅定自己的目標,不要因爲一兩次的面試失利就影響到自己的情緒和狀態,不斷的總結失敗的原因,總有一天會收到心儀公司的Offer。祝各位學子2020年學業進步,Offer收到手軟!

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