百度面經(C++)

百度面經(C++)

 https://blog.csdn.net/u012658346/article/details/52671148

內推,二面跪
一面:
select & epoll兩種機制的具體實現
可以用兩個epoll監聽同一個描述符嗎,有事件發生時,怎麼工作
hash怎麼解決衝突
一致性hash
路由表的網段怎麼存儲、查找
segment fault怎麼用gdb調試,兩個函數循環調用會怎樣
static的使用場景,在一個cpp中定義,在另一個cpp可以訪問嗎?static變量存放在哪裏
time_wait和close_wait
服務器和客戶端都是怎麼工作的(從創建socket到工作的流程)
listen的兩個參數分別是什麼
當併發量很大時,可以進行哪些處理解決這個問題
講一下redis的使用場景、工作原理、與競品之間的區別

二面:
介紹項目,tun設備和tap設備的區別(項目中用到了),ping探測的週期,週期長短對結果分別有什麼影響(項目中用到了)
select和epoll
如果select在監聽的時候,描述符對端被關閉了會發生什麼
send、recv都是阻塞的,怎麼控制在一定時間內完成send、recv,如果超時就不執行,怎麼跟select聯繫起來
socket關閉時,兩端的狀態變化
TIME_WAIT的作用,TIME_WAIT的時間可以小於2MSL嗎,如果小於會有什麼影響
epoll底層使用了紅黑樹,說一下紅黑樹的特點和優點
printf的可變參數是怎麼實現的,如果參數個數不匹配會發生什麼,比如字符串需要3個參數,但是隻傳了2個或者4個分別會發生什麼
函數調用棧裏面存儲的是什麼
malloc的返回值,還有其他內存分配函數嗎,有什麼區別
free怎麼釋放
設計一個內存管理方案

校招,三面跪
一面:
上來先寫一個函數,字符串轉換成整數,不能調用庫函數
介紹項目
堆和棧的區別
使用指針,怎麼儘量避免segment fault
linux內存管理(先說了slab,面試官說他不是問這個,然後把進程中內存分配的流程說了一下,面試官還是說他想問的不是這個,他說他想問的是段頁式內存管理,好尷尬,,)
tcp、udp的區別
vector和鏈表的區別
struct和class的區別
java和C++的區別

二面:
介紹項目
gdb
select和epoll
token口令的實現原理,產生口令的客戶端和服務端是否需要通信,具體實現接口(輸入和輸出)
緩存系統有兩個接口:setKey(key,value,expires);getKey(key),問過期鍵的刪除方法,並比較各種方法
服務端A和服務端B之間共享緩存
搶票或者秒殺時,如果用戶量很大,服務端可能會崩潰,服務端可以有什麼辦法解決

三面:
gdb調試core文件
寫函數atoi,並設計測試用例
剩下的都是非技術開放性問題,然而踩了無數坑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章