盤(pán)點(diǎn)騰訊Linux、 C++后臺(tái)開(kāi)發(fā)面試題,做好充足準(zhǔn)備,不怕被Pass

一、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ā)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容