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 將乙個...