1. 程式人生 > >C#經典面試題及答案

C#經典面試題及答案

list add 字段 有一個 副本 udp 隔離性 垃圾回收 readonly 字節

1.請你說說.net 中類和結構的區別?

答:結構和類具有大體的語法,但是結構受到的限制比類多。結構不能聲明默認的的構造函數,為結構的副本是編譯器創建和銷毀的,所以不需要默認的構造函數和析構函數,結構是值類型。所以對結構變量所做的改變不會影響其的原值,而類是應用類型。改變其變量的值會改變其原值,聲明結構用關鍵字struct關鍵字,聲明類用class關鍵字,向方法傳遞結構是通過值傳遞的,而不是通過引用。與類不同,結構的實例化可以不使用New關鍵字。類可以實現接口。

2.死鎖的必要條件?怎麽克服?

答:系統資源不足,進程的推進的順序不合適,資源分配不當,一個資源每次只能被一個進程使用,一個資源請求資源時,而此時這個資源已經阻塞,對已經獲得的資源不放,進程獲得資源時,未能使用完前,不能強行剝奪。

3.談談對.net core的理解?

,net core 是.net framework的新一代版本。是微軟開發啊的第一個官方版本。具有跨平臺(windows.Mac osx linux)能力的應用程序開發框架(Application Framework),未來也將會支持FreeBSD與Alpine平臺。也是微軟一開始發展就開源的平臺,它經常也會拿來和現有的開源.net 平臺Mono比較。.net core 采用包化(Package)的管理方式。應用程序只需要獲取需要的組件即可,同時也有獨立的版本線。不再硬性要求應用程序跟隨主線版本。

4.接口是否可以繼承接口?抽象類是否可以實現接口?抽象類是否可以繼承實體類?

接口可以繼承接口,抽象類可以實現接口,抽象類可以繼承實體類,但有個條件,條件是,實體類必須要有可明確的構造函數.

5.構造器Constructor是否可以被繼承。是否可以被Overfide ?

答:構造器Constructor不可以被繼承,因此不能被重寫Overriding,但是可以被重載Overloading

6.當一個線程進入一個對象的方法後。其他線程是否可以進入該對象的方法?

答:不可以。一個對象的方法只能由一個線程來訪問。

7.Error和Exception的區別?

答:erro表示恢復不是不可能,但是很困難,exception表示一種實際或者現實問題,它表示程序運行正常不可以發生的。

8.C#委托是什麽。事件是不是一種委托?

答:委托是一種安全的類似與函數指針,但是它比指針要安全的多,它可以吧方法作為委托傳遞給另外一個方法,可以理解為指向函數的引用。事件是一種消息機制。它是一種委托,委托不帶方法體。

9.fianl finally finallize 的區別?

final用來申明屬性,方法和類。表示屬性不可變。方法不可以被覆蓋,類不可以被繼承。

finally是異常處理語句結構中。表示總是執行的部分。

Finallize表示是object類的一個方法。在垃圾回收機制中執行的時候會被調用被回收對象的方法

10.HashMap和hashtable的區別?

答:HashMap是Hashtable 的輕量級實現。非線程安全的實現他們都實現了map接口,主要區別是HashMap鍵值可以為null,效率可以高於Hashtable.

11.Override和Overload的區別。

答:Override是重寫的意思,它表示重寫基類的方法。而且方法的名稱。返回類型。參數類型。參數個數,要與基類相同,Overload是重載的意思,它也表示重寫基類的方法。但是只要方法名相同。別的可以不同。

14.在一個B/S結構中需要傳遞變量值時,不能使用session,cookie,application.你有幾種方法。

答:this.server. Transfer. Querystring

15:C#索引器實現過程。是否只能根據數字索引?

答:不是的,可以是任意類型。

16.New 有幾種用法?

答:有三種:第一種。實例化如:New Class()

第二種:public new隱藏基類的方法

第三種:在泛型類申明中的任何類型參數都必須有公共的無參數構造函數。

17如何把Array復制到Arraylist中?

Foreach(object o in Array),ArrayList Add(0)等有好多種方法 。

18.概述反射個序列化

答:反射,反射提供了封裝的程序集。模塊和類型對象,可以用反射動態地創建類型的實例。將類型綁定到現有對象,或者從現有對象類型裏獲取類型。然後調用類型的方法或訪問字段和屬性。

序列化:將對象裝換為另外一種,媒介傳輸的格式過程,如:序列化一個對象。用Http通過Internet在客戶端和服務器之間傳遞對象,在另外一端用反序列化從該流程中重新獲得到對象。

19.Const 和ReadOnly的區別

答:Const 用來申明編程時常量。ReadOnly用來申明運行時的常量。

20.UDP和TCP連接有何種異同?

答:TCP是傳輸控制協議。提供的是面向連接的。是可靠的,字節流服務,當用戶和服務器彼此進行數據交互的時候,必須在他們數據交互前進行TCP連接之後才能傳輸數據,TCP提供超時重撥。檢驗數據功能。

UDP是用戶數據報協議。是一個簡單的面向數據報的傳輸協議。是不可靠的連接。

21.進程和線程分別該怎麽理解?

進程是比線程大的運行單元。都由操作系統所體會的系統運行單元,一個程序中至少要有一個進程,至少有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內存單元。線程是共享內存。從而極大的提高了程序的運行效率。

22.ASP.Net頁面傳值的幾種方式?

QueryString session cookie application server Transfer respose redictor

23.應用程序域,什麽是托管代碼?什麽是強類型系統。什麽是裝箱和拆箱,什麽是重載?CTS,CLS,CLR又是什麽?

答:應用程序域:就是為安全性。可靠性。隔離性。和版本控制。及卸載程序提供隔離邊界。它通常由運行庫宿主創建,應用程序域提供了更加安全用途更廣的處理單元,托管代碼:使用CLR編譯語言編輯器開發編寫的代碼就是托管代碼。

裝箱:把值類型轉換為引用類型的過程。是隱式的。相反過程就是拆箱。是顯式

CTS:公共類型系統。CLS是公共語言規範。CLR公共語言運行庫。強類型系統。每個變量和對象都必須具有申明類型。

24值類型和引用類型的區別:

答:值類型的值是存放在堆棧中的。改變其值。不改變變量原有的值。而引用類型的值是存放在棧中的。其引用的地址是存放在堆棧中的,改變其值也就改變類變量原有的值。值類型不允許包含null值。然而可空類型可以將null賦值給值類型。

25.用一句話對委托做一個概括?

答:委托可以將多個不同的方法綁定到同一個委托變量中。當調用此變量時()可以依次調用所有綁定的方法。

C#經典面試題及答案