C# 面試題及答案31-60
2018/8/4
c# 面試系列續
31) “System.Array.Clone()” 和 “System.Array.CopyTo()” 有何不同?
1、“CopyTo()” 從一個數組復制元素到另一個數組中去。
2、“Clone()” 創建一個新數組,包含源數組的所有元素。
32) 可以循環引用嗎?
不可以循環引用。這種情況下,循環引用導致鎖形成的條件,造成資源不可用。
33) C#中有哪些常見異常?
1、NullReferenceException
2、ArgumentNullException
3、DivideByZeroException
4、IndexOutOfRangeException
5、InvalidOperationException
6、StackOverflowException
34) 什麽是泛型?
泛型允許靈活的創建類型,處理一種或者多種類型狀態。有以下優勢:使代碼復用,源代碼保護,類型安全,更清晰的代碼,更佳的性能。
35) 什麽是對象池?
對象池用於跟蹤代碼中使用的對象,對象池能減少對象的創建開銷。同理還存在:字符串池、線程池、數據庫連接池等。
36) 什麽是委托?
將函數作為參數傳遞給方法。委托是類型安全的,允許順序調用多個方法,支持調用靜態方法和實例方法。
37) 委托類型有哪些?
1、單委托 Single Delegate
2、委托鏈 Multicast Delegate
3、泛型委托 Generic Delegate
38) 泛型委托有哪三種類型?
1、Func 目前.NET Framework提供了17個
2、Action 目前.NET Framework提供了17個
3、Predicate
號外:事實上,僅僅在MSCorLib.dll中,就有接近50個委托類型
39) events 和 elegates 有何不同?
事件是一種特殊的委托。主要不同是事件提供一個對代理的封裝。
40) 可以使用委托進行異步調用嗎?
可以。 41) C#中委托的代表有哪些?1、回調機制 Callback Mechanism
2、異步處理 Asynchronous Processing
3、抽象和封裝方法 Abstract and Encapsulate method
4、多播 Multicasting
42) 什麽是可空類型? 可以將值類型表示為null。 <值類型變量永遠不會為null,它總是包含值類型本身的值> 例如數據庫字段映射到c#類型時,數據庫字段可以允許為空。 號外:int? value=null; 43) 什麽是空接合操作符< Nullable Coalescing Operator>“??” ? “??”操作符獲取兩個操作數。假設坐標操作數不為空,就返回這個操作數,否則就返回右邊的操作數。44) “as” 和 “is” 操作符有何不同?
1、“as” 核實是否兼容某種類型,兼容則返回同一對象的非null引用,否則返回null。
2、“is” 用於檢查對象類型是否兼容於指定類型。 不會拋出異常。
45) C# 代碼是托管代碼還是非托管代碼?
C# 代碼是托管代碼。編譯器將代碼編譯成中間語言。
46) “lock” 語法的作用?
“lock”確保線程之間獨享一段資源,會使線程等待,知道該資源被釋放。常用於多線程編程,共享資源或者獨占資源會降低應用程序效率。
47) 什麽是 Hashtable ?
用於鍵值對存儲,鍵是唯一。使用鍵訪問集合中元素。It is used to store the key/value pairs based on hash code of the key. Key will be used to access the element in the collection. For example,
48) 什麽是枚舉?
“enum”關鍵字用於聲明枚舉,枚舉有常量組成,有枚舉器調用。枚舉是值類型,不能繼承。
49) “continue” 和 “break” 有何不同?
1、“continue” 用於跳過當前循環,進入下一次循環。
2、“break”用於跳出循環體。
50) 什麽是 boxing和unboxing?
1、“boxing” 將值類型轉換為引用類型。
2、“unboxing”將引用類型轉換為值類型。
號外:裝箱拆箱的過程會造成性能損失。
51) 什麽是部分類<partial class>?部分類允許同一個類的代碼文件分散在多個文件中。使用“partial” 關鍵字。
52) 什麽是匿名類型<Anonymous type>? c# 3.0 加入的新特性。允許在編譯時創建對象。 號外:其實是編譯器幫我們創建了一些工作,屬於語法糖的一種具體體現形式。 53) c#編譯器名字是?CSC
54) C#中集合類型有哪些?
1、ArrayList
2、Stack
3、Queue
4、SortedList
5、HashTable
6、Bit Array
55) 什麽是線程?
進程是程序的一次執行,一個進程包含一個或者多個線程,線程是調度和資源分配的基本單位。一個線程有三種狀態,阻塞、運行、就緒。
56) 列舉Thread class的屬性和方法?
CurrentCulture、CurrentThread、CurrentContext、IsAlive、IsThreadPoolThread、IsBackground、Priority
57) Access Modifiers 有哪些?
1、public 任何地方可以訪問
2、private 類自己能訪問
3、protected 類和子類能訪問
4、 internal 當前項目集可訪問
5、protected internal 當前項目集下的類和子類
58) 什麽是數據封裝<data Encapsulation> ?
給最終客戶端隱藏重要字段的過程。
59) C# 可以多繼承嗎?
一個類只能繼承一個父類,可以繼承多個接口。
60) 什麽是多態<polymorphism> ?
編程語言根據不同的數據類型以不同的方式處理對象的能力稱之為多態。例如:編譯時多態 重載<Overloading>;運行時多態重寫<Overriding>。
至今不敢妄言精通c#,c#某些高級特性還不是特別了解。繼續。。。
C# 面試題及答案31-60