如何面试.NET/ASP.NET工程师?
2018-2-28 更新:距離這篇回答發(fā)布已經五年過去了,最近還經常受到關注。技術本身在發(fā)展,這令我感到有必要來更新一下,希望對新看到的朋友有用。
對于服務器上的 .NET 技術,最新的發(fā)展當然是 .NET Core 了,作為全新的 .NET 技術,它繼承了舊的 .NET 技術中的優(yōu)秀特性,剔除了一些廣為詬病的遺留問題,以跨平臺和開源的新面貌發(fā)布了出來。
因此,對 .NET Core 的掌握是一個新時代的 .NET 開發(fā)者應該具備的技能。在之前的答案基礎上,補充這些新的技能衡量標準:
初級
能在 Windows 上使用 Visual Studio 開發(fā)基于 NETStandard、NETCoreApp 的應用程序
能夠運用 Visual Studio 中的包管理工具管理程序中的依賴
能夠使用 Kestrel 服務器開發(fā)自宿主 ASP.NET Core 程序
理解 MVC 的概念,以及 MVC 網站的典型代碼結構,熟悉 cshtml 語法
借助 ASP.NET Core 內置的登錄功能、日志工具和 EF Core 等完成常規(guī)業(yè)務功能的開發(fā)
運用 ASP.NET Core 內置的功能保護網站的安全
中級
理解 NETStandard 及 NETCoreApp 與傳統(tǒng) .NET 運行時的區(qū)別與聯(lián)系
熟練使用 dotnet 命令行工具完成應用程序的創(chuàng)建、管理包依賴和打包
至少熟練運用一種非 Windows + Visual Studio 的開發(fā)環(huán)境(如 VSCode、Sublime Text)完成對 .NET Core 應用的開發(fā)和調試
理解 ASP.NET Core 的管道系統(tǒng);能夠獨立基于設計好的多層 ASP.NET Core 應用繼續(xù)開發(fā);在應用程序中使用第三方組件替換 ASP.NET Core 內置組件(例如,日志工具,依賴注入工具等);遵循給定的設計思路實現(xiàn)復雜的業(yè)務需求
熟練使用至少一種源代碼管理工具,了解基于 .NET Core 的單元測試方法,使用持續(xù)集成工具保障代碼質量
至少熟悉一種熱門的前端框架的工作機制(Angular、React 或 Vue 等)
熟練開發(fā)基于 API 的前后端分離的后端 API,理解對 API 的常規(guī)鑒權方法
能夠在 Linux 和 Windows 服務器上部署基于 Kestrel 的應用程序(基于 IIS 模塊或 nginx 的反向代理等)
高級
使用 dotnet 命令行工具完成創(chuàng)建應用程序、管理包依賴和單元測試,并能拓展新的工具命令
能夠運用 TDD 和重構等典型的最佳實踐快速完成代碼開發(fā),編寫優(yōu)美的代碼
能夠獨立設計分布式、多層無狀態(tài) http://ASP.NET Core 應用程序
能夠獨立地將 ASP.NET Core 應用程序部署到服務器集群上,提供高性能、高可用的 Web 應用程序服務
掌握大量調試 .NET Core 應用程序的方法,高效地解決生產環(huán)境服務器上發(fā)生的各種問題
詳細地了解源代碼管理工具中的各種技能,支持團隊完成代碼審查、分支管理和產品發(fā)布等流程
掌握典型的持續(xù)集成和持續(xù)交付概念和常規(guī)工具的使用方法,能夠運用腳本等方法對開發(fā)流程、持續(xù)集成和部署等步驟進行自動化
積極了解其他社區(qū)的典型實踐與工具,并擇優(yōu)吸收運用到團隊中,以改善產品質量、提升開發(fā)效率等
=========== 2013年的原回答如下 ============
題主應該是希望了解一些面試 http://ASP.NET 程序員的一些考察方法和方向。
如果您在搜索引擎上找過面試題的話,應該不難找到一些關于 頁面生存周期、頁面間傳值的方法、訪問修飾符的用法等“經典”的面試題。
那些都只是些面向初學者的“入門”考試“筆試”而已,完全不能稱得上是面試題。
面試與筆試相比,最大的優(yōu)勢就是能通過與應試者當面交流來看出他面對問題時的反應,解決問題的思路和與人溝通的方式等。
因此,我認為面試應該與筆試加以區(qū)分。我們公司招聘工程師幾乎沒有筆試,僅在面試期間偶爾夾雜少許細節(jié)問題,以期了解應試者實踐經驗如何。
結合面試的特點,考察一些思路方面的問題(比如,如何在 Web 窗體與一般處理程序之間作出選擇),而不必糾結于語言或平臺中具體的某個知識點(如 private 與 protected 的區(qū)別)。本質上,它們考察的可能都是對某一項技能的掌握程度,但前者更具有實踐意義。
根據所需人才的層次,和對方的實際情況,及其對自己的評價,合理掌握問答氣氛和聊天范圍。對應屆畢業(yè)生,宜以興趣引導、工作熱情、學習能力等方面為考察方向,并且營造友好的氣氛;而對自稱熟練、精通的應試者,則可酌情從廣而散的問話中了解對方長短處,并以專而深的方式來了解對方的能力高低,以及風格是否細致負責。這方面的考察,請參考
@走過
提到的 再談“我是怎么招聘程序員的”(上) 一文中的論述。
附:我認為.NET 和 http://ASP.NET 開發(fā)者,應該具備以下技能:
初級:
對 C#(推薦) 或 VB 語言直至與 .NET 4 (目前為止)相匹配的版本,絕大多數(shù)特性熟悉并使用過
通曉 HTTP 協(xié)議的結構,及 http://ASP.NET 與 HTTP 請求、Web 頁面之間的關系
能獨立運用 HTML 構建頁面,并掌握一定的 JavaScript、CSS 知識
能獨立開發(fā)具有業(yè)務功能的 Web Form 或 MVC 應用程序
能完成到本地 IIS 和服務器上的發(fā)布,有 Web 安全意識
中級:
熟練使用 .NET 4 及更新版本的特性,知曉不同大版本之間的差異,以及各版本平臺、語言和開發(fā)工具的對應關系
使用 http://ASP.NET MVC 以及 Web Form 開發(fā)項目,并了解兩種機制的異同,根據項目場景作出合適的選擇
知曉 IIS 7 集成模式,并了解與經典模式的異同;熟悉 http://ASP.NET 運行機制,獨立完成模塊和處理程序的開發(fā)
有系統(tǒng)分層的概念,能使用面向對象的方法創(chuàng)建模型和服務,能獨立組織出解決方案的結構
運用設計工具獨立設計數(shù)據庫,運用 ORM 工具與多種數(shù)據源的交互,知曉各種數(shù)據源的大概差異
至少使用過一種源代碼管理工具,參與過 2 人以上協(xié)作完成的項目
高級:
至少對一種其他的服務器開發(fā)平臺(如 LAMP、Java、Python、Node.js 等)有深入的了解,并清楚其與 http://ASP.NET 之間的主要區(qū)別;明確 http://ASP.NET 在整個項目布局中所處的位置
對 C# 3.0 以上版本(或 VB 對應版本)有深入研究,熟練地處理多線程開發(fā);合理運用異步和 COM 組件等功能解決問題
深入了解 http://ASP.NET 運行機制,對應用程序域、配置、模板引擎、編譯、請求處理管線等十分了解
能獨立完成 http://ASP.NET Web Form 中用戶控件、服務器控件的編寫;對 http://ASP.NET MVC 中的路由機制、控制器調用方式、過濾器、模型綁定與驗證等特性十分熟悉,并能根據現(xiàn)有機制輕松完成擴展與定制
能結合對 WCF 和 Web API 等技術的應用,構建分布式的系統(tǒng)
清楚 IIS 的集成模式與經典模式、請求過濾與跟蹤、信任級別等特性與功能以及應用程序池進程數(shù)量、進程模型、回收等特性與功能對應用程序的影響
對項目的性能、壓力和安全性要求有明確的認識,熟練運用 http://ASP.NET 輸出緩存、進程內或分布式數(shù)據緩存提高性能;合理配置 IIS 輸出緩存、壓縮;了解常見的 Web 攻擊方法并加以防范
熟知請求和響應在各個過程的狀態(tài),并適時完成諸如請求流預處理、攔截、緩存、統(tǒng)計等功能
對常見設計模式和思想非常熟悉,合理在項目中加以應用;熟練運用常見的開源和第三方庫,結合項目需求,合理選用 DI、ORM 等用于提升開發(fā)效率的工具
能獨立完成大型項目的架構,獨立完成系統(tǒng)中日志、緩存、數(shù)據處理等基礎功能的開發(fā)計劃
對整個項目數(shù)據庫設計、界面實現(xiàn)與優(yōu)化、領域模型和數(shù)據服務、調試與測試、部署與服務器配置均能完整掌控
能完成組織和協(xié)調 5 人以上人員參與的項目的開發(fā)計劃和工作分配,把握開發(fā)進度,激勵團隊前進
當然,對于更高級的人才,上不封頂。
原文:https://www.zhihu.com/question/20045362/answer/18131746
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的如何面试.NET/ASP.NET工程师?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core Razor 页
- 下一篇: Asp.Net Core 2.1+的视图