tft每日頭條

 > 職場

 > 騰訊的python面試題

騰訊的python面試題

職場 更新时间:2024-07-04 01:49:06

騰訊的python面試題?坐标:深圳面試公司:騰訊 Python 一面,今天小編就來聊一聊關于騰訊的python面試題?接下來我們就一起去研究一下吧!

騰訊的python面試題(大廠面試題都有哪些)1

騰訊的python面試題

坐标:深圳

面試公司:騰訊 Python 一面

沒有問項目也沒有問之前的工作經曆,估計看一下簡曆就了解個大概了,就是一頓面問題,語速也是很快,不過問題問得非常清楚,如果你解釋的不對,他會做補充。總體感受不錯,總結一下面試題吧。

面試内容

1,平時都用哪些語言?

答:平時用 C 多一點,Python 也了解,但不是很深入,基本上都是直接調的函數和相應的庫,并沒有研究它底部到底是怎麼實現的,意思就是沒看過

Python 源碼,你就問我 C 吧。(果然他開始問 C ,所以他這樣問肯定是想問你最擅長的語言)

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

答:用過 STL,最近在看侯X老師的 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 位是什麼意思?

答:是說 cpu 每次可以處理的數據位數,應該沒啥毛病啊,莫不是 地址線是 64 條 ,還是數據線是 64 條???應該是回答的不好,他也就直接就沒再問了。

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,(坑人的來了)問你這個時間複雜度是多少?

答:建隊時間是 O(Nlog2N)[注:STL 中做了優化,可以達到在線性時間内完成建堆],然後對後面的元素進行遍曆,然後不斷調整堆,需要O(Nlog2N) 的時間複雜度。這不是原理嘛,但是他說那和快排的時間複雜度是一樣的話,為什麼不用快排呢?然後我就卡在這了。。。我答:可能是時間複雜度的常數項不一樣。他說:遍曆後面的N個元素是少不了的,O(N) 是少不了的,那個 O(log2N) 怎麼來的,我說每次調整堆都需要 O(log2N) 的時間複雜度啊,但是如果比堆頂元素小的話,直接跳過,就不用調整了。但是快排需要對所有元素進行排序。他說:時間複雜度就得考慮最壞情況下,最後實在不知道問題出在哪了???就此作罷,他說:你時間複雜度回答的不對。(回答不對直接告訴你,這個還挺人性化的)

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

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

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

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

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

-END-

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved