C 面試知識

2021-08-28 21:08:07 字數 1689 閱讀 2510

c#知識點總結:

c#的資料型別有:

值型別-在棧中分配記憶體,初始化才能使用,不能為null值型別

引用型別-在堆中分配記憶體,初始化預設為null

c#裝箱操作是將值型別轉化為引用型別或是值型別所實現的任何介面型別的隱式轉化,在堆中分配乙個物件例項,並將此值複製到新的物件中

異常類物件均為system.exception類的物件

物件可以直接賦值的屬性為public,protected不可以

類只能單繼承,介面可以多實現

委託的例項是物件,委託-方法作為方法的引數

物件導向的5個基本原則:單一職責原則(srp),開放封閉原則(ocp),裡式替換原則(lsp),依賴倒置原則(dip),介面隔離原則(isp)

一維陣列:int numbers;

多維陣列(矩形陣列):string [ , ] names;

陣列的陣列(交錯的):byte scores;

int array=new int[3],new int[2],new int[1]}

集合和陣列的區別:

集合:長度是無限的

count—>獲取集合中實際包含的資料個數

capacity—>集合中可以包含的資料個數

陣列:長度在定義時要給定

1)c#介面可以實現多繼承,介面的成員不能有public、protected、internal、private等修飾符,因為介面裡面的方法需要外面介面去實現裡面的方法體

2)介面不能有new、static、abstract、override、virtual修飾符

3)介面沒有建構函式,所有不能直接使用new對介面進行例項化。

asp中session物件預設有效期為20min

out、ref都是引用傳遞,傳遞後使用都會改變原有的值,引用傳遞都需要顯示傳遞到方法。ref有進有出,即能將引數傳進去,函式裡對變數的改變在函式結束時會改變值,因此需要在傳遞進去前初始化。out只出不進,即將引數傳進去時值是無效的,out會把引數清空,所以無法將乙個值從 out 傳遞進去。

out引數側重於在函式中返回多個值。out引數在函式內部必須進行賦值,函式外進行輸出即可。

索引器沒有名字,以函式形式標識,允許過載,索引器的引數可以採用任何型別

public string this [int index] 

}

13.將物件輸出在控制台上,則輸出物件所在的命名空間

arraylist類,集合:沒有長度限制,沒有型別限制;

若要輸出物件或陣列的具體資料,則(裡式轉化)判斷list[i]是否是類或陣列(int ),若是,則轉化為類,再輸出資料。

14.非泛型集合:每個集合中新增的資料型別不一致

arraylist list=new arraylist(); –list.add(object o);中間可能發生裝箱

hashtable鍵值對集合

泛型集合:每個集合中新增的資料型別是一致的

list

dictionary

c 面試知識總結

子類能夠從父類繼承什麼,不能從父類繼承什麼?能 派生類能夠繼承其基類的成員,但是基類必須將它的兩種成員函式區分開來 一類是基類希望其派生類進行覆蓋的函式 另一類是基類希望派生類直接繼承而不要改變的函式 派生類可以繼承定義在基類的成員,但是派生類的成員函式不一定有權訪問從積累繼承而來的成員 關於許可權...

C 面試知識 協程

跟程序和執行緒放在一起,只不過相比其他兩個更少的關注度。一種使用者態的輕量級執行緒,完全由使用者排程控制,擁有自己的暫存器上下文和棧,協程排程切換的時候,先將暫存器上下文和棧儲存到其他地方,切換回來的時候再恢復之前儲存的暫存器上下文和棧。直接操作棧則基本沒有核心切換的開銷,可以不加鎖的訪問全域性變數...

C 面試知識點

大概是一些面試可能會碰到的c 知識點。具體見effective c 3e 宣告使得名字為程式所知,而定義負責建立與名字關聯的實體 只在堆上 將建構函式和析構函式設定為保護,再定義兩個函式專門用於建立和銷毀物件。只在棧上 禁用class的new運算子,就是將class的operator new宣告為私...