騰訊校招面試常見問題

才智咖 人氣:1.4W

前幾天我參加了騰訊校招面試,總體感覺騰訊問的問題不難,只不過我太水而已,沒有深入研究某些問題。

騰訊校招面試常見問題

一開始進入面試場,先自我介紹一下,然後面試官可能就會根據你的介紹開始插入談話,這樣就算正式開始技術面了。

面試官問我的第一個問題是:

問題1:怎麼在linux下查詢一個檔案中有多少個給定的字串

答:這題本來想考察我的shell程式設計的能力吧,不過我說這個不會,然後他問我如果寫程式實現呢

我答我會用trie樹去記錄字串出現的次數

然後有被問道更深入一點的,如果檔案過大呢?

我答,那就把檔案內容hash取模分成多個足夠小的檔案,然後每個小檔案trie記錄結果,輸出一個小檔案,最後把所有結果檔案合併就可以得到最終結果

問題2個整數集合,找出他們的交集

我的回答是這樣的:如果對於資料較小(10W以下)我會採取雜湊的方法去求數集較小的那個集合的hash值存在hash表中,然後對另一個表中每一個數進行hash,如果在hash表中找到則這個數是交集的.數,輸出。這個演算法時間效率是O(n+m),空間效率O(3n+m);(因為hash幾乎浪費掉一半空間)

對於大資料,我則先把資料hash%100的樣子分到許多個小檔案中,然後對這些hash值的次數建立一顆二元搜尋樹,遍歷另一個集合的數來找,找到一個就輸出一個,最後得到集合數。演算法效率是O(n/100*m*log(n/100)),空間效率O(n+m)

之後,面試官見我多次提到二元搜尋樹,就叫我

問題3:寫二元搜尋樹的查詢演算法,答案就不寫了,簡單。

寫完之後,面試官又問我由這裡到一個什麼地方的,要求最短時間,怎麼求

這個就是問最短路演算法,我就答了這個,然後他又問我怎麼知道去的路徑通不通,我答用傳遞閉包去計算

他問我如何傳遞閉包,然後我就畫圖演示了一下這個過程

問題4:程序與執行緒的區別

這題我答得非常不好,我只答了程序有資源,執行緒沒資源,程序個數有限,而執行緒的個數幾乎不限,程序的排程慢,執行緒的排程快這些基礎點

但是被問到為什麼程序排程比執行緒慢時,我答不出,我答是因為使用者態和核心態的轉換造成的,但是百度一下,答案應該是因為執行緒排程是在程序中進行,在同一儲存區內操作,而程序則在不同儲存區操作,所以程序排程數度比執行緒慢

問題5:問我TCP/IP有多少層

我答OSI標準有7層,但是目前工業大多使用5層的標準,然後回答了一下這些標準,我只會答5層標準的那一個。。。

接著又問我IP層(網路層)的作用,

我答了很多,又說了什麼TCP、UDP的,然後在面試官的知道下,我才答出,網路層的作用是對映作用,主要是IP和MAC地址、埠的對映(我不知道對不對。。)

接著又問我TCP和UDP的區別

我就答,TCP是有連線的,UDP是無連線的,TCP通過三次握手保證資料的可靠性,UDP則沒有

最後還問我滑動視窗的東西,我就答了滑動視窗是為了保證資料被客戶端正確接收了,他又問我為什麼能保證,然後我就畫圖演示滑動視窗的傳送、接收、移動過程

問題6:寫一個函式,計算給定的一個整數中有多少個0,這個簡單,不多說了

經過這次的面試,我總結如下:

1.準備要充足,多打聽一些已經面試的人面經

2.對於熱門問題,準備的時候要深入研究一些點,不然很容易被人問倒,比如我被問到程序和執行緒區別那裡

3.簡歷上寫的東西很重要,幾乎你簡歷上寫什麼,面試官就會問你什麼,比如我簡歷上寫我資料結構、最短路徑、字串處理方面學得比較好,他就問我這些演算法了

4.提前到面試地點,對面試官禮貌