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

.NET 面試核心基礎知識匯總:從三大特性到三層架構

     編輯:關於ASP.NET

面試考核的核心永遠是**基礎理論扎不扎實**。整理 13 題高頻 .NET/C# 基礎題目與標準答案,適合面試前快速複習與查漏補缺。

1. 面向物件三大特性

封裝、繼承、多態

  • 封裝:隱藏內部實作,暴露公共介面
  • 繼承:子類別復用/擴展父類別功能
  • 多態:同一介面不同實作 (虛擬方法/介面/抽象類別)

2. 裝箱與拆箱

操作說明記憶體行為
裝箱值型別 → 參考型別 (object/介面)堆疊 → 託管堆配置、複製值
拆箱參考型別 → 值型別 (需型別匹配)堆 → 堆疊,型別檢查 + 複製值

⚠️ 頻繁裝箱拆箱會增加 GC 壓力與效能損失,泛型集合 (List<T>) 可避免。

3. C# 能否直接操作記憶體?

可以,在專案屬性啟用「允許不安全程式碼」並使用 unsafe 關鍵字 + 指標操作。但**極少數場景**才需用到 (高效能圖像處理、互操作)。

4. 結構 vs 類別

特性結構類別
型別分類值型別參考型別
記憶體分配堆疊 (或內嵌於物件內)託管堆
繼承不可繼承 (隱性 sealed),可實作介面支援繼承
預設建構函式隱含無參建構函式 (不可自訂)可自訂建構函式
Nullability預設不可為 null (除非 Nullable<T>)可為 null
複製語意值複製 (逐欄位)參考複製

5. 介面/抽象類別繼承規則

  • 介面 **可繼承** 介面 (多重繼承)
  • 抽象類別 **可實作** 介面
  • 抽象類別 **可繼承** 實體類別 (但實體類別必須有公共無參建構函式)

6. 建構函式繼承與重寫

建構函式 **不可繼承、不可重寫 (override)**,但**可多載 (overload)**。子類別建構函式必須透過 base() 顯式呼叫父類別建構函式。

7. Error vs Exception

類別代表意義處理策略
Error系統級嚴重錯誤 (記憶體不足、堆疊溢位)**不應捕獲**,屬於災難性故障
Exception程式邏輯/運行時可預期的異常情況**應捕獲處理** (try/catch/finally)

8. 委托理解

委托是**型別安全的函式指標**,封裝方法簽章。核心價值:

  • 將方法作為參數傳遞 (回調、事件、策略模式)
  • 避免大量 if-else/switch 分支
  • 支援多播 (+= 串聯多個方法)
  • 事件是委托的特殊受限形式 (僅能在類別內部觸發)

9. 反射與序列化

技術核心用途關鍵類別
反射運行時檢查/操作型別中繼資料、動態建立實例、呼叫方法Assembly, Type, MethodInfo, PropertyInfo
序列化物件圖 → 位元組流/文字 (儲存、傳輸、遠端呼叫)BinaryFormatter, XmlSerializer, DataContractSerializer, JsonSerializer

10. 值型別 vs 參考型別深度對比

維度值型別參考型別
繼承基底System.ValueTypeSystem.Object
儲存位置堆疊 / 內嵌堆 (變數存參考)
存取速度快 (無間接層)較慢 (需解參考)
記憶體回收自動 (離開作用域)GC 追蹤回收
指派語意複製值複製參考
預設值零值 (0, false, null 等)null

11. 三層架構認知

層級職責典型技術
DAL (資料存取層)CRUD、SQL/預存程序、Entity MappingADO.NET, Dapper, EF Core
BLL (業務邏輯層)業務規則、工作流、驗證、交易協調C# 類別、領域模型、MediatR
UI (表現層)資料呈現、使用者互動、輸入驗證ASP.NET Core MVC/Razor Pages/Blazor, WPF, MAUI

**核心優勢**:高內聚低耦合、可測試性、可維護性、團隊並行開發。

12. ADO.NET 核心類別

SqlConnection, SqlCommand, SqlDataReader (唯讀前向), SqlDataAdapter (橋接 DataSet), DataSet (離線資料容器), DataTable.

13. SQL Server 分頁查詢 (含自增 ID)

-- SQL Server 2012+ 標準語法 (推薦)
SELECT * FROM T
ORDER BY ID
OFFSET 30 ROWS FETCH NEXT 10 ROWS ONLY;

-- 通用相容寫法 (ROW_NUMBER)
SELECT * FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNum, * FROM T
) AS t WHERE RowNum BETWEEN 31 AND 40;

補充:面試加分項

  • **IDisposable 模式** 與 using 區塊正確實作
  • **非同步程式設計** (async/await, Task, ValueTask, ConfigureAwait(false))
  • **GC 運作機制** (代、大型物件堆、最終化佇列、GC.KeepAlive)
  • **封鎖集合與並行資料結構** (ConcurrentDictionary, BlockingCollection, Channel)
  • **Span<T> / Memory<T>** 零複製切片與高效能緩衝區處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved