面試考核的核心永遠是**基礎理論扎不扎實**。整理 13 題高頻 .NET/C# 基礎題目與標準答案,適合面試前快速複習與查漏補缺。
封裝、繼承、多態
| 操作 | 說明 | 記憶體行為 |
|---|---|---|
| 裝箱 | 值型別 → 參考型別 (object/介面) | 堆疊 → 託管堆配置、複製值 |
| 拆箱 | 參考型別 → 值型別 (需型別匹配) | 堆 → 堆疊,型別檢查 + 複製值 |
⚠️ 頻繁裝箱拆箱會增加 GC 壓力與效能損失,泛型集合 (List<T>) 可避免。
可以,在專案屬性啟用「允許不安全程式碼」並使用 unsafe 關鍵字 + 指標操作。但**極少數場景**才需用到 (高效能圖像處理、互操作)。
| 特性 | 結構 | 類別 |
|---|---|---|
| 型別分類 | 值型別 | 參考型別 |
| 記憶體分配 | 堆疊 (或內嵌於物件內) | 託管堆 |
| 繼承 | 不可繼承 (隱性 sealed),可實作介面 | 支援繼承 |
| 預設建構函式 | 隱含無參建構函式 (不可自訂) | 可自訂建構函式 |
| Nullability | 預設不可為 null (除非 Nullable<T>) | 可為 null |
| 複製語意 | 值複製 (逐欄位) | 參考複製 |
建構函式 **不可繼承、不可重寫 (override)**,但**可多載 (overload)**。子類別建構函式必須透過 base() 顯式呼叫父類別建構函式。
| 類別 | 代表意義 | 處理策略 |
|---|---|---|
| Error | 系統級嚴重錯誤 (記憶體不足、堆疊溢位) | **不應捕獲**,屬於災難性故障 |
| Exception | 程式邏輯/運行時可預期的異常情況 | **應捕獲處理** (try/catch/finally) |
委托是**型別安全的函式指標**,封裝方法簽章。核心價值:
if-else/switch 分支+= 串聯多個方法)| 技術 | 核心用途 | 關鍵類別 |
|---|---|---|
| 反射 | 運行時檢查/操作型別中繼資料、動態建立實例、呼叫方法 | Assembly, Type, MethodInfo, PropertyInfo |
| 序列化 | 物件圖 → 位元組流/文字 (儲存、傳輸、遠端呼叫) | BinaryFormatter, XmlSerializer, DataContractSerializer, JsonSerializer |
| 維度 | 值型別 | 參考型別 |
|---|---|---|
| 繼承基底 | System.ValueType | System.Object |
| 儲存位置 | 堆疊 / 內嵌 | 堆 (變數存參考) |
| 存取速度 | 快 (無間接層) | 較慢 (需解參考) |
| 記憶體回收 | 自動 (離開作用域) | GC 追蹤回收 |
| 指派語意 | 複製值 | 複製參考 |
| 預設值 | 零值 (0, false, null 等) | null |
| 層級 | 職責 | 典型技術 |
|---|---|---|
| DAL (資料存取層) | CRUD、SQL/預存程序、Entity Mapping | ADO.NET, Dapper, EF Core |
| BLL (業務邏輯層) | 業務規則、工作流、驗證、交易協調 | C# 類別、領域模型、MediatR |
| UI (表現層) | 資料呈現、使用者互動、輸入驗證 | ASP.NET Core MVC/Razor Pages/Blazor, WPF, MAUI |
**核心優勢**:高內聚低耦合、可測試性、可維護性、團隊並行開發。
SqlConnection, SqlCommand, SqlDataReader (唯讀前向), SqlDataAdapter (橋接 DataSet), DataSet (離線資料容器), DataTable.
-- 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;
using 區塊正確實作async/await, Task, ValueTask, ConfigureAwait(false))GC.KeepAlive)ConcurrentDictionary, BlockingCollection, Channel)