程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 二十道經典C#面試題

二十道經典C#面試題

編輯:C#入門知識

1、在下面的代碼中,如何引用命名空間fabulous中的great? 
namespace fabulous{// code in fabulous namespace}
namespace super{ namespace smashing{// great name defined }}

   答:super.smashing.great

2、字符串“supercalifragilisticexpialidocious”對於string變量是否太長?為什麼?
   答:否,在C#中,對於字符串的長度沒有限制。

3、概述反射和序列化?
   答:反射:反射提供了封裝程序集,模塊和類型對象,可以用反射動態地創建類型的實例,將類型綁定到現有對象,或者從現有對象類型裡獲取類型,然後調用類型的方法或訪問字段和屬性。
   序列化:將對象轉換為另一種媒介傳輸的格式過程。如,序列化一個對象,用Http通過internet在客戶端和服務器之間傳遞該對象,在另一端用反序列化從該流中重新得到對象。 

4、C#中的委托是什麼?事件是不是一種委托呢?
   答:委托是一種安全的類似與函數指針,但是它比指針要安全的多,它可以把方法作為一個參數傳遞給另一個方法,可以理解為指向函數的引用。事件是一種消息機制,它是一種委托,委托不帶方法體。

5、C#中索引器實現過程,是否只能根據數字索引? 
   答:不是的,可以是任意類型。
6、請你說說.NET中類和結構的區別?
   答:結構和類具有相似的語法,但結構受到的限制比類要多。結構不能申明有默認的構造函數,為結構的副本是又編譯器創建和銷毀的,所以不需要默認的構造函數和析構函數。結構是值類型,所以對結構變量所做的改變不會影響其的原值,而類是應用類型,改變其變量的值會改變其原值。申明結構用Struck關鍵字,申明類用class關鍵字,向方法傳遞結構是時是通過值傳遞的,而不是通過引用。與類不同,結構的實例化可以不使用New關鍵字。類可以實現接口。

7、如果有兩個整數存儲在變量var1和var2中,什麼樣的布爾測試可以查看它們其中一個是否大於10?
   答:(var1 > 10)^(var2 > 10)。

8、在c#中,using和new這兩個關鍵字有什麼意義?
   答:using 引入名稱空間或者使用非托管資源。
   new 新建實例或者隱藏父類方法。

9、const和readonly有什麼區別?
   答:const關鍵字用來聲明編譯時常量。
   readonly用來聲明運行時常量。

10、System.String 和System.StringBuilder有什麼區別?
   答:System.String是不可變的字符串。System.StringBuilder存放了一個可變的字符串,並提供一些對這個字符串修改的方法。
11、請在C#中舉例說明new關鍵字可用於那些方面?
   答:在C#中,new關鍵字可用作運算符或修飾符。作為運算符用於在堆上創建對象和調用構造函數。作為修飾符用於隱藏基類成員的繼承成員。

12、sealed關鍵字的作用是什麼?什麼情況需要使用sealed關鍵字?
   答:sealed修飾符主要用於防止非有意的派生,但是它還能促使某些運行時優化。具體說來,由於密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數成員的調用可以轉換為非虛擬調用來處理。

13、在C#中,哪些關鍵字可以用於版本控制?
   答:override關鍵字和new關鍵字均可用於版本控制。
   在C#中,默認情況下方法不是虛擬的。若要使方法成為虛擬方法,必須在基類的方法聲明中使用virtual修飾符。然後,派生類可以使用override關鍵字重寫基類中的虛擬方法,或使用new關鍵字隱藏基類中的虛擬方法。如果override關鍵字和new關鍵字均未指定,編譯器將發出警告,並且派生類中的方法將隱藏基類中的方法。 

14、分別寫出下列語句執行的結果。
  (1)Console.WriteLine("{0}--{0:p}good",12.34F); 
  (2)Console.WriteLine("{0}--{0:####}good",0); 
  (3)Console.WriteLine("{0}--{0:00000}good",456); 
  答:執行結果分別為: 
  (1)12.34--1,234.00%good 
  (2)0--good 
  (3)456--00456good 

15、C#中的數組類型有何特點?
   答:C#中的數組類型的特點包括:
 (1) 數組一般用於存儲同一種類型的數據,包括Object類型。
 (2) 數組是一種引用類型,而不是值類型。
 (3) C#中除了可以有一維數組、多維數組外,還有交錯型數組。

16、錯誤和異常有什麼區別,為什麼要進行異常處理,用於異常處理的語句有哪些?
   答:錯誤是指在執行代碼過程中發生的事件,它中斷或干擾代碼的正常流程並創建異常對象。當錯誤中斷流程時,該程序將嘗試尋找異常處理程序(一段告訴程序如何對錯誤做出響應的代碼),以幫助程序恢復流程。換句話說,錯誤是一個事件,而異常是該事件創建的對象。
  當使用短語“產生異常”時,表示存在問題的方法發生錯誤,並創建異常對象(包含該錯誤的信息及發生的時間和位置)來響應該錯誤。導致出現錯誤和隨後異常的因素包括用戶錯誤、資源失敗和編程邏輯失敗。這些錯誤與代碼實現特定任務的方法有關,而與該任務的目的無關。
  如果不進行異常處理,即不對錯誤做出響應,程序的健壯性就會大打折扣,甚至無法保證正常運行,所以必須要進行異常處理。
  用於異常處理的語句有:try-catch語句、try-catch-finally語句、throw語句。

17、C#中不同整型之間進行轉換的原則是什麼?
   答:在整型之間進行轉換時,小范圍類型可以隱式轉換為大范圍類型,但大范圍類型轉換為小范圍類型時需要使用顯式轉換。 
18、簡述裝箱和拆箱的過程。   
   答:裝箱是將值類型隱式地轉換為object類型或者轉換為由該值類型實現了的接口類型。裝箱一個數值會為其分配一個對象實例,並把該數值拷貝到新對象中。拆箱是顯式地把object類型轉換成值類型,或者把值類型實現了的接口類型轉換成該值類型。 

19、什麼是命名空間?命名空間和類庫的關系是什麼?  
   答:名稱空間是對類的一種邏輯上的分組,即將類按照某種關系或聯系劃分到不同的名稱空間下。
  名稱空間又可以包含其它的名稱空間,例如System.Windows.Forms,是指System名稱空間下有Windows名稱空間,Windows名稱空間下有Forms名稱空間。 

20、可以用C#編寫哪些類型的應用程序?
   答:控制台應用程序,Windows應用程序,水晶報表應用程序,ASP.NET Web應用程序,ASP.NET Web服務應用程序,ASP.NET 水晶報表Web應用程序和智能設備應用程序等。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved