1.c++面試問(wèn)題總結(jié):
(1)空類(lèi)的大小,僅含有虛函數(shù)類(lèi)的大小
(2)析構(gòu)函數(shù)聲明為虛函數(shù)的作用
(3)C++多態(tài)的實(shí)現(xiàn)方式,虛函數(shù)的底層實(shí)現(xiàn)細(xì)節(jié)
(4)引用和指針的區(qū)別(++)
(5)繼承類(lèi)調(diào)用構(gòu)造函數(shù)順序和析構(gòu)函數(shù)順序,什么時(shí)候要將 析構(gòu)函數(shù)定義為虛函數(shù)
()多重繼承,基類(lèi)和父類(lèi)之間怎么轉(zhuǎn)換
(6)new 與 malloc的異同處 C++為什么要引入new
(7)new背后會(huì)發(fā)生什么 , new有幾種用法
(8)結(jié)構(gòu)體內(nèi)存對(duì)齊方式。
(9)虛函數(shù)實(shí)現(xiàn)方式 (+) 虛函數(shù)作用
C++的虛函數(shù)表、虛繼承相關(guān)
C++的虛函數(shù)表了解嗎?虛繼承虛指針呢?
(10)在類(lèi)里面給成員賦值,會(huì)在什么時(shí)候初始化
(11)為什么析構(gòu)函數(shù)不要拋出異常,構(gòu)造函數(shù)中出現(xiàn)異常會(huì)怎么樣
(12)模板的特化和偏特化
(13)C++11特性
(14)lamda表達(dá)式原理,lamda表達(dá)式內(nèi)的變量的生命周期
lamda表達(dá)式怎么用的
(15)C++17了解過(guò)嗎
(16)轉(zhuǎn)移構(gòu)造函數(shù)了解嗎,用在什么場(chǎng)景
介紹一下拷貝構(gòu)造函數(shù)
(17)介紹下重載和重寫(xiě),f(int, float), f(float, int), 調(diào)用f(1, 1)用的哪個(gè)
(18)介紹下多態(tài),多態(tài)是為了解決什么問(wèn)題
(19).構(gòu)造函數(shù)可以是虛函數(shù)嗎,析構(gòu)函數(shù)可以是虛函數(shù)嗎
(20)編譯和鏈接分別做了什么事情,什么情況下鏈接失敗
(21)static_cast dynamic_cast區(qū)別
(22)智能指針有哪幾種,為了解決什么問(wèn)題,weak_ptr和shared_ptr用起來(lái)什么區(qū)別
.智能指針實(shí)現(xiàn)
(23)stl用過(guò)哪些,sort怎么實(shí)現(xiàn),unordered_map實(shí)現(xiàn)
(24)右值引用是什么概念,C++98怎么做到類(lèi)似的事情
(25)map和unordered_map有什么區(qū)別,怎么根據(jù)需求選擇map還是unordered
(26)stl的allocator做什么的
(27)volatile關(guān)鍵字做什么的,對(duì)volatile變量訪問(wèn)是線程安全嗎
(28)C和C++的區(qū)別
C++能直接運(yùn)行C語(yǔ)言文件嗎?用C語(yǔ)言可以實(shí)現(xiàn)C++的繼承和多態(tài)嗎?
類(lèi)和結(jié)構(gòu)體的區(qū)別?C和C++的區(qū)別?
(29)i++和++i的區(qū)別,效率有區(qū)別嗎
()siezeof結(jié)構(gòu)體為什么要對(duì)齊
()C++如何防止內(nèi)存泄漏
()STL了解嗎?STL的容器底層數(shù)據(jù)結(jié)構(gòu)是什么?
()vector的內(nèi)存分配了解嗎?a是vector的一個(gè)元素,&a傳參可以嗎?為什么?
()編譯的過(guò)程
()static相關(guān),static變量存在內(nèi)存哪里,兩個(gè).h文件同時(shí)定義一個(gè)static變量會(huì)怎樣,函數(shù)返回static巴拉巴拉各種,回答到想吐
C++重載和重寫(xiě)區(qū)別在哪?怎么實(shí)現(xiàn)的?
STL了解嗎?hash_map和map的區(qū)別?
char str、 char、const char str_list[]={“hello”,“world”}、malloc返回指針等的sizeof求值
uint16_t和uint32_t的強(qiáng)轉(zhuǎn)相關(guān)
手寫(xiě)String類(lèi)
解釋深拷貝和淺拷貝
靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)
一個(gè)class需要實(shí)現(xiàn)什么才能滿(mǎn)足map的需求
const關(guān)鍵字作用,要修改成員有什么辦法(mutable)
2:數(shù)據(jù)結(jié)構(gòu)與算法
鏈表上的快速排序
蓄水池問(wèn)題
外部排序
翻轉(zhuǎn)鏈表
非遞歸輸出二叉樹(shù)的后序遍歷
工作隊(duì)列用的什么數(shù)據(jù)結(jié)構(gòu),多線程同步怎么處理
反轉(zhuǎn)鏈表?
冒泡排序和快排;時(shí)間復(fù)雜度多少?
合并兩個(gè)排序鏈表
棧和隊(duì)列,如何用2個(gè)棧實(shí)現(xiàn)隊(duì)列,如何用2個(gè)隊(duì)列實(shí)現(xiàn)棧
hash hash_map了解多少說(shuō)多少
hash沖突怎么解決
3:計(jì)算機(jī)網(wǎng)絡(luò)
TCP與UDP區(qū)別,三次握手,四次揮手
TCP建立連接的過(guò)程
http協(xié)議格式
http協(xié)議的關(guān)鍵點(diǎn)
http都了解多少?會(huì)用socket嗎?
http的狀態(tài)碼都了解多少
手寫(xiě)TCP server和client的幾個(gè)步驟的代碼
TCP的三次握手并畫(huà)圖
time_wait狀態(tài)介紹一下?
TCP的三次握手,哪一次可以攜帶數(shù)據(jù)
4:操作系統(tǒng)(網(wǎng)絡(luò)編程)
要求實(shí)現(xiàn)單例模式,寫(xiě)完后要求改進(jìn)滿(mǎn)足線程安全
同步IO與異步IO的區(qū)別。 答完后問(wèn)我可不可以舉個(gè)例子
進(jìn)程調(diào)度方式(先來(lái)先服務(wù),最短工作優(yōu)先,最優(yōu)響應(yīng)比優(yōu)先,時(shí)間片輪轉(zhuǎn)
線程同步方法(互斥鎖,信號(hào)量,條件變量)
死鎖是怎樣的
epoll和select區(qū)別 epoll和select區(qū)別,epoll比select多的事件有哪些
epoll兩種觸發(fā)模式
epoll和select區(qū)別,epoll底層原理,線程池實(shí)現(xiàn)思路,如果所有線程都在工作,又來(lái)了一些任務(wù),這時(shí)候會(huì)發(fā)生什么,工作隊(duì)列同步
IO的多路復(fù)用有什么總結(jié)嗎?epoll用過(guò)嗎?遇到過(guò)什么問(wèn)題?怎么解決的?
處理過(guò)高并發(fā)嗎?epoll了解嗎?epoll都有哪幾種工作模式?epoll和select比較的優(yōu)勢(shì)。
Linux多線程并發(fā)機(jī)制
Linux有哪些鎖
服務(wù)器掛掉了重啟發(fā)現(xiàn)端口被占用了,可以在編程避免嗎(setsockopt,reuseaddr)
講解一下線程池模型
高并發(fā)頻繁加鎖對(duì)性能有影響嗎,怎么優(yōu)化(減小鎖的粒度,無(wú)鎖隊(duì)列)
主線程往工作隊(duì)列加任務(wù),如果請(qǐng)求量大,主線程可能工作不過(guò)來(lái)嗎
worker線程處理ok,主線程出現(xiàn)瓶頸怎么做
寫(xiě)個(gè)生產(chǎn)者和消費(fèi)者的程序
生產(chǎn)者消費(fèi)者模型(問(wèn)了很多場(chǎng)景怎么用進(jìn)程和線程解決)
進(jìn)程和線程的區(qū)別,進(jìn)程間通信有哪幾種方式?
進(jìn)程間通信的管道實(shí)現(xiàn)原理? 進(jìn)程間通信的幾種方式和各自的特點(diǎn)
虛擬內(nèi)存了解多少
TCP的三次握手,每一次發(fā)送的報(bào)文的具體格式
socket編程:recv返回收到包是真的收到包了嗎?
自旋鎖和讀寫(xiě)鎖的區(qū)別
TCP的四次揮手,為什么要四次揮手
TCP的四次揮手介紹一下?fin_wait和time_wait了解嗎?time_wait如何避免?
用TCP發(fā)大包會(huì)出現(xiàn)什么情況?UDP會(huì)嗎?
進(jìn)程的地址空間,物理內(nèi)存和虛擬內(nèi)存,虛擬內(nèi)存的機(jī)制,能否重疊?
5:linux
Linux系統(tǒng)了解深嗎,命令,用了什么網(wǎng)絡(luò)編程接口
Linux多線程并發(fā)機(jī)制
shell腳本懂嗎,awk,cd
靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)
Linux用得最多的命令,gdb查看所有線程的堆棧,怎么調(diào)試帶參數(shù)的程序
netstat用來(lái)看什么信息,recvq,sendq什么意思,在網(wǎng)絡(luò)過(guò)程中是屬于什么階段的數(shù)據(jù)
Linux下怎么調(diào)多進(jìn)程多線程?
linux下查看進(jìn)程、線程、cpu和存儲(chǔ)的指令