c++面试常考的知识点汇总
1. 鏈表和順序表的優(yōu)缺點,在什么場合下適合順序表,什么場合下適合用鏈表。
1)順序表存儲原理:順序表存儲是將數(shù)據(jù)元素放到一塊連續(xù)的內(nèi)存存儲空間,存取效率高,速度快。但是不可以動態(tài)增加長度優(yōu)點:存取速度高效,通過下標來直接存儲,訪問速度快,通過下標訪問缺點:a.插入和刪除比較慢,b.不可以增長長度 比如:插入或者刪除一個元素時,整個表需要遍歷或移動元素來重新排一次順序 2)鏈表存儲原理:鏈表存儲是在程序運行過程中動態(tài)的分配空間,只要存儲器還有空間,就不會發(fā)生存儲溢出問題優(yōu)點:插入和刪除速度快,保留原有的物理順序,比如:插入或者刪除一個元素時,只需要改變指針指向即可缺點:查找速度慢,因為查找時,需要循環(huán)鏈表訪問 3)應(yīng)用場景:頻繁的查找卻很少的插入和刪除操作可以用順序表存儲,如果頻繁的插入和刪除操作很少的查詢就可以使用鏈表存儲2、什么是缺省參數(shù)?
定義所謂缺省參數(shù),顧名思義,就是在聲明函數(shù)的某個參數(shù)的時候為之指定一個默認值,在調(diào)用該函數(shù)的時候如果采用該默認值,你就無須指定該參數(shù)。缺 省參數(shù)使用主要規(guī)則:調(diào)用時你只能從最后一個參數(shù)開始進行省略,換句話說,如果你要省略一個參數(shù),你必須省略它后面所有的參數(shù),即:帶缺省值的參數(shù)必須放在參數(shù)表的最后面。 缺省值必須是常量。顯然,這限制了缺省參數(shù)的數(shù)據(jù)類型,例如動態(tài)數(shù)組和界面類型的缺省參數(shù)值只能是 nil;至于記錄類型,則根本不能用作缺省參數(shù)。 缺省參數(shù)必須通過值參或常參傳遞。聲明是帶有缺省參數(shù)的函數(shù),則缺省值只能寫在聲明當中。1). 如果函數(shù)已經(jīng)帶有缺省參數(shù)的函數(shù)原型聲明,則在該函數(shù)的定義中不允許出現(xiàn)缺省值。 2). 一旦為函數(shù)的某個參數(shù)指定了缺省值,則必須為后續(xù)參數(shù)也定義缺省值,從右到左定義缺省參數(shù)。void showmessage(char *text,int length=1,int color ) ; //錯color也應(yīng)定義缺省值。 3). 調(diào)用函數(shù)時,如果略去一個參數(shù)傳遞,則略去后續(xù)所有參數(shù)傳遞,調(diào)用時將參數(shù)從左至右,逐一傳遞給行參。showmessage("hello");showmessage("hello",5);showmessage("hello",5,8);showmessage("hello", ,8); // 錯誤5、什么是引用? 引用有什么作用? 引用和指針有什么區(qū)別?
6、什么是函數(shù)重載,函數(shù)重載底層是怎么實現(xiàn)的? C語言中為什么不能支持函數(shù)重載?extern “C” 是什么意思?
7、列出常見的函數(shù)調(diào)用約定?
8、什么命名空間?它有什么用?
9、什么是結(jié)構(gòu)體?結(jié)構(gòu)體是如何進行內(nèi)存對齊的? 結(jié)構(gòu)體有什么作用?
10、C++中類和結(jié)構(gòu)體有什么區(qū)別? C語言中結(jié)構(gòu)體和C++中結(jié)構(gòu)體有什么區(qū)別?
11、寫一個函數(shù):獲取結(jié)構(gòu)體中某個成員相對于結(jié)構(gòu)體起始位置的偏移
12、什么是類?如何定義一個類?C++有幾種訪問限定符? C++的三大特性?什么是封裝?
13、C++有幾種作用域?分別是什么?
14、空類的大小是多少?為什么?
15、什么是this指針?this指針具有什么特性?C++是如何將成員函數(shù)和對象綁定在一起的?
16、什么是構(gòu)造函數(shù)?構(gòu)造函數(shù)的作用?構(gòu)造函數(shù)有什么特性?在什么時候調(diào)用的?什么是缺省的構(gòu)造函數(shù)?編譯器在什么情況下會合成缺省缺省的構(gòu)造函數(shù)?假如類中已經(jīng)定義了構(gòu)造函數(shù)? 編譯器還會在合成嗎?
17、什么是初始化列表?類中的數(shù)據(jù)成員是怎么來初始化的?那些數(shù)據(jù)成員必須要在類的初始化列表中初始化?為什么?
18、explicit關(guān)鍵字是什么意思?
19、什么是拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)是在什么時候調(diào)用的?為什么拷貝構(gòu)造函數(shù)的參數(shù)必須是引用?如果不是引用,會造成什么后果?
20、什么是析構(gòu)函數(shù),析構(gòu)函數(shù)有什么特性?在什么時候掉用的?
21、什么是運算符重載?運算符重載有什么特性?那些運算符不能重載?如何重載=和<<、>>運算符?運算符重載時要注意什么?[]、–>、前置++和后置++重載
22、什么是友元,友元有什么特性? 友元的優(yōu)缺點?
23、什么是類的靜態(tài)成員?靜態(tài)數(shù)據(jù)成員會不會計算在對象的大小中?它有什么特性?靜態(tài)成員函數(shù)中可以調(diào)用非靜態(tài)成員函數(shù)嗎?非靜態(tài)成員函數(shù)中可以調(diào)用靜態(tài)成員函數(shù)嗎? 為什么?
24、C/C++中的const有什么區(qū)別? const修飾類的成員函數(shù)時又什么作用?可以修飾類的構(gòu)造函數(shù)嗎? 可以修飾普通的全局函數(shù)嗎? const對象可以調(diào)用非const的成員函數(shù)和const成員函數(shù)嗎?非const對象可以調(diào)用const成員函數(shù)和非const成員函數(shù)嗎?const成員函數(shù)可以調(diào)用非const和const成員函數(shù)嗎?非const成員函數(shù)可以調(diào)用const和非const成員函數(shù)嗎? 為什么?
25、什么是內(nèi)斂函數(shù)?內(nèi)斂函數(shù)有什么優(yōu)缺點?內(nèi)斂函數(shù)和宏函數(shù)有什么區(qū)別?既然宏有缺陷為什么C++中沒有將宏去掉呢?
26、說說C語言內(nèi)存管理方式,C++內(nèi)存管理方式,malloc/realloc/calloc之間的區(qū)別?Malloc/free和new/delete new[]/delete[] 之間的區(qū)別?
27、什么是操作符new,new 操作符和定位表達式? 定位表達式一般是怎么用的?
28、什么是深拷貝淺拷貝? 給出String類普通版/簡潔版/引用計數(shù)版三種不同處理方式
29、什么是繼承? private、protected和public三種繼承方式之間的區(qū)別? 什么是賦值兼容規(guī)則?什么是Is-a,什么是has-a? 繼承體系中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序?友元和靜態(tài)成員是否可以繼承? 理解單繼承、多繼承、菱形繼承、菱形虛擬繼承的對象模型
30、什么是多態(tài)? 多態(tài)的實現(xiàn)原理? 什么是虛表,虛表使用來干什么的? 多態(tài)調(diào)用時怎么來實現(xiàn)的?什么是動態(tài)綁定和靜態(tài)綁定?多態(tài)有什么優(yōu)缺點? 什么是重載、覆蓋,重寫?掌握帶有虛函數(shù)的單繼承、多繼承、菱形繼承以及菱形虛擬繼承的對象模型,什么是純虛函數(shù)?什么是抽象類?
31、什么是泛型編程,函數(shù)模板的概念、實例化,模板的參數(shù)推演,模板參數(shù)列表,函數(shù)模板的重載,實例化;類模板,類模板的實例化,特化以及類型萃取? 什么是模板的分離編譯?
32、auto_ptr、scoped_ptr、shared_ptr的區(qū)別?什么是智能指針的循環(huán)引用? 為什么要定制刪除器,如何定制?
33、寫出C++中的四種類型轉(zhuǎn)化
34、什么是異常,異常的剖出和捕獲,異常捕獲的匹配規(guī)則,異常規(guī)范
總結(jié)
以上是生活随笔為你收集整理的c++面试常考的知识点汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: facenet lfw训练
- 下一篇: linux grep 匹配空格_17 个