當(dāng)前位置:首頁 > IT技術(shù) > 編程語言 > 正文

【面試】騰訊 C++方向面經(jīng)
2022-02-14 14:02:33

第一篇
一面 2019/10/21 來自于比特論壇
1、講解項(xiàng)目
2、內(nèi)存申請(qǐng)除了 brk 還有什么
3、堆和棧的區(qū)別
4、多進(jìn)程的地址空間是獨(dú)立的,在操作系統(tǒng)里是怎么實(shí)現(xiàn)的
5、兩個(gè)進(jìn)程去訪問同一個(gè)線性地址,可以嗎
6、段錯(cuò)誤,是怎么導(dǎo)致的
7、操作系統(tǒng)怎么進(jìn)行進(jìn)程的切換
8、Linux 下相關(guān)命令
9、信號(hào)機(jī)制是干什么的?信號(hào)是怎么處理的?信號(hào)處理是同步還是異步?kill 命令什么時(shí)
候返回?
10、tcp 和 udp 的區(qū)別?tcp 怎么做到有序?
11、了解 shell 和 Python 嗎?
二面 2019/10/25 來自于比特論壇
1、自我介紹
2、strlen 的遞歸實(shí)現(xiàn)
3、int rand()1-6 等概率,用這個(gè)函數(shù)實(shí)現(xiàn) int rand()1-10 等概率
4、101 個(gè)硬幣,有一個(gè)是假的,有一個(gè)天平,稱兩次判斷出這個(gè)假硬幣輕還是重
5、程序運(yùn)行中一直進(jìn)入 if 語句,怎么讓它進(jìn)入 else 語句
6、兩個(gè)單鏈表相交了,遍歷一次找到相交結(jié)點(diǎn)
7、阻塞和非阻塞
8、socket 編程的相關(guān)接口
第二篇
一面 2019/10/9 來自于比特論壇
1、虛擬地址空間和物理內(nèi)存
2、哈希沖突的解決方案
3、編譯過程
二面 2019/10/9 來自于比特論壇

