當前位置:首頁>職場>騰訊的python面試題(大廠面試題都有哪些)
發(fā)布時間:2024-01-24閱讀(19)
坐標:深圳面試公司:騰訊 Python 一面,今天小編就來聊一聊關于騰訊的python面試題?接下來我們就一起去研究一下吧!

騰訊的python面試題
坐標:深圳
面試公司:騰訊 Python 一面
沒有問項目也沒有問之前的工作經(jīng)歷,估計看一下簡歷就了解個大概了,就是一頓面問題,語速也是很快,不過問題問得非常清楚,如果你解釋的不對,他會做補充。總體感受不錯,總結一下面試題吧。
面試內容
1,平時都用哪些語言?
答:平時用 C 多一點,Python 也了解,但不是很深入,基本上都是直接調的函數(shù)和相應的庫,并沒有研究它底部到底是怎么實現(xiàn)的,意思就是沒看過
Python 源碼,你就問我 C 吧。(果然他開始問 C ,所以他這樣問肯定是想問你最擅長的語言)
2,你有用過 STL , boost 這些庫嗎?
答:用過 STL,最近在看侯X老師的 STL 源碼剖析。
3,STL 都有哪幾個組成部分?
答:容器,適配器,迭代器,算法,然后就知道還有一個,現(xiàn)在想想肯定是由于當時有點緊張,就沒答出來,還是看過源碼的人呢,這都答不出來,丟人,他還給提示說加括號那個,我竟然說是運算符重載,(我以為是()重載,這和 STL 有什么關系,這都能說出來。。。),他最后說還有仿函數(shù),心想這個和括號有什么關系,后來想想確實是有關系,一般用到仿函數(shù)的時候都會在后面加個括號,表示這是一個匿名對象,這樣進行使用,看來應了那句話:了解不行,知道也不行,必須形成條件反射才行。
4,問我 STL 你都有用過哪些容器?
答:很隨意地說用過 array,vector(這個用的比較多),set,map,hash_map,hash_set,然后他似乎聽得出來了,然后就問我 STL 里面就直接叫 hash_map 嗎?哈哈,此刻確定他在聽我講話,然后立即改口說,不是,叫 unordered_map,unordered_set。
5,set 底層是怎么實現(xiàn)的 ?
答:用紅黑樹來實現(xiàn)的,我以為他會問我具體的紅黑樹知識,比如插入,刪除,調整,結果啥都沒問,就直接過了。嚇了一身汗。。。
6,unordered_map 的底部是怎么實現(xiàn)的?
答:用 hash_table 來實現(xiàn)的 。
7,查找的時間復雜度是多少?
答:定位一個槽 是 O(1),如果定位一個元素,用外部拉鏈法的話,平均查找長度是鏈表的長度的一半,時間復雜度為 O(n)。
8,估計是聽到外部拉鏈法,就直接問有沒有其他的處理沖突的方式?
答:二次尋址法,雙散列法
9,如果我要實現(xiàn)一個hash_map,鍵為 字符串(string),那該如何設計?
答:我說:直接把對應的鍵值對存到每個槽對應鏈表節(jié)點中就行了,他說:我不是這個意思,就是你定位槽的時候不是需要取模運算嗎,那 string 怎么取模呢?我說:需要把這個字符串轉換為對應的Hash Code,然后說 STL 中是這樣實現(xiàn)的,就是直接用 i * 5 j 這個公式直接求該字符串的 hashCode 值【注:看源碼還是有用的】。
10,他說用 C 內存泄漏這個問題還挺麻煩的,如果你的程序發(fā)生了內存泄漏,你怎么才能檢測到是在哪發(fā)生了內存泄漏了呢?
答:可以用內存泄漏的分析工具來分析,他問:比如哪些工具?答:其實我是忘記了,記得嵌入式 Linux 課有一個實驗讓用 這個工具,而且也看到過相應的博客,所以 Val ...g...,我說忘記怎么讀了,他知道我了解這個工具,就直接告訴我了,叫 Valgrind。當然還有其它很多,答什么都可以的。他問:還有什么其它辦法嘛?確實想不起來了,他作罷。
11,然后好像沒什么可問的了,就直接跳轉到操作系統(tǒng)了,然后問你會 linux 系統(tǒng)的使用嗎?
答:會一些基本命令,他問:比如都會哪些命令?答:ls ,cp,mv,cd 等等這些基本命令,他也就沒再問下去了。
12,現(xiàn)在說 系統(tǒng)是 64 位 還是 32 位是什么意思?
答:是說 cpu 每次可以處理的數(shù)據(jù)位數(shù),應該沒啥毛病啊,莫不是 地址線是 64 條 ,還是數(shù)據(jù)線是 64 條???應該是回答的不好,他也就直接就沒再問了。
13,問 32 位系統(tǒng)下一個進程可分配的最大內存空間是多少?
答:這道題直接回答不上來,我記得內存最大的是 4G,其中內核地址是最高的 1G 空間,其它的 3G 都是用戶態(tài)空間,這一個進程能分配多大還真是不知道,莫不是可以全用???然后覺得操作系統(tǒng)部分的內容掌握得不太好。。主要是整天用 windows ,要是用 Linux 應該知道吧。。
然后轉到計算機網(wǎng)絡部分
14,你知道 UDP 和 TCP 有哪些不同嘛?
答:最主要的不同就是 TCP 是可靠傳輸,UDP 是不可靠傳輸,TCP需要建立連接,UDP 不需要,TCP 有擁塞控制,UDP 沒有。
15,因為話多,因為多說了一句:TCP 用來保證可靠傳輸?shù)姆椒?UDP 都沒有,因為 UDP 是不可靠傳輸,然后他就問,都有哪些手段保證 TCP 可靠傳輸?
答:滑動窗口進行流量控制,超時重傳,ack 確認等。然后他就沒再問了。
轉到數(shù)據(jù)庫部分
16,你有用過哪些數(shù)據(jù)庫?
答:Mysql 用的比較多一些。
17,如果我有一個表比較大,我現(xiàn)在執(zhí)行了一個 select 語句,發(fā)現(xiàn)運行得特別慢,我該怎么解決?
答:這主要看這張表具體有多大,如果很大,有幾億行的話,那么就需要考慮分表的問題,如果不是很大,不至于分表,那么可以考慮是不是需要建索引,他問:還有別的辦法嗎?答:也許是你的select 語句寫的不合適,他問:我沒聽懂,什么是不合適?答:也可能是索引已經(jīng)建好了,可是你的 select 語句沒用到索引,或者是沒有索引。
問:如何知道自己的 sql 語句有沒有索引?
答:在自己的 sql 語句前面加 explain 就可以看到 sql 語句的具體執(zhí)行過程。
18,你平時都是怎么調試程序的?
答:我主要是用 VS 寫代碼,所以用斷點調試用的比較多,也會用到 print 進行打印信息來調試。他問:如果用 print 的話,那信息走得太快了,一閃而過怎么辦?我說可以加斷點或者加延遲函數(shù)可以看到,現(xiàn)在想一下,VS 里面最后不是一般加 system("pause"),就可以停住了嘛,dev 什么也不用加就自己停住了啊,怎么會看不到 打印出來的信息呢???不知道他想問啥。。
19,我寫了一個程序,發(fā)現(xiàn) cup 的負載量達到了 100%,我程序中可能出現(xiàn)了一個死循環(huán),我該怎么找到這個死循環(huán)出現(xiàn)的地方呢?
答:可以用二分查找的,定位出現(xiàn)死循環(huán)的地方,或者通過加斷點的方式來進行查找死循環(huán)。他問:那找找也很慢啊,還有其他的方式嘛?我實在想不到了,他就此作罷。
20,現(xiàn)在我有 10000 個數(shù),我想找到最大的 100個,怎么找呢?(實用算法課 PPT 上的原例)
答:可以用堆來做,問:怎么做?答:先建立一個100個元素的小根堆,然后遍歷后面剩余的元素,如果比堆頂?shù)脑匦。瑒t直接跳過,如果比堆頂?shù)脑卮螅瑒t和當前堆頂元素進行交換,然后調整堆,最后剩余的堆中的元素就是前100大的元素。
21,(坑人的來了)問你這個時間復雜度是多少?
答:建隊時間是 O(Nlog2N)[注:STL 中做了優(yōu)化,可以達到在線性時間內完成建堆],然后對后面的元素進行遍歷,然后不斷調整堆,需要O(Nlog2N) 的時間復雜度。這不是原理嘛,但是他說那和快排的時間復雜度是一樣的話,為什么不用快排呢?然后我就卡在這了。。。我答:可能是時間復雜度的常數(shù)項不一樣。他說:遍歷后面的N個元素是少不了的,O(N) 是少不了的,那個 O(log2N) 怎么來的,我說每次調整堆都需要 O(log2N) 的時間復雜度啊,但是如果比堆頂元素小的話,直接跳過,就不用調整了。但是快排需要對所有元素進行排序。他說:時間復雜度就得考慮最壞情況下,最后實在不知道問題出在哪了???就此作罷,他說:你時間復雜度回答的不對。(回答不對直接告訴你,這個還挺人性化的)
22,然后就問你家是哪的?愿意來深圳不?
答:你說該怎么回答,肯定是愿意啦。
23,然后問我有什么問題?
答:隨便問了,比如主要做什么工作?接觸什么知識,做的工作能不能直接感受到?等等。。
注:面試官說會把我的簡歷給他們的 leader ,估計二面在等我,希望不要掛了呀。。。
-END-
歡迎分享轉載→http://m.avcorse.com/read-238423.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