專案招人,負責面試了幾個人,網上找了一些面試內容,總結一下
什麼是.net?什麼是clr?il是什麼?gc是什麼,簡述一下gc的工作方式?
類(class)和結構(struct)的區別是什麼?它們對效能有影響嗎?.net bcl裡有哪些是類(結構),為什麼它們不是結構(類)?在自定義型別時,您如何選擇是類還是結構?
在.net程式執行過程中,什麼是堆,什麼是棧?什麼情況下會在堆(棧)上分配資料?它們有效能上的區別嗎?「結構」物件可能分配在堆上嗎?什麼情況下會發生,有什麼需要注意的嗎?
泛型的作用是什麼?它有什麼優勢?它對效能有影響嗎?它在執行時的行為是什麼?.net bcl中有哪些泛型型別?舉例說明平時程式設計中您定義的泛型型別。
異常的作用是什麼?.net bcl中有哪些常見的異常?在**中您是如何捕獲/處理異常的?在「catch (ex)」中,「throw」和「throw ex」有什麼區別?您會如何設計異常的結構,什麼情況下您會丟擲異常?
list和t的區別是什麼,平時你如何進行選擇?dictionary是做什麼的?.net bcl中還有哪些常用的容器?它們分別是如何實現的(哪種資料結構)?分別是適用於哪些場景?
抽象類和介面有什麼區別?使用時有什麼需要注意的嗎?如何選擇是定義乙個「完全抽象」的抽象類,還是介面?什麼是介面的「顯式實現」?為什麼說它很重要?
字串是引用型別型別還是結構型別?它和普通的引用型別相比有什麼特別的地方嗎?使用字串時有什麼需要注意的地方?為什麼說stringbuilder比較高效?在連線多個字串時,它無論何時都比直接相加更高效嗎?
如何高效地進行陣列複製?「二維陣列」和「陣列的陣列」有什麼區別?在使用雙重迴圈遍歷乙個二維陣列時,如何選擇內外層的遍歷順序?
什麼是元程式設計,.net有哪些元程式設計的手段和場景?什麼是反射?能否舉一些反射的常用場景?有人說反射效能較差,您怎麼看待這個問題?有什麼辦法可以提高反射的效能嗎?
委託是什麼?匿名方法是什麼?在c# 3.0中,lambda表示式是什麼?擴充套件方法是什麼?linq是什麼?您覺得c# 3.0中還有哪些重要的特性,它們帶來了什麼優勢?bcl中哪些類庫和這些特性有關?您平時最常用哪些?
有乙個回答的總結:
回答:類和結構體的區別主要有以下幾點:
1、 類是引用型別,結構體是值型別。值型別在傳遞和賦值時將進行複製,而引用型別則只會使用引用物件的乙個"指向"。所以他們兩者之間的區別就是兩個型別的區別。
2、 在記憶體中,引用型別諸如類是在堆上,而值型別諸如結構體實在棧上進行儲存和操作。相比於棧上的操作,堆上的操作更加複雜耗時,所以一些官方推薦使用結構體,這樣可以提高程式執行的效率。
3、 類可以被繼承,而結構體不能被繼續;
4、 結構體只能封裝屬性,而類不僅可以封裝屬性還可以封裝方法;
5、 類的宣告和結構的宣告非常類似,只是限定符後面是 struct 還是 class 的區別;
6、 結構體與類的型別不一樣,可是他們的基型別都是物件(object),c#中所有型別的基型別都是object;
7、 雖然結構體的初始化也使用了new 操作符可是結構物件依然分配在堆疊上而不是堆上,如果不使用「新建」(new),那麼在初始化所有字段之前,欄位將保持未賦值狀態,且物件不可用;
8、 內部結構:
結構體:沒有預設的建構函式,但是可以新增建構函式 沒有析構函式 沒有 abstract 和 sealed(因為不能繼承) 不能有protected 修飾符 可以不使用new 初始化在結構中初始化例項欄位是錯誤的;
類: 有預設的建構函式 有析構函式 可以使用 abstract 和 sealed 有protected 修飾符 必須使用new 初始化
最後一點就是該如何選擇使用類和結構體?記住這幾點
1、 堆疊的空間有限,對於大量的邏輯的物件,建立類要比建立結構好一些;
2、 結構表示如點、矩形和顏色這樣的輕量物件,例如,如果宣告乙個含有 1000 個點物件的陣列,則將為引用每個物件分配附加的記憶體。在此情況下,結構的成本較低。
3、 在表現抽象和多級別的物件層次時,類是最好的選擇;
4、 大多數情況下該型別只是一些資料時,結構時最佳的選擇;
C 面試總結
深度不夠,學習能力一般,表達業餘。物件導向的三大特性 封裝性,繼承性,多型性。智慧型指標 unique ptr不允許多個指標共享資源,可以用標準庫中的move函式轉移指標 shared ptr多個指標共享資源,weak ptr不詳 內部函式 靜態函式 static 在定義它的檔案中可以被呼叫,在同一...
C 面試總結
1 c c 面試知識點總結 一 2 c c 面試知識點總結 二 3 c c 面試知識點總結 三 1 c 面試總結 一 常用關鍵字 2 c 面試總結 二 類 3 c 面試總結 三 模板與泛型程式設計 4 c 面試總結 四 標準庫 5 c 面試總結 五 c 11 14新特性 6 c 面試總結 六 雜記 ...
c 面試總結
前幾周還 面試了某大廠,遺憾掛了,不過題目還是不錯的,記錄下來。static關鍵字的作用。智慧型指標的原理。malloc和new的區別。new和malloc的容錯保護是如何實現的 就是假如未新建成功要怎麼處理 malloc分配完成後會返回指標,如果指標為null表示分配失敗,new的話失敗會丟擲ba...