如何面試.NET/ASP.NET工程師?


題主應該是希望了解一些面試 http://ASP.NET 程序員的一些考察方法和方向。

如果您在搜索引擎上找過面試題的話,應該不難找到一些關於 頁面生存周期、頁面間傳值的方法、訪問修飾符的用法等「經典」的面試題。

那些都只是些面向初學者的「入門」考試「筆試」而已,完全不能稱得上是面試題。

面試與筆試相比,最大的優勢就是能通過與應試者當面交流來看出他面對問題時的反應,解決問題的思路和與人溝通的方式等。

因此,我認為面試應該與筆試加以區分。我們公司招聘工程師幾乎沒有筆試,僅在面試期間偶爾夾雜少許細節問題,以期了解應試者實踐經驗如何。

結合面試的特點,考察一些思路方面的問題(比如,如何在 Web 窗體與一般處理程序之間作出選擇),而不必糾結於語言或平台中具體的某個知識點(如 private 與 protected 的區別)。本質上,它們考察的可能都是對某一項技能的掌握程度,但前者更具有實踐意義。

根據所需人才的層次,和對方的實際情況,及其對自己的評價,合理掌握問答氣氛和聊天範圍。對應屆畢業生,宜以興趣引導、工作熱情、學習能力等方面為考察方向,並且營造友好的氣氛;而對自稱熟練、精通的應試者,則可酌情從廣而散的問話中了解對方長短處,並以專而深的方式來了解對方的能力高低,以及風格是否細緻負責。這方面的考察,請參考@走過 提到的 再談「我是怎麼招聘程序員的」(上) 一文中的論述。

附:我認為.NET 和 http://ASP.NET 開發者,應該具備以下技能:

初級:

  • 對 C#(推薦) 或 VB 語言直至與 .NET 4 (目前為止)相匹配的版本,絕大多數特性熟悉並使用過
  • 通曉 HTTP 協議的結構,及 http://ASP.NET 與 HTTP 請求、Web 頁面之間的關係
  • 能獨立運用 HTML 構建頁面,並掌握一定的 JavaScript、CSS 知識
  • 能獨立開發具有業務功能的 Web Form 或 MVC 應用程序
  • 能完成到本地 IIS 和伺服器上的發布,有 Web 安全意識

中級:

  • 熟練使用 .NET 4 及更新版本的特性,知曉不同大版本之間的差異,以及各版本平台、語言和開發工具的對應關係
  • 使用 http://ASP.NET MVC 以及 Web Form 開發項目,並了解兩種機制的異同,根據項目場景作出合適的選擇
  • 知曉 IIS 7 集成模式,並了解與經典模式的異同;熟悉 http://ASP.NET 運行機制,獨立完成模塊和處理程序的開發
  • 有系統分層的概念,能使用面向對象的方法創建模型和服務,能獨立組織出解決方案的結構
  • 運用設計工具獨立設計資料庫,運用 ORM 工具與多種數據源的交互,知曉各種數據源的大概差異
  • 至少使用過一種源代碼管理工具,參與過 2 人以上協作完成的項目

高級:

  • 至少對一種其他的伺服器開發平台(如 LAMP、Java、Python、Node.js 等)有深入的了解,並清楚其與 http://ASP.NET 之間的主要區別;明確 http://ASP.NET 在整個項目布局中所處的位置
  • 對 C# 3.0 以上版本(或 VB 對應版本)有深入研究,熟練地處理多線程開發;合理運用非同步和 COM 組件等功能解決問題
  • 深入了解 http://ASP.NET 運行機制,對應用程序域、配置、模板引擎、編譯、請求處理管線等十分了解
  • 能獨立完成 http://ASP.NET Web Form 中用戶控制項、伺服器控制項的編寫;對 http://ASP.NET MVC 中的路由機制、控制器調用方式、過濾器、模型綁定與驗證等特性十分熟悉,並能根據現有機制輕鬆完成擴展與定製
  • 能結合對 WCF 和 Web API 等技術的應用,構建分散式的系統
  • 清楚 IIS 的集成模式與經典模式、請求過濾與跟蹤、信任級別等特性與功能以及應用程序池進程數量、進程模型、回收等特性與功能對應用程序的影響
  • 對項目的性能、壓力和安全性要求有明確的認識,熟練運用 http://ASP.NET 輸出緩存、進程內或分散式數據緩存提高性能;合理配置 IIS 輸出緩存、壓縮;了解常見的 Web 攻擊方法並加以防範
  • 熟知請求和響應在各個過程的狀態,並適時完成諸如請求流預處理、攔截、緩存、統計等功能
  • 對常見設計模式和思想非常熟悉,合理在項目中加以應用;熟練運用常見的開源和第三方庫,結合項目需求,合理選用 DI、ORM 等用於提升開發效率的工具
  • 能獨立完成大型項目的架構,獨立完成系統中日誌、緩存、數據處理等基礎功能的開發計劃
  • 對整個項目資料庫設計、界面實現與優化、領域模型和數據服務、調試與測試、部署與伺服器配置均能完整掌控
  • 能完成組織和協調 5 人以上人員參與的項目的開發計劃和工作分配,把握開發進度,激勵團隊前進

當然,對於更高級的人才,上不封頂。


http://ASP.NET就問HttpHandler,HttpModule,還有如何寫非同步handler就差不多了,最好再問問和IIS集成模式,經典模式的關係。http://ASP.NET因為入門太方便,面一些razor語法,webform控制項,masterpage,route,ajax啥的基本是個人都會,面不出真正的高手。


我個人覺得不適合問一些限定好的技術點。

先讓面試者介紹一下項目經驗,從他項目裡面的實際技術入手開始問起。

比如說在http://ASP.NET項目里用過jquery,那就問一下jquery跟http://asp.net結合使用的一些技巧,什麼邏輯放到jquery里,什麼邏輯放到http://ASP.NET里。

比如說用過http://ASP.NET MVC,那就問問MVC的實現原理方面的問題。

比如說用過WPF,那就問問雙向數據更新的實現方面的問題。

額外在問一些諸如協作開發、性能優化、項目管理等方面的實際問題。

這些問題是最能了解一個技術人員的全面性的。

千萬不要準備好一些蹩腳的技術難點,企圖通過難住面試者來獲取快感,這樣的面試官是最自私的。


看過這個,很好。再談「我是怎麼招聘程序員的」(上)


要有7分的能力,吹9分的牛逼!


可以參考這個 .NET架構師和資深高級軟體工程師面試知識點細講-.NET面試題-文檔園


跟HR聊的時候放鬆一點,好好說話。

跟技術聊的時候,低調一點,共同探討。

你懂得再多,別鋒芒畢露,你懂得再多,也會遇到你不懂的,何況,人都愛面子。

你懂得不多,千萬別裝,不懂你還可以學,面試就是一次學習機會。


1. 介面不允許有靜態方法;

2. 擴展方法只能應用於類/介面的靜態方法。

以上兩點矛盾么?為什麼?


其實這些東西完全看公司那邊的情況,就是一個外包中小型公司,那面試題搞得那麼花里胡哨的也沒有用,實際開發會用到那些理解的東西嗎?反之則不同了。


演算法

Http的細節

http://Asp.net pipeline


推薦閱讀:

銷售面試情景模擬?
紐西蘭公司給辦工簽幾率有多大?
軟體開發轉運維中的疑慮?

TAG:招聘技巧 | 面試 | NET | ASPNET | 招聘 | 程序員面試 | C# | 面試問題 | ASPNET開發 |