我應該預期哪些 .NET 面試題?
作者 Aaron Cao · 更新於

請準備執行階段問題(CLR、垃圾回收、實值型別與參考型別)、語言問題(async 與 await、LINQ、泛型、記錄)、框架問題(ASP.NET Core 中介軟體與相依性注入、EF Core),以及長時間執行服務發生記憶體洩漏或 API 端點緩慢等情境題。面試官評量的是推理過程。
哪些執行階段與語言問題會揭開 .NET 面試的序幕?
面試官會從框架的起點開始:執行階段。你應該能解釋 Common Language Runtime 的作用(載入組件、即時編譯中介語言、管理記憶體),接著深入一層談垃圾回收。後續問題相當可預測:回收器為何採用分代機制、物件為何會存活並晉升到較後面的世代、大型物件堆積的用途,以及既然記憶體由系統管理,為何還需要 IDisposable 與 using。最後一題應從檔案控制代碼與連線等非受控資源來回答,因為回收器不知道如何及時釋放這些資源。
- 實值型別與參考型別。兩者各自位於何處、複製對兩者分別代表什麼,以及裝箱的成本。
- async 與 await。說明等待工作時會釋放呼叫端執行緒,而非阻塞它;為何
async void僅用於事件處理常式;以及人們警告使用.Result時所指的死結。 - LINQ。延遲執行是陷阱:
IEnumerable查詢會在列舉時執行,而不是在寫下時執行;針對資料庫提供者的查詢,也只會將提供者能理解的運算式轉換成 SQL。 - 泛型、介面與記錄。泛型條件約束、為何介面比基底類別更有利於測試,以及記錄的值相等性可帶來什麼好處。
回答每一題時,都要說明機制及一項後果。指出第零代回收成本低,是因為大多數物件很快就會消亡,這才是面試官想聽到的程度;只列出各個世代卻不解釋原因並不足夠。
ASP.NET Core 與 EF Core 題目會是什麼形式?
你很有信心撰寫控制器,卻擔心問題會集中在平時很少接觸的底層機制。這種擔心不無道理,因為框架題目正是出在這裡。以下依照常見提問順序介紹這些底層機制,以及每一題通常附帶的追問。
- 要求管線。中介軟體依註冊順序執行,每個元件自行決定是否呼叫下一個元件。追問:驗證相對於授權應放在哪裡?如果反向註冊,會發生什麼事?
- 相依性注入生命週期。Singleton 在整個應用程式期間存活,scoped 在單次要求期間存活,transient 則每次解析時建立。經典陷阱是將資料庫內容等 scoped 服務注入 singleton;請準備好解釋這為何是錯誤。
- 組態與選項。分層來源、環境覆寫,以及用於強型別設定的選項模式。
- EF Core。變更追蹤、何時應在唯讀查詢中將其關閉、N+1 問題,以及如何透過積極式載入或投影避免它;此外還包括移轉,以及在哪種情況下應坦率承認手寫查詢勝過 LINQ。
- 測試。介面與 DI 容器如何讓服務可測試,以及記憶體內提供者對真實資料庫能證明與不能證明哪些事情。
最出色的應試者會把這些概念串聯起來:在 singleton 背景服務內解析 scoped 內容並非冷知識題,而是面試官真的曾部署過的記憶體與正確性錯誤;他們想聽到你會明確建立一個範圍。
情境題會如何進行?
資深職位的多輪面試會提出一個症狀,觀察你的處理方法。典型例子是:一名應徵物流公司資深職位的後端工程師得知,某個 ASP.NET Core API 的記憶體會持續數日攀升,直到容器重新啟動。優秀的答案不會憑空猜測,而會詢問近期有哪些變更、檢查靜態快取或長期存在的事件訂閱是否擷取了物件、尋找 singleton 是否持有 scoped 服務、檢視大型物件堆積的成長情況,並在提出修正方案前取得記憶體快照。面試官評量的是調查順序。
其他常見情境包括:端點只在高負載下變慢,此時答案應從同步資料庫呼叫延伸到 async、連線集區耗盡與快取;共享集合中的競爭條件,以及並行集合與鎖定方案各自的成本;單一要求必須呼叫三個下游服務時,如何處理逾時、重試與部分失敗;以及如何在不中斷服務的情況下透過移轉新增欄位。每種情況都要先陳述限制,再選擇機制,並明確說出取捨。
若曾大聲演練並接受追問,這些題目會容易許多;模擬面試模式正是為此而設計。其他語言與職務的題庫則整理在依職務與主題分類的面試題中。
AI 面試助手能協助回答 .NET 題目嗎?
在對話式面試環節中,只要遵守明確限制,就可以。SubcueAI 的原生 macOS 與 Windows 桌面應用程式會擷取系統音訊與麥克風聲音,並在本機浮動視窗中顯示簡短的回答建議。因此,當面試官詢問為何 singleton 內的 scoped 內容會造成錯誤時,你的畫面上就會顯示相關機制,讓你能用自己的話加以解釋。瀏覽器擴充功能則適用於 Chrome 與 Edge 中的瀏覽器分頁通話,且只會擷取會議分頁的音訊。不會有機器人加入通話,也不會將任何內容注入會議頁面;設定方式請參閱教學頁面。
限制如下:監考評量、螢幕錄影、公司管理的筆記型電腦,或在他人監看下輸入 C# 的即時程式設計練習,都不在適用範圍內;而且當面試要求你撰寫程式碼時,助手的表現恰好最弱。它最擅長協助處理上述執行階段、框架與取捨問題。請先提供履歷,讓建議能反映你實際建置過的系統;該個人資料位於履歷建立工具中。