C 面試常考題(未完整 更新中)

2021-06-10 03:22:42 字數 2499 閱讀 7969

1.static用法

在函式名裡定義的static變數,改變它的儲存結構,多次呼叫該函式時,該變數僅被初始化一次

全域性變數與static的靜態變數。改變它的作用域,全域性變數的範圍是整個程式,而static的靜態變數的範圍僅有該模組

2.多型的機制

編繹器會為繼承體系上的每乙個類建立乙個虛函式表,表中的每一次指向虛函式的位址。

每個物件都會有乙個虛指標指向虛函式表

通過父類指標就可以訪問到子類的函式

3.引用跟指標

引用必須被初始化,且引用被初始化之後就不能再修改

4.vector<>缺陷,?vector.resize()與vector.reserve()?

vector新增資料的時候,有時需要重新申請一片空間,一般是2倍,然後把原來的資料複製過來,並**原來的資源

vector.resize()會呼叫建構函式

5.虛析構

能讓父類指標為了呼叫子類的析構函式

6.map的底層是?

紅黑樹7.排序

8.仿函式類

9.智慧型指標

10.c++的四種轉換,dynamic_cast<>與普通的轉換有什麼不同

11.struct對齊

struct a

int a;

char b;

int c;

sizeof(a) = 12;

struct b

int a;

char b;

char c

sizeof(b) = 8

12.迭代器的五種型別

唯讀迭代器

只寫迭代器

向前的可讀可寫迭代器

能向前能向後的可讀可寫迭代器

隨機迭代器

13.二分查詢

14.最長子序列和 ( o(n) )

15.i++與++i

++i的效率高

16.巨集定義與內聯函式區別,有什麼缺陷

巨集定義是在預處理時對**替換

內聯函式具有函式的性質,能進行內型檢查,它在編譯時對**替換

17.尋找最大k個數

快速排序的思想

18.new與malloc有什麼區別

new是操作符,可呼叫建構函式

malloc是c標準庫函式,不呼叫建構函式

19.socket通訊

tcp:

服務端:       

建立socket物件

繫結位址

設定監聽個數

等待監聽(accept)

客戶端:

建立socket物件

connect伺服器

開始通訊

最後關閉socket物件

udp:

服務端:       

建立socket物件

繫結位址

設定非同步監聽或呼叫receive進行得等待

客戶端:

建立socket物件

繫結位址

呼叫send通訊

最後關閉socket物件

20.三次握手

第一次,客戶端向伺服器傳送請求,序號syn=i;,進入syn_send狀態

第二次,服務端接受請求並對客戶端發出應答,序號syn=i+1,同時服務端也傳送請求,序號為syn=j,服務端進入syn_receive狀態

第三次,客戶端接受服務端的請求並發出應答,序號syn=j+1,此包傳送完畢後,進入establish狀態

21.程序排程,程序通訊,執行緒同步

程序通訊方式:socket,訊息佇列,共享記憶體,訊號量,管道

程序排程:先來先服務,優先順序排程,時間輪轉片,多級反饋

執行緒同步:互斥鎖,臨界區,訊號量,訊號量

22.多執行緒有什麼缺陷

對全域性變數的訪問有危險

23.a[100] =       a[5] = 0

a[100]    a[5]未知

24. a geta()   ,  a& geta() , a * geta() ,有什麼區別,缺陷

a& geta()返回的是引用,當返回乙個區域性變數的引用,物件在函式執行結束後就被釋放了

a * geta()返回的是指標,當返回乙個區域性變數的指標,物件在函式執行結束後就被釋放了,當返回的資料是堆上的資料,則要考慮釋放

a geta()返回的是值,不需要擔心前兩個的影響,返回時會呼叫建構函式,降低效率

25.海量資料(比如找最大的ip訪問量之類的)

網上有很多例項

26.推薦看看《程式設計之美》,不用全看.

27.《c++primer》(不需要全看,懂的就可以不用看),《effective c++》,《effecitve stl》,當然還有  資料結構與演算法了

28.熟悉strstr,strcmp,strlen,strcpy之類的c 標準庫函式原始碼.

29.char a="abc"與char *b = "abc"的區別

char a = "abc"是陣列,在棧上的陣列,並初始化為abc

char *b = "abc"在全域性區內申請一塊記憶體並初始化為abc,然後指標b指向它

C語言之面試常考題

考試題一 include stdio.h int main int p arr for size t i 0 i 5 i return0 執行結果如下 考察的知識點 1 printf和c 中的 cout 一樣,先執行後面的再執行前面的,實現方式用了棧的思想,先入棧的後出棧執行。2 p i p i 3...

面試常考題 c 中指標和引用的區別?

指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元 而引用僅是個別名 引用使用時無需解引用 指標需要解引用 引用只能在定義時被初始化一次,之後不可變 指標可變 指標 int a 1 int c 2 int b a cout b cout b cout b cout b 結果 1...

c 面試面試題 持續更新中。。。

1 下面輸出什麼?public class a public class b a class program 解答 首先4.0 是編譯不過,缺少隱式轉換,這種操作本來就是錯誤的 執行時5.0丟擲異常,無法將a轉換成b 1.0 print a 2.0 print b,3.0 print b 2 將乙個...