面試題整理 C (二)

2022-05-17 18:52:25 字數 1789 閱讀 4366

1.類,介面的區別

從定義的角度

類描述乙個實體,包括狀態、屬性和動作

介面定義一類動作,沒有實現,也沒有狀態資訊

從程式的角度

介面是函式宣告;類是函式實現

介面可以有屬性,不能有欄位

乙個子類只能繼承乙個父類,但是可以繼承多個介面

2.介面和抽象類的區別

抽象類是一類事物的高度聚合,介面是定義行為的規範

抽象類定義方法時,可以有實現,也可以沒有

介面中定義的方法,不能有實現

抽象類子類可以不重寫抽象方法,繼承介面的類必須有方法和屬性的實現

3.抽象方法和虛方法的區別

抽象方法使用abstract關鍵字,虛方法是用virtual關鍵字

抽象方法必須被派生類重寫,虛方法可以不重寫

抽象方法可以看作沒有實現的虛方法

類包含抽象方法,必須被定義為抽象類

4.equal()、referenceequal()、== 的區別

對於引用型別

equal是比較引用的值是否相等

referenceequal比較是否是同乙個引用

object a=new object();

object b=a;

object c=new object();       

object d=new object();

c=(object)100;

d=(object)100;

system.object.equals(a, b);           //return true

system.object.referenceequals(a, b);    //return true

system.object.equals(c, d);           //return true

system.object.referenceequals(c, d);    //return false

對於值型別,如果運算元的值相等,則相等運算子 (==) 返回 true,否則返回 false。對於 string 以外的引用型別,如果兩個運算元引用同乙個物件,則 == 返回 true。對於 string 型別,== 比較字串的值。

5.程序和執行緒的區別

執行緒時cpu排程和分配的單位,程序內可以有多個執行緒,共享程序資源

6.使用operator的注意事項

需要提供public static修飾符;

需要有返回值;引數型別可以不同;==和!=必須成對出現

7.task和threadpool的區別

threadpool不支援執行緒的取消,完成、失敗通知等互動

threadpool不支援執行緒執行的順序

task有屬性,可以查詢任務完成時的狀態(iscanceled\iscompleted\isfaulted)

task沒有提供**時間通知,通過啟動乙個新任務的方式完成類似的功能。

continuewith可以在乙個task完成時發起乙個新的任務,支援了任務的完成通知,可以在新任務中獲取舊任務的結果

threadpool可以節省建立銷毀執行緒消耗的時間,減少記憶體浪費,和效能損失

8.sealed關鍵字的作用

被sealed類修飾的類和方法不能被繼承和重寫

9.能用foreach遍歷訪問的物件需要實現什麼介面或者宣告什麼方法

不一定要實現ienumerable介面,一定要實現getenumerator方法

10.建構函式是否可以被override

不可以,構造器不能被繼承,不能被override,可以被overload

to be continue...

面試題整理 二)

1.把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。include include struct bstreenod...

C 面試題整理

1.c 中類是否支援多繼承?請說明原因。答 不支援,需要用介面來實現多繼承 2.我們都知道乙個類可以有多個建構函式,並且c 會在我們建立類的時候預設的提供乙個無參的建構函式,當我實現了另外乙個有引數的建構函式的時候,我還能呼叫無引數的建構函式嗎?請說明原因。答 不能,因為一旦你實現了乙個建構函式,c...

python面試題整理(二)

前一篇博文博主總結了10道python面試題,戳這裡可以回看,本文繼續整理python面試題,希望能幫到大家 11.迭代器和生成器的區別 1 迭代器是乙個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string list dict tuple等這類容器物件,使用f...