C 面試整理之二

2021-07-27 02:47:57 字數 1558 閱讀 9377

1. 五大設計原則

1)單一職責原則:乙個類只負責一項職責。

2)介面隔離原則:乙個類對另乙個類的依賴應該建立在最小的介面上,不應該依賴它不需要的介面。

3)黎克特制替換原則:使用基類的地方可以透明地使用其子類的物件。

4)依賴倒置原則:高層模組不應該直接依賴低層模組,而應該依賴其抽象。

5)開閉原則:對擴充套件開放,對修改關閉。

2. 過載、重寫與隱藏的區別

過載:在乙個域中,函式名稱相同,但是引數不同。

重寫:子類覆蓋基類中函式名稱相同,引數相同,返回值相同(或返回值是基類函式返回值的子類)的虛函式。

隱藏:子類和基類函式名相同,但是引數不同。子類和基類函式名相同,引數相同,但是基類函式沒有virtual修飾。

3. 深拷貝與淺拷貝

如果乙個類擁有資源,且在類物件拷貝的過程中,資源重新分配,這個過程就是深拷貝。反之,如果沒有資源重新分配,就是淺拷貝。

4. 智慧型指標

智慧型指標是乙個類,儲存了乙個指向動態分配物件的指標。智慧型指標物件被銷毀的時候,可以確保該動態分配物件被釋放。

5. 編寫c++中的兩個類,乙個只能在棧中分配空間, 乙個只能在堆中分配

class stackonly 

~stackonly() {}

private:

void* operator new(size_t size) {}

void operator delete(void* ptr) {}

};class heaponly

void destroy()

protected:

heaponly() {}

~heaponly() {}

};

6. string類的構造、析構、拷貝建構函式和賦值函式

string::string(const char* pstr)  else 

}

string::~string(void) 

}

string::string(const string& other) 

: m_str(null)

string& operator=(const string& other) 

return *this;

}

7. 繼承與組合的區別

繼承是is-a的關係,組合是has-a的關係。

8. 介面與抽象類的區別

面試感想之二

今天是網易.9 30到網易大樓,很直接給了乙份開發的卷子,關在小窩子裡,就走了.做去吧您.題目 1.字串反轉.如 abcdefg 轉完後 gfedcba 要求時間複雜度是o 1 2 單鏈表逆置,要求時間複雜度和空間複雜度越小越好 3 int 和integer區別 4 寫出你所知道的排序演算法,和時間...

面試題整理 C (二)

1.類,介面的區別 從定義的角度 類描述乙個實體,包括狀態 屬性和動作 介面定義一類動作,沒有實現,也沒有狀態資訊 從程式的角度 介面是函式宣告 類是函式實現 介面可以有屬性,不能有欄位 乙個子類只能繼承乙個父類,但是可以繼承多個介面 2.介面和抽象類的區別 抽象類是一類事物的高度聚合,介面是定義行...

面試題之二

static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區域性變數有什麼區別?static函式與普通的函式有什麼區別?1 全域性變數 外部變數 的書名之前再冠以static就構成了靜態的全域性變數.全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式.這兩者在...