1. 程式人生 > >[2017/06/02]騰訊後臺開發實習生面試總結

[2017/06/02]騰訊後臺開發實習生面試總結

————————–6月2號更—————————–
現在才被面試,都是因為自己zz。。四月份網申的時候寫的遠端面試,忘了改面試地點,於是成功GG錯過面試。誰知五月份的時候超凡學長突然告訴我鵝廠有實習生補招,要了我最新的簡歷。本來覺得沒什麼希望,結果前幾天突然收到了面試電話。截止現在前兩面都過了,來趁熱寫一寫面試總結。

一面

一面其實略GG,很多會的東西都回答得不是很好。面試時長大概20min。面試官上來讓自我介紹,於是把自己簡歷上的東西大概都說了一下。
這一面問的主要是專案,我大概介紹了一下自己的網盤專案和http下載客戶端,面試官針對我的專案提了幾個問題。有一些問題以前從來沒有想過,於是便現場給出了回答。其中有一個問題:如何在不加鎖的情況下實現多執行緒安全訪問一個數據結構?當時沒有答上來,後來想了想,應該使用觀察者模式,一個執行緒負責修改,剩下的執行緒讀取就行了。優先順序用讀優先或者寫優先。因為專案用到了mmap介面,面試官就問了我為什麼mmap讀寫檔案比較快,我就回答了記憶體對映。由mmap引申到了共享記憶體,問我有沒有用過,我說用共享記憶體寫過cache。同樣被很仔細地問了如何找到記憶體,如何設計cache。被問到如何檢視共享記憶體,結果忘了那個命令是什麼。。其實就是ipcs檢視和ipcrm刪除,然後就各種尷尬,回答用過但是想不起來是什麼了。還好面試官沒有繼續問下去orz。
問完專案,面試官還問了一道大資料處理題:如何從一個巨大的檔案中找出前500大的數。這個答得不是很好。
接下來,面試官看我簡歷上寫熟悉C++,便問我有沒有用過標準庫,知不知道底層實現。於是我便將map,set的實現以及vector的動態記憶體分配回答了一下。
還有一道判斷兩個連結串列有沒有交點的題。給出的答案是把連結串列頭尾相連,轉化成判斷是否有環。面試官表示太麻煩,問有沒有更好的思路。其實答案很簡單,直接判斷最後一個結點是否相同就行了。當時太緊張,面試官提示了一下,仍然沒想到這個答案orz。
最後,又問了我家是哪裡的,為什麼想來深圳。又問了面試官對我的建議,以及他是哪個部門的。一面就這麼愉快地結束啦。
一面完後二十分鐘,超凡學長幫我查了查,說我過了。能過真的是奇蹟。。因為覺得這一面答得不怎麼好。開心的同時就去準備二面了。

二面

這一面比我想象的要快得多,下午突然接到了電話。這一面面了40多min。上來就先問了專業,自學經歷,以及實習經歷。接下來問了幾個專案相關的小問題,比如登入和註冊的實現,秒傳是怎麼實現的,SHA-512演算法和MD5的區別和實現原理,斷點續傳的原理。然後又問一道大資料處理題,就是一面答崩的那一道。我的回答是:分塊,多核平行計算,用小頂堆儲存資料。面試官又問,如何從這麼多數中快速找到一個數,我說用bitmap。但是。。由於對記憶體的數字沒有概念,所以以為這個佔1億bit(100多M)的資料結構記憶體裝不下(其實是可以的orz),所以回答要設定多個bitmap。其實是不!!用!!的!!面試官見狀又追問,知不知道Linux下一個程式最大能開多少記憶體,結果我就懵逼了。。只好老老實實回答不知道(其實32位是2^32byte,64位是2^64byte),學過的東西都忘了Orz。面試官也不再追問,轉去問我其他問題。
接下來問了計算機網路:說說你對TCP和UDP的理解,TIMEW_WAIT的作用;以及作業系統:說說你對程序和執行緒的理解(這一個問題我是從多程序和多執行緒伺服器的角度來回答的)這些題答得都不錯。
因為簡歷上寫用過Linux系統,所以面試官問了一些Linux下的常見命令:如何檢視CPU和記憶體使用率(top),如何檢視記憶體洩漏(top命令檢視,看哪個程序開啟後記憶體使用率一直攀升),如何檢視網路狀態(netstat)。
雖然問題很少,但是面試官問得比較深且發散。問得深一點我就答不上來了。還有一點,對於一個技術,面試官總會問這樣做有什麼目的。比如為什麼即時通訊用UDP不用TCP;為什麼加密要加鹽,和不加鹽的演算法有什麼區別;平時對這些思考得比較多,所以大部分很容易就答上來了。
最後問了一些個人問題,比如為什麼不考研,你認為自己有哪些優點和缺點。問完這些便結束了面試。
最後還是拜託學長幫忙查了查,狀態已經是hr面了。
哈哈哈各種開心!!坐等hr面!!
————————–6月9號更—————————–

