一面:
1:自我介紹
2:手寫代碼:去除c++中的注釋
3:詳細(xì)描述網(wǎng)絡(luò)庫的架構(gòu)
4:服務(wù)端編程需要用到的函數(shù),詳細(xì)解釋
5:解釋time_wait狀態(tài),原因,解決方法
6:解釋MSL
7:解釋服務(wù)端哪些函數(shù)需要阻塞,如何實現(xiàn)非阻塞
8:解釋poll和epoll的區(qū)別,epoll的底層原理
9:簡單描述紅黑樹
10:簡單解釋中斷機制
11:解釋讀寫緩沖,為什么這么設(shè)計
12:解釋socket緩沖,滑動窗口協(xié)議
13:解釋backlog,為什么有這個限制
14:線程池的簡單描述
15:了解c++11中哪些新特性
16:左值引用和右值引用
17:生產(chǎn)者消費者模型,如何實現(xiàn)多線程訪問
18:c++中如何實現(xiàn)信號量
19:提問環(huán)節(jié)
20:再解釋論文中的一個算法吧,有加分
二面:
1:自我介紹
2:手寫代碼:之字形打印二叉樹
3:解釋網(wǎng)絡(luò)庫
4:解釋消息隊列,pub-sub系統(tǒng)以及RPC
5:解釋poll和epoll的區(qū)別,epoll的底層架構(gòu)
6:解釋紅黑樹
7:解釋hash_map的底層實現(xiàn)
8:解釋線程池的實現(xiàn)
9:聊聊你的消息如何進行序列化和反序列化,如何判斷大端小端
10:你的網(wǎng)絡(luò)庫和現(xiàn)在的網(wǎng)絡(luò)庫相比,有哪些沒有考慮的,如何解決
11:最近有在看哪些技術(shù)書籍
12:mmap的原理,為什么比read,write要快
13:fwrite會經(jīng)歷哪些過程
14:解釋分布式一致性協(xié)議,兩階段提交,raft以及其與paxos的區(qū)別
15:提問環(huán)節(jié)
三面:
1:自我介紹
2:解釋CAP
3:解釋分布式一致性協(xié)議,raft
4:設(shè)計題:設(shè)計一個后端系統(tǒng)用于用于查詢新聞,其中數(shù)據(jù)庫最多只能承受1w的訪問量:
初步設(shè)計:連接路由+分布式緩存+超時機制+消息隊列
5:超時機制如何更新新聞,新聞需要存儲哪些東西,如何設(shè)計key:
優(yōu)化:超時機制改為push
6:如何進行路由,路由表如何查找:
優(yōu)化:map,紅黑樹,時間戳
7:路由會有單點問題,如何解決:
優(yōu)化:一致性hash,分布式hash表
8:分布式hash和普通hash有什么區(qū)別,優(yōu)勢是什么
9:再談?wù)劤瑫r機制,詳細(xì)設(shè)計一下:
優(yōu)化:類似LRU這樣的緩存更新
10:如果每條新聞的超時時間不同呢:
優(yōu)化:優(yōu)先級隊列
11:如何將這個優(yōu)先級隊列分布式化
12:優(yōu)先級隊列的原理
13:描述一下堆的插入和刪除
14:網(wǎng)絡(luò)庫的設(shè)計思路,如何一步步想到這些的
15:未來對這個庫優(yōu)化思路
16:技術(shù)規(guī)劃是什么,最近在看哪些技術(shù)書籍
17:了解哪些開源框架,了解頭條的技術(shù)架構(gòu)
18:想在頭條里從事什么,提問環(huán)節(jié)
HR面:
很輕松,簡單的聊了幾句