騰訊python面試總結 騰訊面試總結(深圳總部)

2021-10-12 11:41:05 字數 3174 閱讀 4420

1,平時都用哪些語言?

答:平時用 c++ 多一點,python 也了解,但不是很深入,基本上都是直接調的函式和相應的庫,並沒有研究它底部到底是怎麼實現的,意思就是沒看過 python 原始碼,你就問我 c++ 吧。(果然他開始問 c++,所以他這樣問肯定是想問你最擅長的語言)

2,你有用過 stl , boost 這些庫嗎?

答:用過 stl,最近在看侯捷老師的 stl 原始碼剖析。

3,stl 都有哪幾個組成部分?

答:容器,介面卡,迭代器,演算法,然後就知道還有乙個,現在想想肯定是由於當時有點緊張,就沒答出來,還是看過原始碼的人呢,這都答不出來,丟人,他還給提示說加括號那個,妹的,我竟然說是運算子過載,(我以為是()過載,這和 stl 有什麼關係,這都能說出來,呸呸呸。。。),他最後說還有 仿函式,心想這個和 括號有什麼關係,後來想想確實是有關係,一般用到仿函式的時候都會在後面加個括號,表示這是乙個匿名物件,這樣進行使用,看來應了那句話:了解不行,知道也不行,必須形成條件反射才行。

4,問我 stl 你都有用過哪些容器?

答:很隨意的說用過 array,vector(這個用的比較多),set,map,hash_map,hash_set,然後他似乎聽得出來了,然後就問我 stl 裡面就直接叫 hash_map 嗎?哈哈,此刻確定他在聽我講話,然後立即改口說,不是,叫 unordered_map,unordered_set。

5,set 底層是怎麼實現的 ?

答:用紅黑樹來實現的,我以為他會問我具體的紅黑樹知識,比如插入,刪除,調整,結果啥都沒問,就直接過了。嚇了一身汗。。。

6,unordered_map 的底部是怎麼實現的?

答:用 hash_table 來實現的 。

7,查詢的時間複雜度是多少?

答:定位乙個槽 是 o(1),如果定位乙個元素,用外部拉鍊法的話,平均查詢長度是鍊錶的長度的一半,時間複雜度為 o(n)。

8,估計是聽到外部拉鍊法,就直接問有沒有其他的處理衝突的方式?

答:二次定址法,雙雜湊法

9,如果我要實現乙個hash_map,鍵為 字串(string),那該如何設計?

答:我說:直接把對應的鍵值對存到每個槽對應鍊錶節點中就行了,他說:我不是這個意思,就是你定位槽的時候不是需要取模運算嗎,那 string 怎麼取模呢?我說:需要把這個字串轉換為對應的hash code,然後說 stl 中是這樣實現的,就是直接用 i * 5 + j 這個公式直接求該字串的 hashcode 值【注:看原始碼還是有用的】。

10,他說用 c++ 記憶體洩漏這個問題還挺麻煩的,如果你的程式發生了記憶體洩漏,你怎麼才能檢測到是在哪發生了記憶體洩漏了呢?

答:可以用記憶體洩漏的分析工具來分析,他問:比如哪些工具?答:其實我是忘記了,記得嵌入式 linux 課有乙個實驗讓用 這個工具,而且也看到過相應的部落格,所以 val ...g...,我說忘記怎麼讀了,他知道我了解這個工具,就直接告訴我了,叫 valgrind。當然還有其它很多,答什麼都可以的。他問:還有什麼其它辦法嘛?確實想不起來了,他作罷。

作業系統:

11,然後好像沒什麼可問的了,就直接跳轉到 作業系統了,然後問 你會 linux 系統的使用嗎?

答:會一些基本命令,他問:比如都會哪些命令?答:ls ,cp,mv,cd 等等這些基本命令,他也就沒再問下去了。

12,現在說 系統是 64 位 還是 32 位是什麼意思?

13,問 32 位系統下乙個程序可分配的最大記憶體空間是多少?

答:這道題直接回答不上來,我記得記憶體最大是 4g,其中核心位址是最高的 1g 空間,其它的 3g 都是使用者態空間,這乙個程序能分配多大還真是不知道,莫不是可以全用???然後覺得作業系統部分的內容掌握的不太好。。主要是整天用 windows ,要是用 linux 應該知道吧。。

然後轉到計算機網路部分

