c#面試問題及答案
面試除了基本資訊之外還會問一些與崗位相關的問題,接下來是小編給大家蒐集的c#面試問題及答案,希望幫助到大家!
1、什麼是裝箱和拆箱?
答:裝箱就是把值型別轉成引用型別:裝箱就是把值型別(包括int與結構這樣的內建型別)轉換為object型別,拆箱就是把引用型別轉換為值型別,裝箱與拆箱實現了兩種型別的互換。
2、物件和類的區別是什麼?
答:“類”(Class)具有相同屬性和方法的一組物件的集合 . 類是抽象的概念,僅僅是模板物件是一個你能夠看得到、摸得著的具體實體
3、什麼是類的方法?
答:類是由一組具有相同屬性和共同行為的實體抽象而來,物件執行的操作透過編寫類的方法來實現。可見,類的方法是一個功能模組,作用是“做一件事”。
4、什麼是區域性變數,什麼是成員變數?
答:區域性變數是指一個方法中定義的變數;成員變數是指在類範圍裡定義的變數,也就是之前講過的屬性。
5、靜態成員和例項成員的區別?
答:使用static修飾的成員稱為靜態成員,使用例項物件呼叫的成員稱為例項成員
6、概述序列化
答: 序列化是將物件的狀態儲存到特定儲存介質中的過程。反序列化則是從特定儲存介質中的資料重新構建物件的過程
7、類成員有幾種可訪問形式?簡述可訪問形式修飾符的訪問許可權。
答:可訪問形式有 private、 protected、 public、 internal;
public(公共的) 完全公開,訪問不受限制。
protected(保護的) 訪問僅限於包含類或從包含類派生的型別。該類內部和繼承類中可以訪問。
internal(內部的) 訪問僅限於當前程式集。在同一名稱空間內可以訪問。
protected internal(內部保護的) 訪問僅限於從包含類派生的當前程式集或型別。
private(私有的) 訪問僅限於包含型別。在類的內部才可以訪問。
8、繼承的特點有哪些?
答:C# 繼承透過 : 關鍵字來實現,實現繼承的類被稱為子類,被繼承的類被稱為父類,有的也稱為基類、超類。父類和子類的關係是is-a的關係,即子類is-a父類。
9、傳入某個屬性的set方法的隱含引數的名稱是什麼?
答: 隱含引數的名稱是value,它的型別和屬性所聲名的型別相同。
10、如何在C#中實現繼承?
答: 在類名後加上一個冒號,再加上基類的名稱。
11、物件能否呼叫靜態方法 ?
答:不能。對於類內部定義的靜態變數及靜態方法,該類的物件均不能呼叫。
12、C#支援多重繼承麼?
答:類之間不支援多重繼承,介面之間支援。類對介面叫做實現,不叫繼承。
13、被protected修飾的屬性/方法在何處可以訪問?
答:在繼承或間接繼承與這個類的子類中可以訪問。
14、私有成員會被繼承麼?
答:會,但是不能被訪問。所以看上去他們似乎是不能被繼承的,但實際上確實被繼承了。
15、介面和抽象類具有什麼區別?
答:含有abstract修飾符的class即為抽象類,abstract 類不能建立的例項物件。含有abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽象的。abstract class類中定義抽象方法必須在具體子類中實現,所以,不能有抽象構造方法或抽象靜態方法。如果的子類沒有實現抽象父類中的所有抽象方法,那麼子類也必須定義為abstract型別。
介面(interface)可以說成是抽象類的一種特例,介面中的所有方法都必須是抽象的'。介面中的方法定義預設為public abstract型別
下面比較一下兩者的語法區別:
抽象類可以有構造方法,介面中不能有構造方法。
抽象類中可以包含非抽象的普通方法,介面中的所有方法必須都是抽象的,不能有非抽象的普通方法。
抽象類中抽象方法可以指定為public,介面中抽象方法不能指定任何修飾符,預設就是public
一個類可以實現多個介面,但只能繼承一個抽象類。
16、C#中所有物件共同的基類是什麼?
答:System.Object.
17、在方法定義中,virtual有什麼含意?
答:被virtual修飾的方法可以被子類覆寫。
18、能夠將非靜態的方法覆寫成靜態方法麼?
答:不能,覆寫方法的簽名必須與被覆寫方法的簽名保持一致,除了將virtual改為override。答案並沒有大錯,只是靜態方法根本無override概念,屬於引起困惑的問題 。
19、可以覆寫私有的虛方法麼?
答:不可以,甚至子類中無法訪問父類中的私有方法。
20、能夠阻止某一個類被其他類繼承麼?
答:可以,使用關鍵字sealed。 還可以將所有建構函式的訪問級別都設為Private或子類無法訪問到的其他級別(Assembly外的iternal),也有同樣的效果。