C++奪命連環(huán)問(wèn)
秋招進(jìn)行到現(xiàn)在,面了有二三十次了,總結(jié)了一些C++的高頻面試問(wèn)題,和一些我認(rèn)為非常能考察理解深度的問(wèn)題,供參考。
1. C++11有什么新特性?
2. 函數(shù)有哪些常見的傳參方式,有何區(qū)別?
3. 指針和引用有什么區(qū)別?
4. 指針常量和常量指針有何區(qū)別?
5. 常見的內(nèi)存泄漏發(fā)生場(chǎng)景有哪些?
6. 常見的內(nèi)存泄漏檢測(cè)工具?
7. 虛擬內(nèi)存和物理內(nèi)存的區(qū)別?
8. 內(nèi)存空間有哪些區(qū)域?分別是做什么的?
9. 段頁(yè)式內(nèi)存管理有何優(yōu)點(diǎn)?
10. 說(shuō)一下智能指針?
11. 內(nèi)聯(lián)函數(shù)是什么?和宏有何區(qū)別?它有什么優(yōu)缺點(diǎn)? 什么情況不能內(nèi)聯(lián)?
12. 說(shuō)一下多態(tài)的底層原理?為什么要有多態(tài),直接靜態(tài)重寫不好嗎?
13. C++空類的大小是多少?如果空類內(nèi)含有虛函數(shù),類的大小又是多少?
14. 講講內(nèi)存對(duì)齊?
15. 虛函數(shù)可以是模板函數(shù)嗎?
16. 虛函數(shù)可以內(nèi)聯(lián)嗎?
17. 32位Linux系統(tǒng)的尋址空間是多大?進(jìn)程能申請(qǐng)的內(nèi)存有這么大嗎?
18. Linux系統(tǒng)中進(jìn)程默認(rèn)棧空間是多大?如何修改?
19. Linux系統(tǒng)中調(diào)試崩潰問(wèn)題的流程是?
20. 棧溢出一般是由哪些原因?qū)е拢?/p>
21. Static關(guān)鍵字有什么用?static變量修飾全局、函數(shù)內(nèi)和類內(nèi)變量時(shí),分別在什么時(shí)候進(jìn)行初始化?
22. 初始化列表有什么好處?哪些成員變量必須通過(guò)初始化列表初始化?
23. 什么是右值引用?說(shuō)一下什么是移動(dòng)語(yǔ)義及使用場(chǎng)景?
24. Malloc/free和new/delete有什么區(qū)別?
25. Vector和List有什么區(qū)別?講一下vector動(dòng)態(tài)擴(kuò)展的原理?
26. Vector動(dòng)態(tài)擴(kuò)展時(shí),編譯器為什么不先判斷一下原有空間后面的內(nèi)存是否空閑,如果空閑,直接在后面的內(nèi)存空間繼續(xù)分配空間?(從內(nèi)存池角度回答)
27. Unordered_map和map,unordered_set和set,分別有什么區(qū)別,它們的底層數(shù)據(jù)結(jié)構(gòu)是什么?
28. prioriry_queue優(yōu)先級(jí)隊(duì)列的底層數(shù)據(jù)結(jié)構(gòu)是什么?操作的時(shí)間復(fù)雜度是什么?
29. 紅黑樹與AVL樹有什么區(qū)別?與堆有什么區(qū)別?與跳表有什么區(qū)別?
30. 如果讓你用一維數(shù)組模擬一個(gè)大根堆,你怎么實(shí)現(xiàn)?
31. Sort()函數(shù)的排序策略是什么?用到了哪些排序方法?(快速排序、插入排序、堆排序)
32. Sort里面什么情況下會(huì)調(diào)用插入排序?它時(shí)間復(fù)雜度是N2,為什么要用它?
33. Sort里面什么情況下會(huì)調(diào)用堆排?為什么不能無(wú)腦用快排?
34. 哈希沖突了怎么辦?
35. 如果用鏈表把沖突的節(jié)點(diǎn)鏈起來(lái),因?yàn)檫@些節(jié)點(diǎn)的哈希值都一樣,那如何區(qū)分這些節(jié)點(diǎn)?
36. 哈希表負(fù)載因子過(guò)大時(shí)要進(jìn)行Rehash,那哈希函數(shù)要變嗎?
37. 如果有幾十億個(gè)id(字符串),怎么快速判斷某個(gè)id是否存在?
38. 如果要在一億個(gè)數(shù)字里找出最大/小的K個(gè),怎么做?
39. 類A提供了拷貝構(gòu)造函數(shù)和等號(hào)賦值運(yùn)算符,假設(shè)b是A的一個(gè)對(duì)象,代碼:A a=b;會(huì)調(diào)用拷貝構(gòu)造函數(shù)還是等號(hào)賦值函數(shù)?
40. C++編譯過(guò)程分為哪幾步?動(dòng)態(tài)鏈接和靜態(tài)鏈接的區(qū)別是?
先記這么多吧,后面再補(bǔ)充~