騰訊2020暑期實習後臺開發面試經驗及技術棧

前言

前一段時間參加了騰訊提前批的面試,也算是試了試水。遇到了一些問題,現在整理出來,也算是做個總結,以後不要再犯同樣的錯誤。參加這次提前批面試,主要是通過電話和視頻面試進行的。我將從崗位需求,簡歷書寫及面試內容等方面先介紹。然後羅列出面試過程中遇到的問題,供大家參考。

 

崗位需求

騰訊有很多不同的崗位,就軟件開發而言,又會細分爲後臺開發、PC客戶端開發、移動客戶端開發、測試開發、運營開發、雲計算開發等。不同崗位都有相應的要求,這點可以在騰訊實習上查詢。在閱讀完不同崗位的要求後,我感覺目前所學知識比較適合後臺開發,所以我就投了後臺開發。這裏我列出後臺開發崗位的要求供大家參考。在騰訊實習的官網,還可以看不同崗位的錄取比。

 

簡歷

在確定了投什麼崗位後,令人比較頭疼的是簡歷的書寫問題。要總結自身所學的知識,然後用最精煉的語句表達出來,這點在剛開始寫的時候真的不容易。這時,我借來了學姐的簡歷作爲參考,這才完成了自己的簡歷(最好保存成PDF)。簡歷這塊我也踩了坑,等一下再細說原因。

 

事業羣選擇

投遞簡歷還需要在騰訊實習上填一些相關信息,剛開始我以爲自己提前準備的簡歷沒用了,其實不是這樣的。在填到後面的內容後,有一個上傳附件可以給大家上傳自己做的簡歷。這裏還有一個問題就是在填信息的時候選擇事業羣的問題,如果你在看了相關事業羣的介紹後,很明確的知道自己將來的方向,那麼就可以選擇相應的事業羣,此時簡歷會優先被所選的事業羣所看到。如果沒有明確的意向,可以選擇無意向(我選擇的就是無意向)。選擇無意向後,所有的事業羣都能看到你所投遞的簡歷。如果有部門對你比較感興趣,他們就會鎖定你的簡歷(此時別的事業羣看不到你的簡歷),然後給你安排相應的面試,如果過了,你可能就能收到offer。如果沒過,你的簡歷又會回到簡歷池中,供其他部門選擇。

簡歷命名和技術棧

簡歷命名時要注意一定的格式,讓篩選簡歷的人一眼就能看到你想幹嘛。例如:[姓名_崗位_學歷_電話]。然後就是簡歷本身的結構,這裏比較困難的是整理個人技能和項目經歷。對於個人技能而言,可以根據上述崗位要求進行整理。因爲我們肯定是選擇和自身所學知識符合的崗位,對於有明確目標的人,他肯定爲相應崗位早早做好了準備,所以根據崗位要求寫個人技能完全沒有問題,但要做到實事求是。如果有其他的相關的技能也可以寫上,但要做到面試官提問時能對答如流。

 

項目經驗

對於項目經歷而言,數量並不在於多。一定要梳理好項目中自己的職責和所完成的工作以及使用的技術。在第一次面試的時候,我寫了兩個項目經歷。第一個是Web端環境管理平臺的項目,調用了雲平臺的視頻數據。第二個是課程設計的項目,在 Linux 平臺下完成的視頻採集並傳輸。我在個人技能裏寫的都是與C++相關的知識,但是第一次面試給我整了一個應用開發,問了我一大堆Java問題。當時面試挺尷尬的,所以面試完我就把簡歷和網上填寫的資料改了一遍。這裏需要說明的一點是,崗位的分配是由面試官決定的。

 

面試內容

第一次面試

第一次面試是視頻面,前一天就收到了微信的提醒。當時準備的比較多,感覺快把自己寫的技能都複習了一遍。也把項目和內容捋了一遍,設想面試官可能會問的問題。結果發現面試完全不是自己設想的那樣進行的。

視頻面使用騰訊會議,提前10分鐘進入後等待面試官。面試官到了後,簡單的進行了自我介紹,大概40秒左右。自我介紹還是提前做好準備比較好,大概分成介紹學校及專業,關鍵技術棧和簡單的描述項目經歷等。然後面試官開始問問題。然後面試官逮着我的第一個項目一直問,我也做出了相應的回答。但是第一個項目大概問了有25分鐘,我感覺有點不對勁,然後我就打斷了他。跟他詢問了部門的情況,他簡單的說明了一下。然後我表明,我主使用C++完成編程工作。以及介紹了對基礎知識的瞭解情況,同時說明了第一個項目中,自己的職責和完成任務。希望面試官能根據我的技能提問,但當時我們都有點尷尬,因爲感覺兩個人沒有在同一個頻道上交流。然後面試官就開始問第二個項目的情況,我做出了回答後,他說我的簡歷寫的不是很清楚,項目裏的技術棧沒有羅列出來。然後我們就開始聊崗位和部門的事了。這次面試,我感覺就是面錯方向了,但還是有一點收穫的。面試完,我做的第一件事就是修改資料和簡歷。

 