1、主要問項(xiàng)目,他選了我第一個(gè)項(xiàng)目,HTTP 文件共享服務(wù)器
2、輸入域名后發(fā)生了什么? 3、多線程安全問題,線程池,鎖
4、斷點(diǎn)續(xù)傳
5、這個(gè)項(xiàng)目在一臺(tái)主機(jī)上跑是沒有問題的,那如果是多臺(tái)主機(jī),就會(huì)有問題,怎么解決
6、然后簡單講了下用 epoll 提高效率,并沒有深入了問
7、HTTP 協(xié)議
三面 2019/10/11 來自于比特論壇
1、主要是鎖的問題
2、線程安全的問題
3、項(xiàng)目
4、100G 文件,多 ip 進(jìn)行排序
5、問了能不能實(shí)習(xí),學(xué)校的課程
6、HTTPS 的實(shí)現(xiàn)
第三篇
一面 2019/10/14 來自于比特論壇
1、自我介紹
2、你對(duì)虛函數(shù)是怎么理解的?
3、詳細(xì)講 static 關(guān)鍵字吧
4、引用和指針有什么區(qū)別?
5、new 和 malloc 有什么區(qū)別?
6、知道哪些 C++11 的新特性?講一下,說一說右值引用的應(yīng)用場(chǎng)景?
7、C++是怎么做動(dòng)態(tài)內(nèi)存管理的?
8、說一下 map 和 hashmap 的區(qū)別吧
9、講一下堆和棧的區(qū)別吧
10、講一下 time_wait 是發(fā)生在那一端?
11、如果很多連接都是處于 time_wait 狀態(tài),該怎么處理?
12、講一下 select 和 epoll 的區(qū)別?
13、講一下 LT 和 ET 有什么區(qū)別?
14、講一下 get 和 post 的區(qū)別?
15、http2 和 http1 的區(qū)別?
16、http 和 https 的區(qū)別?https 的優(yōu)缺點(diǎn)?
17、什么時(shí)候要使用多線程編程?
18、多線程編程里面,你怎么理解互斥鎖和自旋鎖? 19、用 mysql 嗎?
20、你認(rèn)為在搭建一個(gè) web 服務(wù)的過程中,有哪些情況會(huì)影響到 web 服務(wù)的性能? 21、怎么提升服務(wù)器的并發(fā)性能? 22、剛提到線程池,被問線程池內(nèi)部的線程一般是多少個(gè)? 23、倘若你用了線程池,但是高峰時(shí)期流量就是太高了,服務(wù)器承受不住,你該怎么辦? 24、倘若就算這樣還是不行,怎么辦? 25、倘若你就只有一臺(tái)服務(wù)器,沒有更多的硬件資源了,怎么辦? 26、倘若你的操作無法用原子性,一個(gè)線程不斷的生產(chǎn)任務(wù),放到隊(duì)列中,另一個(gè)從隊(duì)列
中拿取請(qǐng)求,如何做到無鎖編程? 27、你平常有什么興趣愛好嗎? 28、最近有看什么技術(shù)書籍嗎? 29,你寫的兩個(gè)項(xiàng)目,搜索引擎和在線畫圖板,是你的課程設(shè)計(jì)嗎?
30、你的 httpserver 是怎么搭建的? 31、我這邊基本問的差不多了,你有什么要問的嗎?
二面 2019/10/14 來自于比特論壇
1、自我介紹
2、C 與 C++的區(qū)別
3、平常有 C 和 C++混合編程嗎,如果在 C++當(dāng)中要調(diào)用 C 的函數(shù),要怎么做? 4、講講 extern 關(guān)鍵字,為什么要用?講重載的原理和使用? 5、知道覆蓋吧,講講實(shí)現(xiàn)和使用? 6、講講你知道的 C++11 新特性
7、我看你對(duì) C++動(dòng)態(tài)內(nèi)存管理有一定了解,你來談一下 C++的內(nèi)存布局吧
8、一個(gè)未初始化的全局變量存在那個(gè)區(qū)?臨時(shí)變量存在那個(gè)區(qū)? 9、new 出來的空間在哪個(gè)區(qū)、為什么已經(jīng)有了 malloc 和 free,為什么還要用
new/delete?
10、談一談數(shù)據(jù)結(jié)構(gòu),挑一種你擅長的說一下
11、你這兩個(gè)項(xiàng)目什么時(shí)候?qū)懙??你這個(gè) http 服務(wù)器的功能是什么?socket 這部分 api
你是怎么用的?
12、有沒有看過其他常用的 http 服務(wù)器?
13、有對(duì)你這個(gè)服務(wù)器進(jìn)行測(cè)試過嗎?怎么測(cè)試量級(jí)的
14、你說熟悉多路復(fù)用模型,有沒有在項(xiàng)目中用到?
15、數(shù)據(jù)庫會(huì)嗎?
16、講講搜索引擎項(xiàng)目中的索引是怎么構(gòu)建的?
17、那你按照這樣來構(gòu)建索引,我搜的關(guān)鍵字中倘若有很多無意義詞(比如 is,a 等),怎
么設(shè)計(jì)能保證我們搜的結(jié)果能符合預(yù)期?
18、搜索引擎是否有測(cè)試過?
19、我看搜索引擎中大量使用了 vector,談一下 vector 的好處?
20、怎么 vector 規(guī)避頻繁擴(kuò)容?
21、sort 的排序是什么排序?
22、講一下 https 和 http 的區(qū)別
23、講一下 http2、0 的改進(jìn)點(diǎn)
24、搜索引擎如果要搞一個(gè)聯(lián)想功能,你覺得該怎么實(shí)現(xiàn)?
25、問問題吧
第四篇
一面 2019/10/22 來自于比特論壇
1、自我介紹
2、談?wù)勎覍?duì)服務(wù)器的理解
3、對(duì) reactor 與 proactor 理解
4、講講項(xiàng)目中服務(wù)器構(gòu)架
5、對(duì)同步異步的理解
6、對(duì) stl 的理解,stl 內(nèi)存分配的理解,為什么要有空間配置器?
7、stl 與面向?qū)ο笥惺裁绰?lián)系?
8、面向?qū)ο笥惺裁磧?yōu)點(diǎn)?為什么要有面向?qū)ο螅?br/> 9、進(jìn)程地址空間分布?為什么要有?如何管理?系統(tǒng)調(diào)用?
10、數(shù)據(jù)庫索引結(jié)構(gòu)?為什么要用 B+樹?
11、你有什么問題問我?
12、談?wù)剬?duì)數(shù)據(jù)安全的理解?加密?MD5?
二面 2019/10/22 來自于比特論壇
1、堆和??臻g
2、netstat 和 ps 兩個(gè)命令
3、進(jìn)程和線程
4、父進(jìn)程創(chuàng)建了兩個(gè)進(jìn)程,其中一個(gè)子進(jìn)程除 0 錯(cuò)誤,另外兩個(gè)進(jìn)程的情況? 5、上題進(jìn)程換成線程

