第一篇
一面 2019/10/21 來自于比特論壇
1、講解項目
2、內存申請除了 brk 還有什么
3、堆和棧的區(qū)別
4、多進程的地址空間是獨立的,在操作系統(tǒng)里是怎么實現(xiàn)的
5、兩個進程去訪問同一個線性地址,可以嗎
6、段錯誤,是怎么導致的
7、操作系統(tǒng)怎么進行進程的切換
8、Linux 下相關命令
9、信號機制是干什么的?信號是怎么處理的?信號處理是同步還是異步?kill 命令什么時
候返回?
10、tcp 和 udp 的區(qū)別?tcp 怎么做到有序?
11、了解 shell 和 Python 嗎?
二面 2019/10/25 來自于比特論壇
1、自我介紹
2、strlen 的遞歸實現(xiàn)
3、int rand()1-6 等概率,用這個函數(shù)實現(xiàn) int rand()1-10 等概率
4、101 個硬幣,有一個是假的,有一個天平,稱兩次判斷出這個假硬幣輕還是重
5、程序運行中一直進入 if 語句,怎么讓它進入 else 語句
6、兩個單鏈表相交了,遍歷一次找到相交結點
7、阻塞和非阻塞
8、socket 編程的相關接口
第二篇
一面 2019/10/9 來自于比特論壇
1、虛擬地址空間和物理內存
2、哈希沖突的解決方案
3、編譯過程
二面 2019/10/9 來自于比特論壇
1、主要問項目,他選了我第一個項目,HTTP 文件共享服務器
2、輸入域名后發(fā)生了什么? 3、多線程安全問題,線程池,鎖
4、斷點續(xù)傳
5、這個項目在一臺主機上跑是沒有問題的,那如果是多臺主機,就會有問題,怎么解決
6、然后簡單講了下用 epoll 提高效率,并沒有深入了問
7、HTTP 協(xié)議
三面 2019/10/11 來自于比特論壇
1、主要是鎖的問題
2、線程安全的問題
3、項目
4、100G 文件,多 ip 進行排序
5、問了能不能實習,學校的課程
6、HTTPS 的實現(xiàn)
第三篇
一面 2019/10/14 來自于比特論壇
1、自我介紹
2、你對虛函數(shù)是怎么理解的?
3、詳細講 static 關鍵字吧
4、引用和指針有什么區(qū)別?
5、new 和 malloc 有什么區(qū)別?
6、知道哪些 C++11 的新特性?講一下,說一說右值引用的應用場景?
7、C++是怎么做動態(tà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)缺點?
17、什么時候要使用多線程編程?
18、多線程編程里面,你怎么理解互斥鎖和自旋鎖? 19、用 mysql 嗎?
20、你認為在搭建一個 web 服務的過程中,有哪些情況會影響到 web 服務的性能? 21、怎么提升服務器的并發(fā)性能? 22、剛提到線程池,被問線程池內部的線程一般是多少個? 23、倘若你用了線程池,但是高峰時期流量就是太高了,服務器承受不住,你該怎么辦? 24、倘若就算這樣還是不行,怎么辦? 25、倘若你就只有一臺服務器,沒有更多的硬件資源了,怎么辦? 26、倘若你的操作無法用原子性,一個線程不斷的生產任務,放到隊列中,另一個從隊列
中拿取請求,如何做到無鎖編程? 27、你平常有什么興趣愛好嗎? 28、最近有看什么技術書籍嗎? 29,你寫的兩個項目,搜索引擎和在線畫圖板,是你的課程設計嗎?
30、你的 httpserver 是怎么搭建的? 31、我這邊基本問的差不多了,你有什么要問的嗎?
二面 2019/10/14 來自于比特論壇
1、自我介紹
2、C 與 C++的區(qū)別
3、平常有 C 和 C++混合編程嗎,如果在 C++當中要調用 C 的函數(shù),要怎么做? 4、講講 extern 關鍵字,為什么要用?講重載的原理和使用? 5、知道覆蓋吧,講講實現(xiàn)和使用? 6、講講你知道的 C++11 新特性
7、我看你對 C++動態(tài)內存管理有一定了解,你來談一下 C++的內存布局吧
8、一個未初始化的全局變量存在那個區(qū)?臨時變量存在那個區(qū)? 9、new 出來的空間在哪個區(qū)、為什么已經有了 malloc 和 free,為什么還要用
new/delete?
10、談一談數(shù)據(jù)結構,挑一種你擅長的說一下
11、你這兩個項目什么時候寫的?你這個 http 服務器的功能是什么?socket 這部分 api
你是怎么用的?
12、有沒有看過其他常用的 http 服務器?
13、有對你這個服務器進行測試過嗎?怎么測試量級的
14、你說熟悉多路復用模型,有沒有在項目中用到?
15、數(shù)據(jù)庫會嗎?
16、講講搜索引擎項目中的索引是怎么構建的?
17、那你按照這樣來構建索引,我搜的關鍵字中倘若有很多無意義詞(比如 is,a 等),怎
么設計能保證我們搜的結果能符合預期?
18、搜索引擎是否有測試過?
19、我看搜索引擎中大量使用了 vector,談一下 vector 的好處?
20、怎么 vector 規(guī)避頻繁擴容?
21、sort 的排序是什么排序?
22、講一下 https 和 http 的區(qū)別
23、講一下 http2、0 的改進點
24、搜索引擎如果要搞一個聯(lián)想功能,你覺得該怎么實現(xiàn)?
25、問問題吧
第四篇
一面 2019/10/22 來自于比特論壇
1、自我介紹
2、談談我對服務器的理解
3、對 reactor 與 proactor 理解
4、講講項目中服務器構架
5、對同步異步的理解
6、對 stl 的理解,stl 內存分配的理解,為什么要有空間配置器?
7、stl 與面向對象有什么聯(lián)系?
8、面向對象有什么優(yōu)點?為什么要有面向對象?
9、進程地址空間分布?為什么要有?如何管理?系統(tǒng)調用?
10、數(shù)據(jù)庫索引結構?為什么要用 B+樹?
11、你有什么問題問我?
12、談談對數(shù)據(jù)安全的理解?加密?MD5?
二面 2019/10/22 來自于比特論壇
1、堆和??臻g
2、netstat 和 ps 兩個命令
3、進程和線程
4、父進程創(chuàng)建了兩個進程,其中一個子進程除 0 錯誤,另外兩個進程的情況? 5、上題進程換成線程
6、線程??臻g給了一個超過棧內存的變量,會發(fā)生什么? 7、進程間通信
8、進程和線程的優(yōu)劣,進程和線程一般開辟幾個? 9、http 協(xié)議,報頭,狀態(tài)
10、服務端客戶端模型和瀏覽器服務端模型做對比,分析其優(yōu)劣,安全性
11、tcp 和 udp 的對比
12、發(fā)送報文的具體函數(shù)調用?
13、主要就這些方面,考察底層原理,有的題需要說出自己的看法
第五篇
一面 2019/10/16 來自于比特論壇
1、什么是三次揮手?為什么要三次揮手?為什么不是兩次和四次?
2、什么是四次握手?為什么要四次握手?有沒有抓包抓過四次握手?講了一下什么情況
有三次握手?
3、雙方發(fā)送 SYN,為什么要發(fā)送 SYN? 4、四次揮手里 FIN_WAIT2 狀態(tài)一直持續(xù)怎么辦?
5、問了項目
6、從項目扯到了 epoll,講了一下 epoll 和 select 的區(qū)別,講了一下水平觸發(fā)和邊緣觸發(fā)
7、然后講了一下 strcpy 怎么實現(xiàn)的,然后 strcpy 內部有沒有動態(tài)內存管理
8、知不知道雙向鏈表,快速闡述一下雙向鏈表怎么實現(xiàn)的
9、再講一下項目,問到那個線程創(chuàng)建進程,對 fork 的優(yōu)化,有沒有優(yōu)化
10、都接觸過哪些開源庫
11、平時碰到問題是怎么解決的?
二面 2019/10/16 來自于比特論壇
1、講項目,懟著項目一直問。你為什么知道你的服務器性能瓶頸在哪里? 2、cpu 給進程分配哪些資源? 3、桶查找
4、怎么確定你的哈希表大??? 5、字符串哈希算法
6、文件寫到磁盤的流程
7、內存頁大???磁盤塊大??? 8、職業(yè)規(guī)劃
9、創(chuàng)建一個線程占用的內存是多少?
10、一個系統(tǒng)中能創(chuàng)建多少進程?
11、一個進程可以創(chuàng)建多少個線程?
第六篇
一面 2019/10/14 來自于比特論壇
1、自我介紹
2、看你簡歷上有寫智能指針,你能給我簡單描述一下嗎?
3、C 文件的編譯過程?
4、鏈接有哪些鏈接方式?
5、指針數(shù)組、數(shù)組指針的 sizeof 求值分別是什么?
6、你對模板有了解嗎? 7、你了解運行時多態(tài)的實現(xiàn)過程嗎?
8、你了解 STL 嗎?map 的底層實現(xiàn)?map 中查找一個元素的時間復雜度?hash 沖突的
解決方法?
9、排序算法
10、core 文件的調試方式?gdb 的使用方法你了解過哪些?要是你的代碼 core 掉,你一
般會怎樣調試?
11、多進程間通信的方式?你認為哪一種的效率最高?
12、那多線程間通信有哪些方法?線程安全問題如何解決?如果想讓數(shù)據(jù)屬于線程私有應
該怎樣實現(xiàn)?有了解過 tls 的底層實現(xiàn)嗎?
13、TCP/UDP 可以進行廣播嗎?UDP 可靠嗎?MTU/MSS 的大???
14、unique_lock 和 lock_groud 的區(qū)別?我看到你的項目中有個 bug?我看到你的項目
中用的 send 和 recv,怎樣設置為非阻塞?非阻塞如果沒有數(shù)據(jù)可讀返回值是什么?
15、三次握手和四次揮手?
16、有沒有了解過 malloc 的底層?
17、查看服務器連接的工具?你有抓過數(shù)據(jù)包嗎?
18、你有了解過開源的東西嗎?你有了解過協(xié)程嗎?分布式?阿帕奇?
19、算法題:K 行,每一行有無窮多的數(shù),每一行都是由大到小排列,從這 K 行中找前 N
個最大的數(shù)
20、你要問的問題
二面 2019/9/2 來自于比特論壇
1、自我介紹
2、主要聊項目
3、算法題:在無數(shù)個無序數(shù)中找到中位數(shù)
4、你問的問題
三面 2019/9/5 來自于比特論壇
1、問了學校相關專業(yè)課
2、算法題:一個文件中有 100 億個 int 數(shù)據(jù),用最短時間找到最大的 1000 個 3、進程和線程的區(qū)別
4、線程池的實現(xiàn)方法?有什么好處?
5、vector 和 list 的區(qū)別,push_back 如何實現(xiàn)?vector 的擴容方式?為什么擴容有這樣
差異?
6、vector、list、map、set 有什么區(qū)別?分別的使用場景?
7、Linux 下進程間通信方式?管道、共享內存什么場景下會用?兩個進程不在同一個機器
如何通信?
8、有用過 socket 嗎?UDP 不可靠為啥還要存在?
9、微信聊天用的是 UDP 還是 TCP?
10、Linux 下查看網絡端口?
11、Linux 下查看負載情況?
12、臨時變量 int arr[]可以達到的最大大小
13、一個進程最大能占用多大的內存空間?
14、你考慮讀研究生嗎?你家是哪里的?
第七篇
一面 2019/9/12 來自于比特論壇
1、虛擬地址空間和物理內存
2、哈希沖突的解決方案(開散列,閉散列,多階哈希),一致性哈希
3、編譯過程
二面 2019/9/17 來自于比特論壇
1、主要問項目,他選了我第一個項目,HTTP 文件共享服務器
2、輸入域名后發(fā)生了什么?
3、多線程安全問題,線程池,鎖
4、斷點續(xù)傳
5、這個項目在一臺主機上跑是沒有問題的,那如果是多臺主機,就會有問題,怎么解決
6、然后簡單講了下用 epoll 提高效率
7、HTTP 協(xié)議
第八篇
一面 2019/9/17 來自于比特論壇
1、說一下 HTTP 服務器
2、你寫的是什么樣的服務器呢,是單進程多線程還是多進程還是線程池,講解一下
3、線程池如何實現(xiàn)的?
4、那所有線程之間有什么是共享的嗎?
5、線程之間同步和互斥問題
6、你在寫這個服務器的時候遇到過什么問題嗎?怎樣處理的?
7、高并發(fā)的情況怎樣處理呢?
8、select 和 eopll? 9、說一下搜索引擎項目
10、你的索引如何構建的
11、你的正排索引和倒排索引都是在堆上建立的,進程退出就沒有了,那有什么辦法保存
下來嗎?
12、說一下共享內存
13、搜索引擎項目用到的服務器是自己寫的還是其他的什么
14、看過什么書?給你推薦一本書《Unix 環(huán)境高級編程》
15、玩過什么游戲,喜歡玩游戲嗎?
二面 2019/9/24 來自于比特論壇
1、我們是做游戲開發(fā)的,之前有做過關于游戲這方面的項目嗎?
2、那你說一下你的服務器
3、你這個是用了 cgi,那你是怎么實現(xiàn)的?
4、如果我不用 fork 加 exec 那怎樣去實現(xiàn)
5、你玩過王者榮耀吧,我在手機上按下一個技能會怎么樣?
6、既然你說到了 udp,那你說,服務器是會把你按下的這個技能,所返回的 udp 這樣的
數(shù)據(jù)怎樣處理,在客戶端上
7、技能釋放之后,會在你的客戶端上顯示出來,也會在其他玩家那里顯示,我服務器要
怎樣緩存?
8、你說的是有局部緩存還有一些全局的緩存,那么它們分別都是怎樣處理的呢?
9、你玩過 mmo 的游戲嗎?
10、那你知道,假如說我現(xiàn)在有很多個人大約是幾千人幾萬人在一起玩,我的服務器會怎
樣處理?
11、你說的這種,并不是我的意思,假如說,現(xiàn)在有一張地圖,我有幾萬人同時連接進
來,那你說我的服務器或者客戶端怎樣處理?
12、那我再問你,假如我現(xiàn)在所有的人都聚集到了一起,在一個主城里,那此時我又改怎
樣處理?
13、那我再問你一些編程中的知識吧
14、析構函數(shù)什么時候要用 virtual
15、Dynamic_cast 用過嗎
16、那我問你一個很深入的問題,怎樣實現(xiàn)一個 dynamic_cast,你就只說是指針的情況
吧,答不出來也沒關系
17、我看你學過很多數(shù)據(jù)結構,那你知道 map 和 unordered_map 嗎?
18、紅黑樹和哈希說一下
19、紅黑樹和哈希他們增刪查改的時間復雜度
20、假如說,我現(xiàn)在有很多數(shù)據(jù),是只讀的,我要把他們存起來,那你有沒有什么辦法可
以改進一下這個 map 和 unordered_map,效率更高一點
21、Perfect hashing
22、那再比如說,我現(xià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、服務端和客戶端的 socket 流程
12、TCP 滑動窗口
13、自旋鎖和互斥鎖,分別應用于什么場景
14、線程數(shù)量有什么講究
二面 2019/10/15 來自于比特論壇
1、HTTPS 和 HTTP 的區(qū)別
2、設計一個帶論文查重的方式
3、設計一個類似 QQ 同步助手的云同步通訊錄
4、設計一個數(shù)據(jù)庫存儲視頻
5、設計 QQ 后面通訊的邏輯
6、設計一個 vector
第十篇
一面 2019/6/5 來自于比特論壇
1、什么是三次揮手?為什么要三次揮手?為什么不是兩次和四次?
2、什么是四次握手?為什么要四次握手?有沒有抓包抓過四次握手?講了一下什么情況
有三次握手?
3、雙方發(fā)送 SYN,為什么要發(fā)送 SYN? 4、四次揮手里 FIN_WAIT2 狀態(tài)一直持續(xù)怎么辦?
5、問了項目
6、從項目扯到了 epoll,講了一下 epoll 和 select 的區(qū)別,講了一下水平觸發(fā)和邊緣觸發(fā)
7、然后講了一下 strcpy 怎么實現(xiàn)的,然后 strcpy 內部有沒有動態(tài)內存管理
8、知不知道雙向鏈表,快速闡述一下雙向鏈表怎么實現(xiàn)的
9、再講一下項目,問到那個線程創(chuàng)建進程,對 fork 的優(yōu)化,有沒有優(yōu)化
10、都接觸過哪些開源庫
11、平時碰到問題是怎么解決的?
二面 2019/6/11 來自于比特論壇
1、講項目,懟著項目一直問。你為什么知道你的服務器性能瓶頸在哪里? 2、cpu 給進程分配哪些資源? 3、桶查找
4、怎么確定你的哈希表大?。?5、字符串哈希算法
6、文件寫到磁盤的流程
7、內存頁大小?磁盤塊大??? 8、職業(yè)規(guī)劃
9、創(chuàng)建一個線程占用的內存是多少?
10、一個系統(tǒng)中能創(chuàng)建多少進程?
11、一個進程可以創(chuàng)建多少個線程?
求職必備刷題官網:https://github.com/bennyrhys/interview
【更多互聯(lián)網公司筆試面試真題請關注“讓我遇見相似的靈魂”公眾號】

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