一面是線上面試,主管針對過去的工作經驗和專案內容詢問技術細節
問的內容很深奧,很多都是第一次聽過或是沒有接觸到的內容
面試時間大約一小時左右,跟HR和主管面試完後結束
二面是實體面試,是主管和一位資深同仁
主管會出一提LeetCode題目寫白板,寫完之後請你用符合O(1)的方式寫
寫完白板題後一樣會針對過去的工作經驗來延伸問題
面試問答
什麼是泛型
什麼是泛型及其好處?如何限制泛型的型別(如繼承特定父類別)
此外,會考查協變與逆變的概念(例如 List<A> 是否能加入繼承自 A 的 B 物件),以及泛型在編譯成 IL Code 與機器碼時的底層記憶體運作方式
生命週期與依賴注入 (DI)
比較 Scoped、Transient 與 Singleton。會針對具體情境提問,例如 Entity Framework 的 DbContext 應使用哪種生命週期(Scoped),以及全域基礎設施(如 Redis 或 Log 服務)應使用哪種(Singleton)
執行緒安全 (Thread Safety)
在單一實例 (Single Instance) 中,如何防止多執行緒同時觸發建構子(例如使用 Lock 機制);在多實例的微服務環境下,則會問及**分散式鎖(如 Redis Redlock)**的應用
ThreadPool 設置
探討 .NET 應用程式的 Min/Max Threads 設定機制。若未設定,系統預設執行緒數量會與 CPU 核心數呈正相關;若請求量超過上限,會導致請求卡在 Pending 佇列,最終造成 500 錯誤 (Timeout)
DB 交易 (Transaction) 與鎖定機制
除了確保資料一致性(成功或 Rollback),面試官會追問在執行更新(Update)時,資料庫底層是如何判斷並鎖定資料的(例如 Row lock、Page lock 或 Table lock),以確認候選人對高併發下資料庫防堵死鎖 (Deadlock) 的理解
Redis 原子性 (Atomic) 操作
當兩個相同的 Key 同時間並發寫入 Redis 時,Redis 底層是如何確保資料更新的原子性?這是設計分散式鎖的核心基礎
Big Key 議題與 TTL
是否設置 TTL (Time to Live) 來控管記憶體大小,並考查是否有處理過 Big Key(單一 Key 容納過大 Value)導致 Redis 阻塞的經驗
面試建議
整體面試體驗輕鬆愉快,面試主管能力非常好
面試時不是死板板的一問一答,比較像是跟你討論答案的內容是否正確或是有什麼問題
但面試難度很高,我面的非資深缺但問的問題很多都是沒有遇過的場景或是問題
蠻有挑戰性的,雖然面試沒上,但學習到很多