云服務(wù)器到期了港令,這是備份的文章焰望。
今天看了幾篇關(guān)于后臺開發(fā)的面試經(jīng)驗貼陨帆,感受到了來自面試官
的滿滿惡意曲秉。
下面是關(guān)于后臺開發(fā)會被問到的問題總結(jié),唉疲牵,想短時間全部搞定得一天用25個小時才夠吧承二?天哪
主要考察領(lǐng)域:C++、Linux纲爸、算法亥鸠、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò)編程识啦、海量數(shù)據(jù)處理负蚊、數(shù)據(jù)庫。
C++:
析構(gòu)函數(shù)原理以及步驟颓哮;
類對象的內(nèi)存存儲形式家妆;
STL各種容器的特點和實現(xiàn)方式;
c++進程內(nèi)存空間分布(注意棧從高道低分配冕茅,堆從低到高分配)伤极;
虛函數(shù)以及虛函數(shù)的作用(簡單來說是多態(tài)腰鬼,本質(zhì)是為了封裝)(哪些是編譯時確定、哪些是運行時確定)塑荒;
makefile編譯熄赡;
gdb調(diào)試;
如何定位內(nèi)存泄露齿税;
動態(tài)鏈接和靜態(tài)鏈接的區(qū)別彼硫;
32位系統(tǒng)一個進程最多多少堆內(nèi)存;
寫一個c程序辨別系統(tǒng)是64位 or 32位凌箕;
寫一個c程序辨別系統(tǒng)是大端 or 小端字節(jié)序拧篮;
宏定義和展開;
位操作牵舱;
內(nèi)存分配串绩;
哪些庫函數(shù)屬于高危函數(shù)?為什么芜壁?(strcpy等等)礁凡;
一個String類的完整實現(xiàn)必須很快速寫出來(注意:賦值構(gòu)造,operator=是關(guān)鍵);
sizeof一個類求大小,變量慧妄、對象顷牌、指針、類等等;
指針和引用的區(qū)別;
多重類構(gòu)造和析構(gòu)的順序(對稱);
stl各容器的實現(xiàn)原理(必考);
extern c 是干啥的(必須將編譯器的函數(shù)名修飾的機制解答的很透徹);
volatile是干啥用的塞淹,(必須將cpu的寄存器緩存機制回答的很透徹);
static const等等的用法;
Linux:
linux中各種I/O模型原理——select和epoll窟蓝;
阻塞和非阻塞I/O區(qū)別;
linux系統(tǒng)文件機制饱普;
多進程同步方式运挫;
使用過哪些進程間通訊機制,并詳細說明(重點)套耕;
linux系統(tǒng)的各類異步機制谁帕;
信號:列出常見的信號,信號怎么處理箍铲?
i++是否原子操作雇卷?
exit() _exit()的區(qū)別鬓椭?
如何實現(xiàn)守護進程颠猴?
linux的內(nèi)存管理機制是什么?
linux的任務(wù)調(diào)度機制是什么小染?
系統(tǒng)如何將一個信號通知到進程翘瓮?
什么是死鎖?如何避免死鎖裤翩?
共享內(nèi)存的使用實現(xiàn)原理资盅;
多線程和多進程的區(qū)別(從cpu調(diào)度调榄,上下文切換,數(shù)據(jù)共享呵扛,多核cup利用率每庆,資源占用,等等各方面回答今穿。哪些東西是一個線程私有的缤灵?答案中必須包含寄存器);
標準庫函數(shù)和系統(tǒng)調(diào)用的區(qū)別蓝晒?
算法:
設(shè)計一個算法將兩個字符串合并按字母排序:遍歷一次統(tǒng)計各字符出現(xiàn)次數(shù)腮出,直接按字母順序輸出,O(n)芝薇。
數(shù)據(jù)結(jié)構(gòu):
排序胚嘲、查找、二叉樹洛二、圖馋劈;
哈希和B樹各自特點;
鏈表歸并排序晾嘶;
大根堆的實現(xiàn)侣滩,快排(如何避免最糟糕的狀態(tài)?)变擒,bitmap的運用;
hash(例如為什么一般hashtable的桶數(shù)會取一個素數(shù)君珠?如何有效避免hash結(jié)果值的碰撞);
網(wǎng)絡(luò):
netstat tcpdump ipcs ipcrm命令;
cpu 內(nèi)存 硬盤 等等與系統(tǒng)性能調(diào)試相關(guān)的命令娇斑;
設(shè)置修改權(quán)限chmod;
tcp網(wǎng)絡(luò)狀態(tài)查看;
各進程狀態(tài);
抓包tcpdump;
awk sed了解策添;
tcp與udp的區(qū)別;
udp調(diào)用connect有什么作用?
tcp連接中時序圖毫缆,狀態(tài)圖唯竹,必須非常非常熟練;
socket服務(wù)端的實現(xiàn),select和epoll的區(qū)別(必問);
epoll哪些觸發(fā)模式苦丁,有啥區(qū)別浸颓?(詳盡的解釋水平觸發(fā)和邊緣觸發(fā)的區(qū)別,以及邊緣觸發(fā)在編程中要做哪些更多的確認)旺拉;
大規(guī)模連接上來产上,并發(fā)模型怎么設(shè)計?
tcp結(jié)束連接怎么握手,time_wait狀態(tài)是什么,為什么會有time_wait狀態(tài)蛾狗?哪一方會有time_wait狀態(tài)晋涣,如何避免?
time_wait狀態(tài)占用資源(必須回答的詳細)?
tcp頭多少字節(jié)?哪些字段?(必問)
什么是滑動窗口?(必問)
connect會阻塞沉桌,怎么解決?(必考必問谢鹊,提示:設(shè)置非阻塞算吩,返回之后用select檢測狀態(tài));
如果select返回可讀佃扼,結(jié)果只讀到0字節(jié)偎巢,什么情況?
keepalive 是什么東東兼耀?如何使用艘狭?
列舉你所知道的tcp選項,并說明其作用翠订。
socket什么情況下可讀巢音?
海量數(shù)據(jù)處理:
1、請統(tǒng)計100W個不等長字符串中各字符串的出現(xiàn)次數(shù):建立哈希表尽超,遍歷一遍讓等長的字符串映射到同一位置官撼,里面可以再哈希鏈表。有兩種情況:一種哈希鏈表中沒出現(xiàn)過就存儲該字符串并將對應(yīng)的計數(shù)器設(shè)為0似谁,有出現(xiàn)過的就+1傲绣。遍歷一遍就完成統(tǒng)計。然后遍歷哈希鏈表的計數(shù)器輸出就行了巩踏。
2秃诵、設(shè)計數(shù)據(jù)結(jié)構(gòu)可以快速返回0~10億中哪些數(shù)出現(xiàn)了or沒出現(xiàn)。這題和一面的一樣塞琼,而且更簡單菠净,125M的bitmap就夠了。
3彪杉、一個每秒百萬級訪問量的互聯(lián)網(wǎng)服務(wù)器毅往,每個訪問都有數(shù)據(jù)計算和I/O操作,如果讓你設(shè)計派近,你怎么設(shè)計攀唯?
數(shù)據(jù)庫:
sql;
服務(wù)器數(shù)據(jù)庫大規(guī)模數(shù)據(jù)怎么設(shè)計;
db各種性能指標;