一、C/C++
?
const
多態(tài)
什么類(lèi)不能被繼承
二、網(wǎng)絡(luò)
?
網(wǎng)絡(luò)的字節(jié)序
網(wǎng)絡(luò)知識(shí) TCP三次握手 各種細(xì)節(jié) timewait狀態(tài)
TCP與UDP的區(qū)別 概念 適用范圍
TCP四次揮手講一下過(guò)程,最后一次ack如果客戶端沒(méi)收到怎么辦,為什么揮手不能只有三次,為什么time_wait。
對(duì)于socket編程,accept方法是干什么的,在三次握手中屬于第幾次,可以猜一下,為什么這么覺(jué)得。
tcp怎么保證有序傳輸?shù)?,講下tcp的快速重傳和擁塞機(jī)制,知不知道time_wait狀態(tài),這個(gè)狀態(tài)出現(xiàn)在什么地方,有什么用?
知道udp是不可靠的傳輸,如果你來(lái)設(shè)計(jì)一個(gè)基于udp差不多可靠的算法,怎么設(shè)計(jì)?
http與https有啥區(qū)別?說(shuō)下https解決了什么問(wèn)題,怎么解決的?說(shuō)下https的握手過(guò)程。
tcp 粘包半包問(wèn)題怎么處理?
keepalive 是什么東東?如何使用?
列舉你所知道的tcp選項(xiàng),并說(shuō)明其作用。
socket什么情況下可讀?
nginx的epoll模型的介紹以及io多路復(fù)用模型
SYN Flood攻擊
流量控制,擁塞控制
TCP和UDP區(qū)別,TCP如何保證可靠性,對(duì)方是否存活(心跳檢測(cè))
tcpdump抓包,如何分析數(shù)據(jù)包
tcp如何設(shè)定超時(shí)時(shí)間
基于socket網(wǎng)絡(luò)編程和tcp/ip協(xié)議棧,講講從客戶端send()開(kāi)始,到服務(wù)端recv()結(jié)束的過(guò)程,越細(xì)越好
http報(bào)文格式
http1.1與http1.0區(qū)別,http2.0特性
http3了解嗎
http1.1長(zhǎng)連接時(shí),發(fā)送一個(gè)請(qǐng)求阻塞了,返回什么狀態(tài)碼?
udp調(diào)用connect有什么作用?
三、操作系統(tǒng)
?
進(jìn)程和線程-分別的概念 區(qū)別 適用范圍 它們分別的通訊方式 不同通訊方式的區(qū)別優(yōu)缺點(diǎn)
僵尸進(jìn)程
死鎖是怎么產(chǎn)生的
CPU的執(zhí)行方式
代碼中遇到進(jìn)程阻塞,進(jìn)程僵死,內(nèi)存泄漏等情況怎么排查。
有沒(méi)有了解過(guò)協(xié)程?說(shuō)下協(xié)程和線程的區(qū)別?
堆是線程共有還是私有,堆是進(jìn)程共有還是私有,棧呢
了解過(guò)協(xié)程嗎
共享內(nèi)存的使用實(shí)現(xiàn)原理
c++進(jìn)程內(nèi)存空間分布
ELF是什么?其大小與程序中全局變量的是否初始化有什么關(guān)系
使用過(guò)哪些進(jìn)程間通訊機(jī)制,并詳細(xì)說(shuō)明
多線程和多進(jìn)程的區(qū)別(重點(diǎn) 面試官最最關(guān)心的一個(gè)問(wèn)題,必須從cpu調(diào)度,上下文切換,數(shù)據(jù)共享,多核cup利用率,資源占用,等等各方面回答,然后有一個(gè)問(wèn)題必須會(huì)被問(wèn)到:哪些東西是一個(gè)線程私有的?答案中必須包含寄存器,否則悲催)
信號(hào):列出常見(jiàn)的信號(hào),信號(hào)怎么處理?
i++是否原子操作?并解釋為什么???????
說(shuō)出你所知道的各類(lèi)linux系統(tǒng)的各類(lèi)同步機(jī)制(重點(diǎn)),什么是死鎖?如何避免死鎖(每個(gè)技術(shù)面試官必問(wèn))
列舉說(shuō)明linux系統(tǒng)的各類(lèi)異步機(jī)制
exit() _exit()的區(qū)別?
如何實(shí)現(xiàn)守護(hù)進(jìn)程?
linux的內(nèi)存管理機(jī)制是什么?
linux的任務(wù)調(diào)度機(jī)制是什么?
標(biāo)準(zhǔn)庫(kù)函數(shù)和系統(tǒng)調(diào)用的區(qū)別?
系統(tǒng)如何將一個(gè)信號(hào)通知到進(jìn)程?
四、Linux系統(tǒng)
?
linux的各種命令 給你場(chǎng)景讓你解決
Linux了解么,查看進(jìn)程狀態(tài)ps,查看cpu狀態(tài) top。查看占用端口的進(jìn)程號(hào)netstat grep
Linux的cpu 100怎么排查,top jstack,日志,gui工具
Linux操作系統(tǒng)了解么
怎么查看CPU負(fù)載,怎么查看一個(gè)客戶下有多少進(jìn)程
Linux內(nèi)核是怎么實(shí)現(xiàn)定時(shí)器的
gdb怎么查看某個(gè)線程
core dump有沒(méi)有遇到過(guò),gdb怎么調(diào)試
linux如何設(shè)置core文件生成
linux如何設(shè)置開(kāi)機(jī)自啟動(dòng)
linux用過(guò)哪些命令、工具
用過(guò)哪些工具檢測(cè)程序性能,如何定位性能瓶頸的地方
netstat tcpdump ipcs ipcrm
cpu 內(nèi)存 硬盤(pán) 等等與系統(tǒng)性能調(diào)試相關(guān)的命令必須熟練掌握,設(shè)置修改權(quán)限 tcp網(wǎng)絡(luò)狀態(tài)查看 各進(jìn)程狀態(tài) 抓包相關(guān)等相關(guān)命令 必須熟練掌握
awk sed需掌握
gdb調(diào)試相關(guān)的經(jīng)驗(yàn),會(huì)被問(wèn)到
五、MongoDB
關(guān)于大數(shù)據(jù)存儲(chǔ)的(mongodb hadoop)各種原理 mongodb又問(wèn)的深入很多
六、Redis
Redis內(nèi)存數(shù)據(jù)庫(kù)的內(nèi)存指的是共享內(nèi)存么
Redis的持久化方式
Redis和MySQL有什么區(qū)別,用于什么場(chǎng)景。
redis有沒(méi)有用過(guò),常用的數(shù)據(jù)結(jié)構(gòu)以及在業(yè)務(wù)中使用的場(chǎng)景,redis的hash怎么實(shí)現(xiàn)的
問(wèn)了下緩存更新的模式,以及會(huì)出現(xiàn)的問(wèn)題和應(yīng)對(duì)思路?
redis的sentinel上投票選舉的問(wèn)題 raft算法
redis單線程結(jié)構(gòu)有什么優(yōu)勢(shì)?有什么問(wèn)題? 主要優(yōu)勢(shì)單線程,避免線程切換產(chǎn)生靜態(tài)消耗,缺點(diǎn)是容易阻塞,雖然redis使用io復(fù)用epoll和輸入緩沖區(qū)把命令按照隊(duì)列先進(jìn)先出輸入等等
你覺(jué)得針對(duì)redis這些缺點(diǎn)那些命令在redis上不可使用? 比如keys、hgetall等等這些命令 建議用scan等等 這方面闡述
你覺(jué)得為什么項(xiàng)目中沒(méi)有用mysql而用了es,redis在這里到底起到了什么作用?因?yàn)榧軜?gòu)上這里理解不清楚,最后回答自己都覺(jué)得有漏洞了
你覺(jué)得redis什么算有用? 有用? 是說(shuō)存進(jìn)去了還是說(shuō)命中緩存?最后把緩存命中率是什么說(shuō)了一遍
你們這邊redis集群是怎么樣子的
平常redis用的多的數(shù)據(jù)結(jié)構(gòu)是什么,跳表實(shí)現(xiàn),怎么維護(hù)索引,當(dāng)時(shí)我說(shuō)是一個(gè)簡(jiǎn)單的二分,手寫(xiě)二分算法,并且時(shí)間復(fù)雜度是怎么計(jì)算出來(lái)的 (2的k次方等于n k等于logn)
?
七、MySQL
你們后端用什么數(shù)據(jù)庫(kù)做持久化的?有沒(méi)有用到分庫(kù)分表,怎么做的?
索引的常見(jiàn)實(shí)現(xiàn)方式有哪些,有哪些區(qū)別?MySQL的存儲(chǔ)引擎有哪些,有哪些區(qū)別?InnoDB使用的是什么方式實(shí)現(xiàn)索引,怎么實(shí)現(xiàn)的?說(shuō)下聚簇索引和非聚簇索引的區(qū)別?
mysql查詢(xún)優(yōu)化
MySQL的索引,B+樹(shù)性質(zhì)。
B+樹(shù)和B樹(shù),聯(lián)合索引等原理
mysql的悲觀鎖和樂(lè)觀鎖區(qū)別和應(yīng)用,ABA問(wèn)題的解決
項(xiàng)目性能瓶頸在哪,數(shù)據(jù)庫(kù)表怎么設(shè)計(jì)
假設(shè)項(xiàng)目的性能瓶頸出現(xiàn)在寫(xiě)數(shù)據(jù)庫(kù)上,應(yīng)該怎么解決峰值時(shí)寫(xiě)速度慢的問(wèn)題
假設(shè)數(shù)據(jù)庫(kù)需要保存一年的數(shù)據(jù),每天一百萬(wàn)條數(shù)據(jù),一張表最多存一千萬(wàn)條數(shù)據(jù),應(yīng)該怎么設(shè)計(jì)表
數(shù)據(jù)庫(kù)自增索引。100臺(tái)服務(wù)器,每臺(tái)服務(wù)器有若干個(gè)用戶,用戶有id,同時(shí)會(huì)有新用戶加入。實(shí)現(xiàn)id自增,統(tǒng)計(jì)用戶個(gè)數(shù)?不能重復(fù),好像是這樣的。
mysql,會(huì)考sql語(yǔ)言,服務(wù)器數(shù)據(jù)庫(kù)大規(guī)模數(shù)據(jù)怎么設(shè)計(jì),db各種性能指標(biāo)
?
八、算法
堆棧
有序數(shù)組排序,二分,復(fù)雜度
常見(jiàn)排序算法,說(shuō)下快排過(guò)程,時(shí)間復(fù)雜度
有N個(gè)節(jié)點(diǎn)的滿二叉樹(shù)的高度。1+logN
如何實(shí)現(xiàn)關(guān)鍵字輸入提示,使用字典樹(shù),復(fù)雜度多少,有沒(méi)有其他方案,答哈希,如果是中文呢,分詞后建立字典樹(shù)?
hashmap的實(shí)現(xiàn)講一下吧,講的很詳細(xì)了。講一下紅黑樹(shù)的結(jié)構(gòu),查詢(xún)性能等。
快排的時(shí)間復(fù)雜度,冒泡時(shí)間復(fù)雜度,快排是否穩(wěn)定,快排的過(guò)程
100w個(gè)數(shù),怎么找到前1000個(gè)最大的,堆排序,怎么構(gòu)造,怎么調(diào)整,時(shí)間復(fù)雜度。
一個(gè)矩陣,從左上角到右下角,每個(gè)位置有一個(gè)權(quán)值??梢陨舷伦笥易?,到達(dá)右下角的路徑權(quán)值最小怎么走。
四輛小車(chē),每輛車(chē)加滿油可以走一公里,問(wèn)怎么能讓一輛小車(chē)走最遠(yuǎn)。說(shuō)了好幾種方案,面試官引導(dǎo)我優(yōu)化了一下,但是還是不滿意,最后他說(shuō)跳過(guò)。
MySQL的索引,B+樹(shù)性質(zhì)。
十億和數(shù)找到前100個(gè)最大的,堆排序,怎么實(shí)現(xiàn),怎么調(diào)整。
布隆過(guò)濾器
hash表解決沖突的方法
跳表插入刪除過(guò)程
讓你實(shí)現(xiàn)一個(gè)哈希表,怎么做
?
九、設(shè)計(jì)模式
對(duì)于單例模式,有什么使用場(chǎng)景了,講了全局id生成器,他問(wèn)我分布式id生成器怎么實(shí)現(xiàn),說(shuō)了zk,問(wèn)我zk了解原理不,講了zab,然后就沒(méi)問(wèn)啦。
除了單例模式,知道適配器模式怎么實(shí)現(xiàn)么,有什么用
十、分布式架構(gòu)
CAP BASE理論
看你項(xiàng)目里面用了etcd,講解下etcd干什么用的,怎么保證高可用和一致性?
既然你提到了raft算法,講下raft算法的基本流程?raft算法里面如果出現(xiàn)腦裂怎么處理?有沒(méi)有了解過(guò)paxos和zookeeper的zab算法,他們之前有啥區(qū)別?
rpc有沒(méi)有了解
十一、系統(tǒng)設(shè)計(jì)
朋友之間的點(diǎn)對(duì)點(diǎn)關(guān)系用圖維護(hù),怎么判斷兩人是否是朋友,并查集,時(shí)間復(fù)雜度,過(guò)程。
10g文件,只有2g內(nèi)存,怎么查找文件中指定的字符串出現(xiàn)位置。
Linux大文件怎么查某一行的內(nèi)容。
秒殺系統(tǒng)的架構(gòu)設(shè)計(jì)
十億個(gè)數(shù)的集合和10w個(gè)數(shù)的集合,如何求它們的交集。
針對(duì)自己最熟悉的項(xiàng)目,畫(huà)出項(xiàng)目的架構(gòu)圖,主要的數(shù)據(jù)表結(jié)構(gòu),項(xiàng)目中使用到的技術(shù)點(diǎn),項(xiàng)目的總峰值qps,時(shí)延,以及有沒(méi)有分析過(guò)時(shí)延出現(xiàn)的耗時(shí)分別出現(xiàn)在什么地方,項(xiàng)目有啥改進(jìn)的地方?jīng)]有?
如果請(qǐng)求出現(xiàn)問(wèn)題沒(méi)有響應(yīng),如何定位問(wèn)題,說(shuō)下思路?
除了公司項(xiàng)目之外,業(yè)務(wù)有沒(méi)有研究過(guò)知名項(xiàng)目或做出過(guò)貢獻(xiàn)?
go程和線程有什么區(qū)別?
服務(wù)器CPU 100%怎么定位?
小編推薦一個(gè)學(xué)C語(yǔ)言/C++的學(xué)習(xí)裙【 ?712,284,705】,無(wú)論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來(lái)了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開(kāi)發(fā)工具,很多干貨和技術(shù)資料分享!
設(shè)計(jì)一個(gè)限流的算法
定時(shí)器除了小根堆,還可以怎么做
項(xiàng)目性能瓶頸在哪,數(shù)據(jù)庫(kù)表怎么設(shè)計(jì)
在高并發(fā)的生產(chǎn)環(huán)境中(非調(diào)試場(chǎng)景下),如果出現(xiàn)數(shù)據(jù)包的丟失,如何定位問(wèn)題
一個(gè)每秒百萬(wàn)級(jí)訪問(wèn)量的互聯(lián)網(wǎng)服務(wù)器,每個(gè)訪問(wèn)都有數(shù)據(jù)計(jì)算和I/O操作,如果讓你設(shè)計(jì),你怎么設(shè)計(jì)?
總結(jié)
tcp/udp,http和https還有網(wǎng)絡(luò)這塊(各種網(wǎng)絡(luò)模型,已經(jīng)select,poll和epoll)一定要非常熟悉
一定要有拿的出手的項(xiàng)目經(jīng)驗(yàn),而且要能夠講清楚,講清楚項(xiàng)目中取舍,設(shè)計(jì)模型和數(shù)據(jù)表
分布式要非常熟悉
常見(jiàn)問(wèn)題定位一定要有思路
操作系統(tǒng),還是操作系統(tǒng),重要的事情說(shuō)三遍
系統(tǒng)設(shè)計(jì),思路,思路,思路,一定要思路清晰,一定要總結(jié)下系統(tǒng)設(shè)計(jì)的流程
一點(diǎn)很重要的心得,平時(shí)blog和專(zhuān)欄看的再多,如果沒(méi)有自己的思考不過(guò)是過(guò)眼云煙,根本不會(huì)成為自己的東西,就像內(nèi)核態(tài)和用戶態(tài),平常也看過(guò),但是沒(méi)細(xì)想,突然要自己說(shuō),還真說(shuō)不出來(lái),這就很尷尬了。勿以浮沙筑高臺(tái),基礎(chǔ)這種東西還是需要時(shí)間去慢慢打牢,多去思考和總結(jié)。
C/C++Linux高級(jí)開(kāi)發(fā)路線
對(duì)標(biāo)騰訊C++后端開(kāi)發(fā)