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...