趁着在放假時候,給你們總結一點筆試面試上的東西,也恰好爲年後跳槽作一點小積累。面試
下面的參考解答只是幫助你們理解,不用背,面試題、筆試題變幻無窮,不要夢想着把題覆蓋了,下面的題是供你們查漏補缺用的,真正的把這些題搞懂了,才能「以不變應萬變」。回答問題的時候能聯繫作過項目的例子是最好的,有的問題後面我已經補充聯繫到項目中的對應的案例了。數據庫
private: 私有成員,在類的內部才能夠訪問。服務器
protected :保護成員,該類內部和繼承類中能夠訪問。網絡
public :公共成員,徹底公開,沒有訪問限制。架構
internal:當前程序集內能夠訪問。ide
一、接口是一組規則的集合,它主要定義的是事物的規則,體現了是這種類型,你就必須有這些規則的概念。它的目的主要是依賴倒置和鬆耦合,從這點來講,接口不能省掉或者用抽象類代替。總而言之,接口和抽象類不可同日而語。函數
二、抽象類主要用於公共實現和約束子類必須重寫。spa
三、用一句話歸納接口和抽象類的區別:使用抽象類是爲了代碼的複用,而使用接口的動機是爲了實現多態性(依賴倒置)。至於使用的時候究竟是用接口仍是抽象類,看具體 的狀況。.net
委託能夠把一個方法做爲參數代入另外一個方法。指針
委託能夠理解爲指向一個函數的指針。
委託和事件沒有可比性,由於委託是類型,事件是對象。下面說的是委託的對象(用委託方法實現的事件)和(標準的event方式實現)的事件區別。事件的內部是用委託實現。由於對於事件來說,外部只能"註冊本身+= 、註銷本身-=",外界不能夠註銷其餘的註冊者,外界不能夠主動觸發事件,所以若是用delegate就無法進行上面控制,所以誕生事件這種語法。事件是用來閹割委託實例的,類比用一個自定義類閹割List 。事件只能add、remove本身,不能賦值。事件只能+=,-=,不能=.加分的補充回答:事件內部就是一個private 的委託和add ,remove兩個方法。
重載是的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要。重載(overload)是面向過程的概念。
Override 是進行基類中函數的重寫。Override是面向對象的概念
什麼是裝箱(boxing) 和拆箱(unboxing)
object 是引用類型,但時它的子類Int32 居然不能去object 能去的"要求必須是引用類型"的地方,違反了繼承的原則,因此須要間Int32裝在object 才能傳遞。
裝箱:從值類型接口轉換到引用類型。
拆箱:從引用類型轉換到值類型。
1 object obj = null;//引用類型 2 obj = 1;//裝箱,boxing。把值類型包裝爲引用類型。 3 int i1 = (int)obj;//拆箱。unboxing
分析: 在inboxing (裝箱)時是不須要顯式的類型轉換的,不過unboxing(拆箱)須要顯式的類型轉換。要掌握裝拆箱,就必須瞭解CTS及它的特色
.Net 重要技術和基礎之一的CTS (Common Type System) ,CTS是爲了實如今應用程序聲明和使用這些類型時必須遵循的規則而存在的通用類型系統。
.Net將整個系統的類型分紅兩大類 :值類型和引用類型。
CTS中的全部東西都是對象;全部的對象都源自一個基類——System.Object類型。值類型的一個最大的特色是它們不能爲null,值類型的變量總有一個值。爲了解決值類型不能夠爲null,引用類型能夠爲null的問題,微軟在.Net中引入了裝箱和拆箱:裝箱就是將值類型用引用類型包裝起來轉換爲引用類型;而從引用類型中拿到被包裝的值類型數據進行拆箱。
(*)object.ReferenceEquals();//用來判斷兩個對象是不是同一個對象
Console.WriteLine(object.ReferenceEquals(3,3));//由於兩個3被裝到了兩個箱子中,因此是false
Equals ==的關係