騰娛-C++ 服務(wù)器開發(fā)實(shí)習(xí)
一面
上來直接沒自我介紹,開始八股
八股部分:
C++語法部分:
1.const關(guān)鍵字和#define,它們的作用時(shí)機(jī)在什么時(shí)候,以及如何取消#define?
2.static關(guān)鍵字的作用?
3.explicit關(guān)鍵字的作用?
4.虛析構(gòu)函數(shù)的作用?為了防止什么問題?
5.虛函數(shù)表是如何繼承的?派生類重寫前后和基類的虛函數(shù)表是否相同?
6.new和delete與malloc和free的區(qū)別?
C++STL部分:
1.array和vector的區(qū)別?vector的增長機(jī)制?vector的擴(kuò)容是否會對性能造成影響?在知道大致數(shù)量的情況下,如何減少擴(kuò)容的情況或影響?
2.map和set丶unordered_map和unordered_set的區(qū)別?如果讓你來實(shí)現(xiàn)某業(yè)務(wù),你會如何選擇這兩類數(shù)據(jù)結(jié)構(gòu)呢?它們兩類,哪一部分的節(jié)點(diǎn)會更占用內(nèi)存呢?
3.容器的迭代器失效出現(xiàn)在哪些容器中?失效了如何操作?
算法部分:
1.了解到的排序算法?
答出了堆排序 快排 歸并 插入。
堆排序和快排的平均時(shí)間復(fù)雜度?
空間復(fù)雜度誰更低一些?
哪個(gè)排序算法是穩(wěn)定的?
2.計(jì)算了一個(gè)結(jié)構(gòu)體對齊。對齊方式是?如何指定對齊數(shù)?后面兩個(gè)答的不太好。
Linux系統(tǒng)和網(wǎng)絡(luò)部分:
1.什么會導(dǎo)致core文件?數(shù)據(jù)越界,除零會嗎?內(nèi)存泄露會嗎?是否調(diào)試過core文件?
2.查看進(jìn)程的命令?ps的咋使用的?顯示出來的信息都有哪些?命令附加選項(xiàng)的含義?top咋使用的?如果使用top顯示指定進(jìn)程的id呢?如何切換一個(gè)文件的大小的單位顯示?
3.grep命令咋使用的?篩選的規(guī)則是什么?
4.ls的使用?文件大小的變更,kb變成mb或者gb?
5.讀寫權(quán)限位的修改命令?更換用戶的命令?
6.mv和cp的區(qū)別?
7.軟連接會創(chuàng)建嗎?ln命令用過嗎?
8.gdb用過嗎?平時(shí)開發(fā)用什么調(diào)試的?gdb的熟練程度,一些調(diào)試命令?常用的編譯軟件是什么?
9.IPC通信的方式?System V共享內(nèi)存的接口?是否映射文件?什么情況下使用System V共享內(nèi)存呢?如何解決System V線程不安全的問題呢?共享內(nèi)存的原理?
10.互斥鎖?原子類型的使用的場景?
11.了解過哪些管道?兩個(gè)管道有什么區(qū)別?
12.套接字是否可以作為IPC,常見套接字協(xié)議?兩者有啥區(qū)別?兩者的開銷有什么不同?什么情況下比較使用TCP呢?
13.UDP,TCP服務(wù)器端的套接字建立流程?大概的步驟?
14.TCP的三次握手為什么不是兩次?四次揮手中TIME_WAIT狀態(tài)的作用?
15.阻塞IO與非阻塞IO的區(qū)別?
16.IO多路復(fù)用概念?epoll的優(yōu)點(diǎn)?epoll的時(shí)間復(fù)雜度比前面兩者高嗎?epoll的咋減少拷貝的或者更高效的,通過什么機(jī)制?
項(xiàng)目拷打:仿muduo的并發(fā)服務(wù)器
反問。
二面
面試時(shí)間:1h。前半小時(shí)扣題,后半小時(shí)八股和信息詢問。
1.自我介紹
2.手撕部分
面試給了一道手撕題,思路+本地IDE。亂序鏈表升序成有序鏈表的。要求用歸并排序解決。
3.項(xiàng)目部分
項(xiàng)目是啥途徑寫的。
4.八股部分:
1.New,delete和malloc,free的相同和不同;
2.const修飾指針時(shí),*在const左右都是什么含義;
3.通過方式什么方式來管理指針?
4.你剛剛提到的RAII是什么?具體怎么做的?
5.深拷貝和淺拷貝的區(qū)別?
6.大小端是什么?網(wǎng)絡(luò)字節(jié)序是什么端?在網(wǎng)絡(luò)編程中,你用過哪些字節(jié)序轉(zhuǎn)換的接口;
7.服務(wù)器是如何測試的?最大并發(fā)是多少?
8.有沒有遇到過CoreDump?如何定位?如何調(diào)試的?有沒有設(shè)置過Core的文件生成路徑?
9.有沒有用過GDB?如何利用GBD來調(diào)試CoreFail,GDB如何打印出堆棧?
10.Linux相關(guān)的命令有沒有什么了解的?如何動態(tài)地查看文件的文件流?
11.容器里面erase會發(fā)生什么?有什么方法可以正確地獲取到erase后的迭代器?都有哪些進(jìn)行erase不會失效的迭代器?
12.map和unordered_map有什么不一樣的?自定義個(gè)類型作為它們的key,它們分別需要重載什么方法或者做什么操作來用確保正確地排序?
13.進(jìn)程線程和攜程它們的區(qū)別?
14.OSI七層模型?
15.介紹一下超時(shí)重傳?
5.信息詢問:
1.平時(shí)啥愛好,喜歡打游戲嗎?
2.對投遞的工作有沒有什么了解?工作期望是什么?
3.可以接受加班嗎?
4.可以實(shí)習(xí)多久?當(dāng)前在哪?工作base在哪?