6、線程??臻g給了一個(gè)超過棧內(nèi)存的變量,會(huì)發(fā)生什么? 7、進(jìn)程間通信
8、進(jìn)程和線程的優(yōu)劣,進(jìn)程和線程一般開辟幾個(gè)? 9、http 協(xié)議,報(bào)頭,狀態(tài)
10、服務(wù)端客戶端模型和瀏覽器服務(wù)端模型做對(duì)比,分析其優(yōu)劣,安全性
11、tcp 和 udp 的對(duì)比
12、發(fā)送報(bào)文的具體函數(shù)調(diào)用?
13、主要就這些方面,考察底層原理,有的題需要說出自己的看法
第五篇
一面 2019/10/16 來自于比特論壇
1、什么是三次揮手?為什么要三次揮手?為什么不是兩次和四次?
2、什么是四次握手?為什么要四次握手?有沒有抓包抓過四次握手?講了一下什么情況
有三次握手?
3、雙方發(fā)送 SYN,為什么要發(fā)送 SYN? 4、四次揮手里 FIN_WAIT2 狀態(tài)一直持續(xù)怎么辦?
5、問了項(xiàng)目
6、從項(xiàng)目扯到了 epoll,講了一下 epoll 和 select 的區(qū)別,講了一下水平觸發(fā)和邊緣觸發(fā)
7、然后講了一下 strcpy 怎么實(shí)現(xiàn)的,然后 strcpy 內(nèi)部有沒有動(dòng)態(tài)內(nèi)存管理
8、知不知道雙向鏈表,快速闡述一下雙向鏈表怎么實(shí)現(xiàn)的
9、再講一下項(xiàng)目,問到那個(gè)線程創(chuàng)建進(jìn)程,對(duì) fork 的優(yōu)化,有沒有優(yōu)化
10、都接觸過哪些開源庫
11、平時(shí)碰到問題是怎么解決的?
二面 2019/10/16 來自于比特論壇
1、講項(xiàng)目,懟著項(xiàng)目一直問。你為什么知道你的服務(wù)器性能瓶頸在哪里? 2、cpu 給進(jìn)程分配哪些資源? 3、桶查找
4、怎么確定你的哈希表大?。?5、字符串哈希算法
6、文件寫到磁盤的流程
7、內(nèi)存頁大小?磁盤塊大??? 8、職業(yè)規(guī)劃
9、創(chuàng)建一個(gè)線程占用的內(nèi)存是多少?
10、一個(gè)系統(tǒng)中能創(chuàng)建多少進(jìn)程?
11、一個(gè)進(jìn)程可以創(chuàng)建多少個(gè)線程?
第六篇
一面 2019/10/14 來自于比特論壇
1、自我介紹
2、看你簡歷上有寫智能指針,你能給我簡單描述一下嗎?
3、C 文件的編譯過程?
4、鏈接有哪些鏈接方式?
5、指針數(shù)組、數(shù)組指針的 sizeof 求值分別是什么?
6、你對(duì)模板有了解嗎? 7、你了解運(yùn)行時(shí)多態(tài)的實(shí)現(xiàn)過程嗎?
8、你了解 STL 嗎?map 的底層實(shí)現(xiàn)?map 中查找一個(gè)元素的時(shí)間復(fù)雜度?hash 沖突的
解決方法?
9、排序算法
10、core 文件的調(diào)試方式?gdb 的使用方法你了解過哪些?要是你的代碼 core 掉,你一
般會(huì)怎樣調(diào)試?
11、多進(jìn)程間通信的方式?你認(rèn)為哪一種的效率最高?
12、那多線程間通信有哪些方法?線程安全問題如何解決?如果想讓數(shù)據(jù)屬于線程私有應(yīng)
該怎樣實(shí)現(xiàn)?有了解過 tls 的底層實(shí)現(xiàn)嗎?
13、TCP/UDP 可以進(jìn)行廣播嗎?UDP 可靠嗎?MTU/MSS 的大?。?br/> 14、unique_lock 和 lock_groud 的區(qū)別?我看到你的項(xiàng)目中有個(gè) bug?我看到你的項(xiàng)目
中用的 send 和 recv,怎樣設(shè)置為非阻塞?非阻塞如果沒有數(shù)據(jù)可讀返回值是什么?
15、三次握手和四次揮手?
16、有沒有了解過 malloc 的底層?
17、查看服務(wù)器連接的工具?你有抓過數(shù)據(jù)包嗎?
18、你有了解過開源的東西嗎?你有了解過協(xié)程嗎?分布式?阿帕奇?
19、算法題:K 行,每一行有無窮多的數(shù),每一行都是由大到小排列,從這 K 行中找前 N
個(gè)最大的數(shù)
20、你要問的問題
二面 2019/9/2 來自于比特論壇
1、自我介紹
2、主要聊項(xiàng)目
3、算法題:在無數(shù)個(gè)無序數(shù)中找到中位數(shù)
4、你問的問題
三面 2019/9/5 來自于比特論壇
1、問了學(xué)校相關(guān)專業(yè)課
2、算法題:一個(gè)文件中有 100 億個(gè) int 數(shù)據(jù),用最短時(shí)間找到最大的 1000 個(gè) 3、進(jìn)程和線程的區(qū)別
4、線程池的實(shí)現(xiàn)方法?有什么好處?
5、vector 和 list 的區(qū)別,push_back 如何實(shí)現(xiàn)?vector 的擴(kuò)容方式?為什么擴(kuò)容有這樣
差異?
6、vector、list、map、set 有什么區(qū)別?分別的使用場(chǎng)景?
7、Linux 下進(jìn)程間通信方式?管道、共享內(nèi)存什么場(chǎng)景下會(huì)用?兩個(gè)進(jìn)程不在同一個(gè)機(jī)器
如何通信?
8、有用過 socket 嗎?UDP 不可靠為啥還要存在?
9、微信聊天用的是 UDP 還是 TCP?
10、Linux 下查看網(wǎng)絡(luò)端口?
11、Linux 下查看負(fù)載情況?
12、臨時(shí)變量 int arr[]可以達(dá)到的最大大小
13、一個(gè)進(jìn)程最大能占用多大的內(nèi)存空間?
14、你考慮讀研究生嗎?你家是哪里的?
第七篇
一面 2019/9/12 來自于比特論壇
1、虛擬地址空間和物理內(nèi)存
2、哈希沖突的解決方案(開散列,閉散列,多階哈希),一致性哈希
3、編譯過程
二面 2019/9/17 來自于比特論壇
1、主要問項(xiàng)目,他選了我第一個(gè)項(xiàng)目,HTTP 文件共享服務(wù)器
2、輸入域名后發(fā)生了什么?
3、多線程安全問題,線程池,鎖
4、斷點(diǎn)續(xù)傳
5、這個(gè)項(xiàng)目在一臺(tái)主機(jī)上跑是沒有問題的,那如果是多臺(tái)主機(jī),就會(huì)有問題,怎么解決
6、然后簡單講了下用 epoll 提高效率
7、HTTP 協(xié)議
第八篇
一面 2019/9/17 來自于比特論壇
1、說一下 HTTP 服務(wù)器
2、你寫的是什么樣的服務(wù)器呢,是單進(jìn)程多線程還是多進(jìn)程還是線程池,講解一下
3、線程池如何實(shí)現(xiàn)的?
4、那所有線程之間有什么是共享的嗎?
5、線程之間同步和互斥問題
6、你在寫這個(gè)服務(wù)器的時(shí)候遇到過什么問題嗎?怎樣處理的?
7、高并發(fā)的情況怎樣處理呢?
8、select 和 eopll? 9、說一下搜索引擎項(xiàng)目
10、你的索引如何構(gòu)建的
11、你的正排索引和倒排索引都是在堆上建立的,進(jìn)程退出就沒有了,那有什么辦法保存
下來嗎?
12、說一下共享內(nèi)存
13、搜索引擎項(xiàng)目用到的服務(wù)器是自己寫的還是其他的什么
14、看過什么書?給你推薦一本書《Unix 環(huán)境高級(jí)編程》
15、玩過什么游戲,喜歡玩游戲嗎?
二面 2019/9/24 來自于比特論壇
1、我們是做游戲開發(fā)的,之前有做過關(guān)于游戲這方面的項(xiàng)目嗎?
2、那你說一下你的服務(wù)器
3、你這個(gè)是用了 cgi,那你是怎么實(shí)現(xiàn)的?
4、如果我不用 fork 加 exec 那怎樣去實(shí)現(xiàn)
5、你玩過王者榮耀吧,我在手機(jī)上按下一個(gè)技能會(huì)怎么樣?
6、既然你說到了 udp,那你說,服務(wù)器是會(huì)把你按下的這個(gè)技能,所返回的 udp 這樣的
數(shù)據(jù)怎樣處理,在客戶端上
7、技能釋放之后,會(huì)在你的客戶端上顯示出來,也會(huì)在其他玩家那里顯示,我服務(wù)器要
怎樣緩存?
8、你說的是有局部緩存還有一些全局的緩存,那么它們分別都是怎樣處理的呢?
9、你玩過 mmo 的游戲嗎?
10、那你知道,假如說我現(xiàn)在有很多個(gè)人大約是幾千人幾萬人在一起玩,我的服務(wù)器會(huì)怎
樣處理?
11、你說的這種,并不是我的意思,假如說,現(xiàn)在有一張地圖,我有幾萬人同時(shí)連接進(jìn)
來,那你說我的服務(wù)器或者客戶端怎樣處理?
12、那我再問你,假如我現(xiàn)在所有的人都聚集到了一起,在一個(gè)主城里,那此時(shí)我又改怎
樣處理?
13、那我再問你一些編程中的知識(shí)吧
14、析構(gòu)函數(shù)什么時(shí)候要用 virtual
15、Dynamic_cast 用過嗎
16、那我問你一個(gè)很深入的問題,怎樣實(shí)現(xiàn)一個(gè) dynamic_cast,你就只說是指針的情況
吧,答不出來也沒關(guān)系
17、我看你學(xué)過很多數(shù)據(jù)結(jié)構(gòu),那你知道 map 和 unordered_map 嗎?
18、紅黑樹和哈希說一下
19、紅黑樹和哈希他們?cè)鰟h查改的時(shí)間復(fù)雜度
20、假如說,我現(xiàn)在有很多數(shù)據(jù),是只讀的,我要把他們存起來,那你有沒有什么辦法可
以改進(jìn)一下這個(gè) map 和 unordered_map,效率更高一點(diǎn)
21、Perfect hashing
22、那再比如說,我現(xiàn)在有很多只讀的字符串,再讓你改進(jìn)一下你有辦法嗎
23、你聽說過 tire 嗎
第九篇
一面 2019/10/8 來自于比特論壇
1、純虛函數(shù)是什么
2、多態(tài)是什么
3、new 和 malloc 區(qū)別
4、static 的理解
5、指針和引用的區(qū)別
6、左值引用和右值引用
7、hashmap 和 map 的區(qū)別
8、list 和 vector 的區(qū)別
9、三次握手和為什么是三次
10、HTTP2 和 1 的區(qū)別
11、服務(wù)端和客戶端的 socket 流程
12、TCP 滑動(dòng)窗口
13、自旋鎖和互斥鎖,分別應(yīng)用于什么場(chǎng)景
14、線程數(shù)量有什么講究
二面 2019/10/15 來自于比特論壇
1、HTTPS 和 HTTP 的區(qū)別
2、設(shè)計(jì)一個(gè)帶論文查重的方式
3、設(shè)計(jì)一個(gè)類似 QQ 同步助手的云同步通訊錄
4、設(shè)計(jì)一個(gè)數(shù)據(jù)庫存儲(chǔ)視頻
5、設(shè)計(jì) QQ 后面通訊的邏輯
6、設(shè)計(jì)一個(gè) vector
第十篇
一面 2019/6/5 來自于比特論壇
1、什么是三次揮手?為什么要三次揮手?為什么不是兩次和四次?
2、什么是四次握手?為什么要四次握手?有沒有抓包抓過四次握手?講了一下什么情況
有三次握手?
3、雙方發(fā)送 SYN,為什么要發(fā)送 SYN? 4、四次揮手里 FIN_WAIT2 狀態(tài)一直持續(xù)怎么辦?
5、問了項(xiàng)目
6、從項(xiàng)目扯到了 epoll,講了一下 epoll 和 select 的區(qū)別,講了一下水平觸發(fā)和邊緣觸發(fā)
7、然后講了一下 strcpy 怎么實(shí)現(xiàn)的,然后 strcpy 內(nèi)部有沒有動(dòng)態(tài)內(nèi)存管理
8、知不知道雙向鏈表,快速闡述一下雙向鏈表怎么實(shí)現(xiàn)的
9、再講一下項(xiàng)目,問到那個(gè)線程創(chuàng)建進(jìn)程,對(duì) fork 的優(yōu)化,有沒有優(yōu)化
10、都接觸過哪些開源庫
11、平時(shí)碰到問題是怎么解決的?
二面 2019/6/11 來自于比特論壇
1、講項(xiàng)目,懟著項(xiàng)目一直問。你為什么知道你的服務(wù)器性能瓶頸在哪里? 2、cpu 給進(jìn)程分配哪些資源? 3、桶查找
4、怎么確定你的哈希表大小? 5、字符串哈希算法
6、文件寫到磁盤的流程
7、內(nèi)存頁大???磁盤塊大小? 8、職業(yè)規(guī)劃
9、創(chuàng)建一個(gè)線程占用的內(nèi)存是多少?
10、一個(gè)系統(tǒng)中能創(chuàng)建多少進(jìn)程?
11、一個(gè)進(jìn)程可以創(chuàng)建多少個(gè)線程?

求職必備刷題官網(wǎng):https://github.com/bennyrhys/interview
【更多互聯(lián)網(wǎng)公司筆試面試真題請(qǐng)關(guān)注“讓我遇見相似的靈魂”公眾號(hào)】

【面試】騰訊 C++方向面經(jīng)_搜索引擎

本文摘自 :https://blog.51cto.com/u

開通會(huì)員,享受整站包年服務(wù)立即開通 >