2017年8月8日

1.tcp和udp的區別?tcp

a.tcp是面向鏈接的,udp是無鏈接的函數

b.每一條tcp僅支持一對一通訊,udp支持1對一、1對多、多對1和多對多的通訊指針

c.tcp提供可靠交付的服務,udp使用盡最大努力交付對象

d.tcp面向字節流,udp面向報文繼承

e.tcp有擁塞控制,udp沒有擁塞控制隊列

f.tcp首部開銷最少20個字節,udp首部開銷只有8個字節進程

2.指針和引用的區別?內存

a.指針能夠有const,引用不能夠有const消息隊列

b.指針能夠爲空,引用不能夠爲空模板

c.sizeof引用的大小爲引用所指變量的大小,sizeof指針的大小爲指針所屬類型的大小

d.指針的值能夠改變,引用的值能夠改變

e.指針能夠有多級,引用只能是一級

3.進程間通訊的方式?最高效的是哪一種方式?

a.管道

b.消息隊列

c.共享內存

d.套接字

其中共享內存最高效,共享內存是一個進程映射一段能夠被其餘進程所訪問的內存 也就是說 一個進程建立,多個進程訪問。

4.有名管道和無名管道的區別?

無名管道只能在具備親緣關係的進程間使用(進程的親緣關係是指父子進程關係)

有名管道容許無親緣關係進程間的通訊

5.C++多態是如何實現的?虛函數表存放在什麼地方?

多態能夠經過 虛函數、覆蓋、抽象類、模板。虛表指針存儲在對象的內存空間,因此虛函數表也應該存儲在對象的內存空間。(虛函數表裏有虛表指針)

6.tcp在傳輸的過程當中是如何保證可靠鏈接的?

超時重傳,發送端在發送數據後爲每個數據包保留一個記錄,同時發送端發送數據包是啓動一個計時器,當計時器過時時仍未收到該數據包的確認,發送端將從新發送該數據包。發送方只有收到數據包的確認消息後,才清除該數據包記錄。

7.list和vector的區別?

a.vector是連續存儲的,list是離散存儲的

b.list是雙向的,vector是單向的

8.智能指針?

 

9.C++11的新特色?

a.支持long  long類型

b.能夠對 vector,struct等等進行列表初始化 vector<int> a= {1,2,3,4,5,6};

c.推出了nullptr 空指針

d.using 類型別名:和關鍵字typedef的做用同樣用來聲明一個類型的別名

10.STL迭代器失效的解決辦法?(不經過改代碼的方式)

11.vector當空間不夠存放數據時,而後會申請一篇更大的空間,把原來的數據拷貝過去。

 12.構造函數和析構函數能夠爲虛函數嗎?構造函數和析構函數裏面會調用虛函數嗎?

構造函數不能聲明爲虛函數,由於虛函數對應一個虛表指針,這個虛表指針是存儲在對象的內存空間的,若是構造函數是虛的,就須要經過虛表指針來調用,但是對象的內存空間還不存在,也就是說虛表指針不存在。

析構函數能夠聲明爲虛函數,並且有時必須聲明爲虛函數,在類的繼承中,若是有基類指針指向派生類,delete基類指針的時候,若是析構函數不是虛函數,會直接析構掉基類,派生類的析構函數不會被執行,直接後果是內存泄漏。

在構造函數中能夠調用虛函數,可是最好不要這樣作,由於在調用構造函數時,這時候類裏面的變量可能還未被初始化,虛函數這時候可能會訪問內存中未知的區域。

在析構函數裏面能夠調用虛函數,但最好不要這樣作,由於調用析構的時候類裏面的變量可能已經被析構了,虛函數這時可能會訪問內存中未知的區域,比較容易出錯。

13.類的私有成員是這個類的  is仍是has

14類的保護成員的做用?

相關文章
相關標籤/搜索