.net 筆試面試總結(2)

  • 在.net 中類(class) 與結構(Struct)的異同。

      Class 能夠被實例化,屬於引用類型,是分配在內存的堆上的。類是引用傳遞的。程序員

      Struct 屬於值類型,是分配在內存的棧上的。結構體是複製傳遞的。設計模式

      Boolean等屬於結構體。ide

  • 堆和棧的區別

      棧是編譯期間就分配好的內存空間,所以你的代碼中必須就棧的大小有明確的定義;局部值類型變量、值類型參數等都在棧內存         中函數

      堆是程序運行期間動態分配的內存空間,你能夠根據程序的運行狀況肯定要分配的堆內存大小。spa

  • GC是什麼?爲何要有GC?

      GC是垃圾收集器(Garbage Collection) 程序員不用擔憂內存管理,由於垃圾收集器會自動進行管理。GC只能處理託管內存資源的       釋放,對於非託管資源         則不能使用GC進行回收,必須由程序員手動回收,一個例子就是FileStream 或者SqlConnection 須要程序       員調用Dispose進行資源的回收。.net

  • 值類型和引用類型的區別?
  1.  將一個值類型變量賦值給另外一個值類型變量時,將複製包含的值。引用類型變量的賦值只複製對對象的引用,而不復制對象自己。
  2.  值類型不可能派生出新的類型:全部的值類型均隱式派生自System.ValueType。但與引用類型相同的是,結構也能夠實現接口。
  3.  值類型不可能包含null值;然而,可空類型功能容許將null 賦給值類型。
  4.  每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。
  • C# 中的接口和類有什麼異同。

     不一樣點: 不能直接實例化接口。 接口不包含方法的實現。 接口能夠多繼承,類只能單繼承。 類定義可在不一樣的源文件之間進行拆分。設計

     相同點:  接口、類和結構體均可以從多個接口繼承。接口相似於抽象基類:繼承接口的任何非抽象類型都必須實現接口全部成員。對象

     接口和類均可以包含事件、索引器、方法和屬性。繼承

  • abstract class 和interface 有什麼區別?

     相同點:都不能被直接實例化,均可以經過繼承實現其抽象的方法。索引

     不一樣點: 接口支持多繼承;抽象類不能實現多繼承。接口只能定義行爲;抽象類既能夠定義行爲,還能夠提供實現。

     接口只包含方法(Method) 、屬性(Property)、索引器(Index) 、事件(Event)的簽名定義字段和包含實現方法。

     接口能夠做用於值類型(Struct)和引用類型(Class);抽象類只能做用於引用類型。例如,Struct就能夠繼承接口,而不能繼承類。

     加分的補充回答:講設計模式的時候SettingsProvider的例子。

相關文章
相關標籤/搜索