第二次面試

第二次面試是電話面,面試官快中午了給我打電話問什麼時候有時間,我說晚上就能參加面試。這次的面試提的問題都是和我技能相關或者是他們部門所需要的。以下是我整理的面試問題:

1. 數組和鏈表的區別,各自完成相應操作的時間複雜度(插入、查找和刪除)

答:主要從不同操作的時間、空間複雜度進行回答。

 

2. 講解快排過程,基準選擇帶來的問題

答:描述快排的排序過程,以及基準的選擇,這個我之前整理過一篇博文,有興趣的可以看看快速排序的4種優化

 

3. 給一億個IPV6地址,最快的時間找出10個地址

答:這個我最後給出的答案是哈希表加紅黑樹。其實我想多了,這就是一個Topk問題。

 

4. TCP/IP協議,OSI七層協議每一層都幹些什麼

答:這裏我回答了 4 層協議每層完成的工作。OSI七層協議裏的會話層和表示層我不太熟,所以回答的時候就說這部分被整合到了應用層。

 

5. TCP和UDP的區別是什麼

答:TCP的特點是有連接、一對一、提供可靠交付、全雙工通信、面向字節流。

 

6. TCP三次握手和四次揮手的過程,包括客戶端和服務器會進入什麼狀態

答:這裏就不多說了,可以看我另一篇博文:TCP"三次握手"、"四次揮手"、可靠傳輸機制及面試相關問題

 

7. 四次揮手爲什麼要等2MSL

答:(1)爲了保證A發送的最後一個確認報文段能夠到達B。如果A不等待2MSL,若A返回的最後確認報文段丟失,則B不能進入正常關閉狀態,而A此時已經關閉,也不可能再重傳。

(2)防止出現”已失效的連接請求報文段”。A在發送完最後一個確認報文段後,再經過2MSL可保證本連接持續的時間內所產生的所有報文段從網絡中消失。

 

8. 從瀏覽器輸入一個網址,底層都幹了些什麼

答:使用wireshark抓包並進行網絡協議分析

 

9. Linux多進程和多線程概念

答:進程是進程實體的一次運行,是系統進行資源分配和調度的獨立單位。線程爲了更好的使多道程序併發執行,以提高資源利用率和系統吞吐量,增加程序的併發性。這裏從資源和調度角度回答就可以了,沒有問的很深,回答進程時最好提一下PCB,因爲PCB是保存進程運行期間相關的數據,是進程存在的唯一標誌。

 

10. 如何完成線程同步,知道什麼鎖

答:互斥鎖,信號量,讀寫鎖。回答完後面試官又問還有沒有別的,我說別的我只知道概念,比如自旋鎖。他聽到自旋鎖後就沒有繼續問了。

 

11. 進程間通信

答:管道、信號量、消息隊列、共享內存和socket。

 

12. 內存對其

答:這個我答的比較簡單,內存對其能夠節省空間。其實還有平臺原因(移植原因):不是所有的硬件平臺都能訪問任意地址上的任意數據的;某些硬件平臺只能在某些地址處取某些特定類型的數據,否則拋出硬件異常。

性能原因:數據結構(尤其是棧)應該儘可能地在自然邊界上對齊。原因在於,爲了訪問未對齊的內存,處理器需要作兩次內存訪問;而對齊的內存訪問僅需要一次訪問。

 

13. 大頁內存問題

答:防止頁面被頻繁的換入和換出,涉及虛擬內存的知識。

 

14. C++重載、覆蓋和多態問題

答:回答概念即可。

 

15. 虛函數底層實現

答:虛函數原理

 

16. select和epoll的區別

答:最近整理的內容I/O多路複用:select、poll和epoll詳解

 

問完問題後,面試官介紹了自己部門的工作以及要求。這次面的是騰訊雲平臺底層開發,所以在面試過程中他問了很多關於網絡和操作系統的問題。然後,來到了所有面試官都會提的問題,你有什麼問題要問嗎?面試官問這個問題,基本就說明面試快要結束了。所以我的提問是:我想了解一下崗位的具體要求。他說底層開發需要了解網絡中的一些協議,不只是瞭解原理,還要了解和學習底層實現。

 

總結

騰訊提前批面試會根據我們的簡歷和部門本身的需求在面試過程中提問相應的問題。所以在以後的面試中,需要認真的書寫自己的簡歷,還要了解不同部門的技術棧。

收穫一:

每個公司(或部門)考察的點都不一樣,第二次面試的網絡問題真的有很多是我答不上來的。字節跳動在一面和二面會問很多數據結構和算法的問題作爲一個篩查點,然後在之後的面試過程中問更爲深入的問題。每個公司考察的知識和方向可能不一樣,需要提前做好準備。

收穫二:

需要擴展課本知識,或者是對某些方面學的更深。和麪試官交流後會發現,所問的問題都是他們在實際工作中遇到的問題。

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