14,你知道 udp 和 tcp 有哪些不同嘛?

答:最主要的不同就是 tcp 是可靠傳輸,udp 是不可靠傳輸,tcp需要建立連線,udp 不需要,tcp 有擁塞控制,udp 沒有。

15,因為話多,因為多說了一句:tcp 用來保證可靠傳輸的方法 udp 都沒有,因為 udp 是不可靠傳輸,然後他就問,都有哪些手段保證 tcp 可靠傳輸?

答:滑動視窗進行流量控制,超時重傳,ack 確認等。然後他就沒再問了。

轉到資料庫部分

16,你有用過哪些資料庫?

答:mysql 用的比較多一些。

17,如果我有乙個表比較大,我現在執行了乙個 select 語句,發現執行的特別慢,我該怎麼解決?

答:這主要看這張表具體有多大,如果很大,有幾億行的話,那麼就需要考慮分表的問題,如果不是很大,不至於分表,那麼可以考慮是不是需要建索引,他問:還有別的辦法嗎?答:也許是你的select 語句寫的不合適,他問:我沒聽懂,什麼是不合適?答:也可能是索引已經建好了,可是你的 select 語句沒用到索引,或者是沒走索引。問:如何知道自己的 sql 語句走沒有索引?答:在自己的 sql 語句前面加 explain 就可以看到 sql 語句的具體執行過程。

18,你平時都是怎麼除錯程式的?

答:我主要是用 vs 寫**,所以用斷點除錯用的比較多,也會用到 print 進行列印資訊來除錯。他問:如果用 print 的話,那資訊走的太快了,一閃而過怎麼辦?我說可以加斷點或者加延遲函式可以看到,現在想一下,vs 裡面最後不是一般加 system("pause"),就可以停住了嘛,dev++ 什麼也不用加就自己停住了啊,怎麼會看不到 列印出來的資訊呢???不知道他想問啥。。

19,我寫了乙個程式,發現 cup 的負載量達到了 100%,我程式中可能出現了乙個死迴圈,我該怎麼找到這個死迴圈出現的地方呢?

答:可以用二分查詢的,定位出現死迴圈的地方,或者通過加斷點的方式來進行查詢死迴圈。他問:那找找也很慢啊,還有其他的方式嘛?我實在想不到了,他就此作罷。

20,現在我有 10000 個數,我想找到最大的 100個,怎麼找呢?(實用演算法課 ppt 上的原例)

答:可以用堆來做,問:怎麼做?答:先建立乙個100個元素的小根堆,然後遍歷後面剩餘的元素,如果比堆頂的元素小,則直接跳過,如果比堆頂的元素大,則和當前堆頂元素進行交換,然後調整堆,最後剩餘的堆中的元素就是前100大的元素。

21,(坑人的來了)問你這個時間複雜度是多少?

22,然後就問你家是哪的?願意來深圳不?

答:你說該怎麼回答,肯定是願意啦。

23,然後問我有什麼問題?

答:隨便問了,比如主要做什麼工作?接觸什麼知識,做的工作能不能直接感受到?等等。。

注:面試官說會把我的簡歷給它們的 leader ,估計二面在等我,希望不要掛了呀。。。

騰訊面試總結

問答題 1.乙個不規則的硬幣,丟到正面的概率為p,在不知道丟到p的情況下怎麼設計乙個演算法才能讓硬幣扔到正面和反面的概率相同?2.libevent的框架 3.libevent底層的實現機制 4.muduo庫的框架 5.muduo庫里的執行緒池呼叫機制,然後接著又問了是否了解過生產者消費者模式,應該是...

騰訊面試總結

5.21 一面 30min 1.自我介紹 2.專案介紹 3.hbase rs和region有什麼區別 4.hbase寫資料的流程 5.rs掛掉以後有什麼影響,資料會怎麼恢復 6.hlog是如何恢復資料的,具體的流程 7.spark的shuffle和mr的shuffle有什麼區別?8.spark有哪幾...

騰訊一面總結

這次遇到的面試官直接拿著簡歷問上面的專案,然後基本上專案可以牽扯到的知識都會被問到。被問到的有 一。專案 1.專案的整體介紹,畫時序圖,我完成的部分是那些。2.被問到我沒有參與的部分,讓說一下如何進行分片。4.建立的連線是長連線還是短連線?二。os 1.多執行緒和多程序的區別 2.多程序的好處 3....