如何面试.NET/ASP.NET工程师?
2018-2-28 更新:距離這篇回答發布已經五年過去了,最近還經常受到關注。技術本身在發展,這令我感到有必要來更新一下,希望對新看到的朋友有用。
對于服務器上的 .NET 技術,最新的發展當然是 .NET Core 了,作為全新的 .NET 技術,它繼承了舊的 .NET 技術中的優秀特性,剔除了一些廣為詬病的遺留問題,以跨平臺和開源的新面貌發布了出來。
因此,對 .NET Core 的掌握是一個新時代的 .NET 開發者應該具備的技能。在之前的答案基礎上,補充這些新的技能衡量標準:
初級
能在 Windows 上使用 Visual Studio 開發基于 NETStandard、NETCoreApp 的應用程序
能夠運用 Visual Studio 中的包管理工具管理程序中的依賴
能夠使用 Kestrel 服務器開發自宿主 ASP.NET Core 程序
理解 MVC 的概念,以及 MVC 網站的典型代碼結構,熟悉 cshtml 語法
借助 ASP.NET Core 內置的登錄功能、日志工具和 EF Core 等完成常規業務功能的開發
運用 ASP.NET Core 內置的功能保護網站的安全
中級
理解 NETStandard 及 NETCoreApp 與傳統 .NET 運行時的區別與聯系
熟練使用 dotnet 命令行工具完成應用程序的創建、管理包依賴和打包
至少熟練運用一種非 Windows + Visual Studio 的開發環境(如 VSCode、Sublime Text)完成對 .NET Core 應用的開發和調試
理解 ASP.NET Core 的管道系統;能夠獨立基于設計好的多層 ASP.NET Core 應用繼續開發;在應用程序中使用第三方組件替換 ASP.NET Core 內置組件(例如,日志工具,依賴注入工具等);遵循給定的設計思路實現復雜的業務需求
熟練使用至少一種源代碼管理工具,了解基于 .NET Core 的單元測試方法,使用持續集成工具保障代碼質量
至少熟悉一種熱門的前端框架的工作機制(Angular、React 或 Vue 等)
熟練開發基于 API 的前后端分離的后端 API,理解對 API 的常規鑒權方法
能夠在 Linux 和 Windows 服務器上部署基于 Kestrel 的應用程序(基于 IIS 模塊或 nginx 的反向代理等)
高級
使用 dotnet 命令行工具完成創建應用程序、管理包依賴和單元測試,并能拓展新的工具命令
能夠運用 TDD 和重構等典型的最佳實踐快速完成代碼開發,編寫優美的代碼
能夠獨立設計分布式、多層無狀態 http://ASP.NET Core 應用程序
能夠獨立地將 ASP.NET Core 應用程序部署到服務器集群上,提供高性能、高可用的 Web 應用程序服務
掌握大量調試 .NET Core 應用程序的方法,高效地解決生產環境服務器上發生的各種問題
詳細地了解源代碼管理工具中的各種技能,支持團隊完成代碼審查、分支管理和產品發布等流程
掌握典型的持續集成和持續交付概念和常規工具的使用方法,能夠運用腳本等方法對開發流程、持續集成和部署等步驟進行自動化
積極了解其他社區的典型實踐與工具,并擇優吸收運用到團隊中,以改善產品質量、提升開發效率等
=========== 2013年的原回答如下 ============
題主應該是希望了解一些面試 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 人以上人員參與的項目的開發計劃和工作分配,把握開發進度,激勵團隊前進
當然,對于更高級的人才,上不封頂。
原文:https://www.zhihu.com/question/20045362/answer/18131746
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的如何面试.NET/ASP.NET工程师?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core Razor 页
- 下一篇: Asp.Net Core 2.1+的视图