三面

完全沒有想到會有第三輪技術面。。某天早上一面面試官加了我微信,當時超級開心,還以為穩了。沒想到前輩告訴我,又加了輪技術面,是公司那邊的人面的,有難度,讓我好好準備。當時我就傻了。。為什麼還有這種操作啊喂!!然後就開始苦逼地準備三面了。
三面比我想象中要快,第二天下午就收到了面試電話。面了40min。面試官先讓做了自我介紹,然後開始問專案。第一個http下載客戶端,陳述完基本過程之後,面試官問了我對http協議有哪些瞭解。就把get和post,狀態碼回答了一下。面試官又問我http報文頭組成。我:喵喵喵?之前還複習過一次,但還是完全忘了orz。面試官說,你是不是沒看過報文頭。我只好不好意思地說年代太久遠,忘了。。面試官又問,那你怎麼把頭部和後面的資料分離。就回答了兩個/r/n。網盤專案問了LRU具體是怎麼實現的,還有SHA-512加密演算法的安全性和自定義協議的安全性(直接明文沒有加密所以不安全)。還問了C++網路庫的封裝,就回答了一下。
接下來問了看沒看過epoll原始碼,我說看過一點,然後面試官說,你給我講講吧。我:喵喵喵?去年看的,又忘了。。只好答曰忘記了,然後把基本的實現原理說了一下。又問到了epoll的兩種模式(ET,LT),二者的區別,ET模式下怎麼判斷讀完(return -1 + EAGAIN)。還問了三次握手各個步驟,為什麼三次握手。這個回答得有點翻車,翻在第一次發SYN的序列號是什麼。我記得是隨機生成的初始包的序號,回答後被面試官否認了,讓我再回去看看(查了查發現好像就是這樣?不知道錯哪裡了qwq)。還問了tcp的擁塞控制。又問了問程序間通訊的方式,特別問了共享記憶體。這個問題一面gg過,所以之後自己看了看,答得比較順利,把ipcs和ipcrm命令也回答上了。
因為簡歷上寫了C++,所以面試官問了下C++相關的知識:面向物件的特點(繼承封裝多型),又問我多型怎麼實現,我就回答了通過虛擬函式和繼承實現,順便回答了虛擬函式的實現原理。還問了virtual關鍵字的用途,也回答了。最後一個問題,dynamic_cast和static_cast的區別和用途,沒回答上來。。只說和型別轉換有關,忘記怎麼用了。
接下來問了大資料處理題:有100G資料,每條都是訪問騰訊主機的ip記錄,讓找出訪問次數最多的ip。還是檔案分片+多核計算+set儲存ip。
面試官問了最後一個問題:平常看哪些書,然後我就把看過的技術類的書名都報了出來。面試結束。
面完就超級忐忑地等結果。。每隔幾分鐘就刷下公眾號看面試狀態,感覺整個人都要瞬間爆炸。結果五點半左右突然接到了一面面試官前輩的微信,通知我三面過了,下一輪就是hr面了。哈哈哈哈瞬間超級開心,緊張的心情一掃而空。
等hr小姐姐的電話!!
————————–6月10號更—————————-

四面

沒想到hr是個小哥哥。。這面基本閒聊,問了問家鄉,家庭情況,獨生與否。關於專業這塊聊得挺多,包括當初為什麼要選鄭大,為什麼選擇這個專業,為什麼放棄生物,怎麼喜歡上的程式設計,為什麼不考研。還問了網際網路知識更新換代比較快,加班多能不能接受,答案當然是ok的。hr說女性更多會選擇測試等比較輕鬆的崗位,問我怎麼看。我就blabla一堆這是個人選擇問題,別人的選擇我當然是支援的啦,但是自己喜歡所以選後臺開發。還問了大學期間做的比較成功和失敗的事情。最後問了問業餘愛好,考試結束時間。
最後的最後,是尷尬的私人問題時刻。在問過是否有親屬在騰訊之後,hr向我拋來個大問題:
hr:你有男朋友嗎?
我:呃。。沒有
hr:你們專業應該男女比例比較均衡,所以你為什麼沒有男朋友?
(你為什麼沒有男朋友…沒有男朋友…男朋友…)
目瞪口呆.jpg
內心受到了1w點暴擊傷害的我就扯了一堆有的沒的,大概就是心繫學習無心戀愛什麼的。
然後這次面試就愉快地結束啦。。hr說下週三下午給答覆。
問了問前輩,他說基本穩了,有訊息會給我通知(開心臉
等結果中qwq
————————–6月14號更—————————-
已拿到offer,撒花!