首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 程式設計師面試必備 20 題基礎觀念與精準答案

     編輯:關於C語言

前言

若履歷寫著「熟悉 C#」,以下 20 題核心觀念必須秒答。每題附關鍵字與延伸思考,助你快速檢視盲點。

  1. 屬性 set 存取子的隱含參數名稱?

    value,型別與屬性宣告型別相同。

  2. C# 如何實作繼承?

    類別名稱後加冒號 + 基底類別名稱:class Child : Base。

  3. C# 支援多重繼承嗎?

    類別不支援,但介面支援多重實作。類別對介面稱為「實作」而非繼承。

  4. protected 成員存取範圍?

    僅限衍生類別(直接或間接繼承)內部存取。

  5. 私有成員會被繼承嗎?

    會繼承但不可存取。記憶體配置包含私有欄位,但編譯器封鎖衍生類別存取。

  6. protected internal 意義?

    同組件內 = public,跨組件 = protected。等價於 protected ∪ internal。

  7. 自訂有參數建構子後,仍要保留無參數建構子,需寫幾個?

    兩個。一旦自訂任何建構子,編譯器不再產生預設無參數建構子,必須手寫 public MyClass() {}。

  8. 所有物件共同基底類別?

    System.Object。

  9. 多載 vs 覆寫 差異?

    多載:同名稱、不同參數清單(型別/個數/順序)。覆寫:衍生類別改寫虛擬方法行為,簽章必須完全一致。

  10. virtual 關鍵字含義?

    允許衍生類別使用 override 覆寫該方法。

  11. 能將非靜態虛擬方法覆寫為靜態嗎?

    不能。覆寫方法簽章必須一致,static 修飾詞不屬於簽章一部分。

  12. 能覆寫私有虛擬方法嗎?

    不能。私有成員對衍生類別不可見,自然無法覆寫。

  13. 如何阻止類別被繼承?

    加 sealed 關鍵字:public sealed class FinalClass。

  14. 允許類別被繼承,但禁止特定方法被覆寫?

    類別標 public,方法標 sealed override(該方法必須先在基底類別為 virtual)。

  15. 什麼是抽象類別?

    不可實例化、可包含抽象方法(無實作)與具體方法。衍生類別必須實作所有抽象方法才能實例化。

  16. 何時必須宣告為抽象類別?

    1. 含抽象方法。2. 未完全實作基底抽象方法。

  17. 介面定義?

    僅包含 public abstract 方法(隱含)的契約,所有方法皆需由實作類別實作。

  18. 為何介面方法不能指定存取修飾詞?

    介面定義「契約」,預設皆為 public。private/protected 違背契約公開性質。

  19. 可實作多個介面嗎?同名方法怎麼辦?

    可。同名方法可用顯式介面實作區分:void IFaceA.Method()、void IFaceB.Method()。

  20. 介面 vs 抽象類別 差異?

    介面:全抽象、無欄位、無建構子、多重實作。抽象類別:可有實作/欄位/建構子、單一繼承、可定義存取修飾詞。

  21. 如何區別多載方法?

    參數型別不同、個數不同、順序不同。回傳型別、參數名稱、修飾詞不參與多載解析。

  22. const vs readonly 差異?

    const:編譯期常數、隱含 static、可用於區域變數。readonly:執行期常數(initonly)、屬於實例/靜態欄位、可在建構子指派。

  23. String vs StringBuilder 差異?

    String:不可變,每次操作產生新物件。StringBuilder:可變緩衝區,提供 Append/Remove 等原地修改方法,適合大量字串操作。

延伸建議

  • 掌握 CLR 型別系統(值型別/參考型別/拆箱裝箱)。
  • 熟悉 泛型約束、委派/事件、非同步/await、LINQ 延遲執行。
  • 實作題練習:手寫單例、工廠、觀察者模式;解釋 IDisposable 模式與 using。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved