C 演算法的40個高頻面試問題集錦

2022-06-11 02:57:08 字數 2293 閱讀 8172

都是自增運算,區別:

兩種:

要點:使用recursive遍歷所有節點

struct node

node invert(node &tree)

fstream包含讀ifstream和寫ofstream

static成員函式不屬於任何物件或例項,因此宣告virtual也沒有意義。

主要有vector, queue, stack, priority_queue, deque(雙端), string, set, multiset(允許重複), bitset, map(與pair的區別在於唯一對映)

預編譯 -> 編譯 -> 彙編 -> 鏈結

auto, unllptr, shared_ptr, init, &&a, atomic, array(stl), tuple(stl)

array需要指定長度而vector不用(動態擴充套件)

class預設private而struct預設public

atomic 原子類,用於不同執行緒之間同步記憶體訪問,如std::atomicstd::atomic

修飾變數,唯讀

修飾指標,左右含義不同

常量引用,高效安全

類成員函式

通過const定於的常量必須初始化,儲存位置

區域性:stack,全域性:memory(符號表)

sizeof是運算子,strlen是函式

引用的本質實現為指標(語法糖),區別在於:

不存在空引用,但存在空指標

不可修改引用在初始化後

引用必須建立時初始化

指標可以多級,引用只有一級

為解決效率問題,編譯直接展開而非呼叫,因此不能太複雜

成員函式類中定義缺省內聯,類外定義預設普通。

同一作用域中宣告功能類似的同名函式,形參(型別、數量、順序)不同

泛型程式設計概念,包含函式模板和類模板

函式return前生成乙個臨時變數存入記憶體,呼叫程式訪問位址,獲取返回值

虛函式可以是內聯函式,但虛函式表現出多型時不能內聯

ctor(建構函式)可以過載(多個,是否帶引數)

dtor(析構函式)不能過載(唯一,不接受引數)

派生類中定義基類同名函式,基類非虛,此時基類函式被隱藏。

protected與private區別在於子類可否訪問

copy ctor, move ctor, friend func(可訪問任何成員,包括private)

類的成員函式均隱式傳入this指標,friend和static無,且friend不是類的成員

只有當乙個類作為基類被繼承時才能為其設計虛析構函式,原因:

基類指標指向new子類,釋放基類指標可以釋放子類空間,防止記憶體洩漏;

預設dtor非虛,因為虛函式需要占用額外虛函式表與虛表指標,開銷記憶體。

封裝、繼承、多型

heap only:dtor設為private

stack only: new/delete operator設為private

空類包含ctor, copy ctor, dtor, operator=, operator&, const operator&

sizeof class 空類返回1;普通成員函式不參與sizeof統計;虛函式+4bytes

static成員不影響類大小,編譯器放在程式資料段中;普通繼承sizeof相加

c++: new/delete 自動申請大小,不釋放會洩露

c: malloc/free 需要指定大小,不會呼叫ctor和dtor

記憶體申請分配

效率擴充套件方向

舉例stack自動高

高->低

區域性變數,形參,返回值

heap手動低

低->高

new/malloc動態申請

standard template library

常見:容器、演算法、迭代器

罕見:迭代介面卡、空間配置器、仿函式

vector底層是array(隨機讀取快),list底層是雙向鍊錶(增刪快);

vector插入節點導致記憶體拷貝而list不會;

vector分配好記憶體不夠雙倍擴充套件,list每次插入都申請記憶體。

const在前表示返回值為const型別

const在後表示函式是const不能修改成員變數

堆區、棧區、全域性(靜態)區、文字常量區、程式**區。

例如,函式內宣告乙個char*字串,首指標位於棧區,所指字串內容位於文字常量區

C 高頻面試問題總結

順序容器 vector,deque是隨機訪問迭代器 list是雙向迭代器 容器介面卡 stack,queue,priority queue沒有迭代器 關聯容器 set,map,multiset,multimap是雙向迭代器 unordered set,unordered map,unordered ...

面試反覆被問到的問題 高頻面試問題

方法1 寬度高度已知 父元素相對定位,子元素絕對定位,left 50 top 50 margin left 負的寬度一半 margin top 負的高度一板 方法二 flex布局,寬度高度已知 在父元素身上 display flex justify content center align item...

k8s相關面試問題 TCP相關的高頻面試問題

tcp是在osi模型傳輸層中的可靠傳輸協議,通過三次握手建立連線,傳送端對資料進行分組,然後通過套接字傳送到快取中,進行傳送。接收端將報文段接收到接收快取中,然後再讀取資料。接收方通過滑動視窗通知傳送方控制吞吐量。遇到資料報丟失了就會通過選擇重傳來重新獲得資料報,資料傳輸完後進行四次揮手關閉連線。首...