如何面试.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 和重构等典型的最佳实践快速完成代码开发,编写优美的代码

  • 能够独立设计分布式、多层无状态 ASP.NET Core 应用程序

  • 能够独立地将 ASP.NET Core 应用程序部署到服务器集群上,提供高性能、高可用的 Web 应用程序服务

  • 掌握大量调试 .NET Core 应用程序的方法,高效地解决生产环境服务器上发生的各种问题

  • 详细地了解源代码管理工具中的各种技能,支持团队完成代码审查、分支管理和产品发布等流程

  • 掌握典型的持续集成和持续交付概念和常规工具的使用方法,能够运用脚本等方法对开发流程、持续集成和部署等步骤进行自动化

  • 积极了解其他社区的典型实践与工具,并择优吸收运用到团队中,以改善产品质量、提升开发效率等



=========== 2013年的原回答如下 ============


题主应该是希望了解一些面试 ASP.NET 程序员的一些考察方法和方向。
如果您在搜索引擎上找过面试题的话,应该不难找到一些关于 页面生存周期、页面间传值的方法、访问修饰符的用法等“经典”的面试题。
那些都只是些面向初学者的“入门”考试“笔试”而已,完全不能称得上是面试题。

面试与笔试相比,最大的优势就是能通过与应试者当面交流来看出他面对问题时的反应,解决问题的思路和与人沟通的方式等。
因此,我认为面试应该与笔试加以区分。我们公司招聘工程师几乎没有笔试,仅在面试期间偶尔夹杂少许细节问题,以期了解应试者实践经验如何。

结合面试的特点,考察一些思路方面的问题(比如,如何在 Web 窗体与一般处理程序之间作出选择),而不必纠结于语言或平台中具体的某个知识点(如 private 与 protected 的区别)。本质上,它们考察的可能都是对某一项技能的掌握程度,但前者更具有实践意义。

根据所需人才的层次,和对方的实际情况,及其对自己的评价,合理掌握问答气氛和聊天范围。对应届毕业生,宜以兴趣引导、工作热情、学习能力等方面为考察方向,并且营造友好的气氛;而对自称熟练、精通的应试者,则可酌情从广而散的问话中了解对方长短处,并以专而深的方式来了解对方的能力高低,以及风格是否细致负责。这方面的考察,请参考

@走过

提到的 再谈“我是怎么招聘程序员的”(上) 一文中的论述。



附:我认为.NET 和 ASP.NET 开发者,应该具备以下技能:

初级:

  • 对 C#(推荐) 或 VB 语言直至与 .NET 4 (目前为止)相匹配的版本,绝大多数特性熟悉并使用过

  • 通晓 HTTP 协议的结构,及 ASP.NET 与 HTTP 请求、Web 页面之间的关系

  • 能独立运用 HTML 构建页面,并掌握一定的 JavaScript、CSS 知识

  • 能独立开发具有业务功能的 Web Form 或 MVC 应用程序

  • 能完成到本地 IIS 和服务器上的发布,有 Web 安全意识



中级:

  • 熟练使用 .NET 4 及更新版本的特性,知晓不同大版本之间的差异,以及各版本平台、语言和开发工具的对应关系

  • 使用 ASP.NET MVC 以及 Web Form 开发项目,并了解两种机制的异同,根据项目场景作出合适的选择

  • 知晓 IIS 7 集成模式,并了解与经典模式的异同;熟悉 ASP.NET 运行机制,独立完成模块和处理程序的开发

  • 有系统分层的概念,能使用面向对象的方法创建模型和服务,能独立组织出解决方案的结构

  • 运用设计工具独立设计数据库,运用 ORM 工具与多种数据源的交互,知晓各种数据源的大概差异

  • 至少使用过一种源代码管理工具,参与过 2 人以上协作完成的项目



高级:

  • 至少对一种其他的服务器开发平台(如 LAMP、Java、Python、Node.js 等)有深入的了解,并清楚其与 ASP.NET 之间的主要区别;明确 ASP.NET 在整个项目布局中所处的位置

  • 对 C# 3.0 以上版本(或 VB 对应版本)有深入研究,熟练地处理多线程开发;合理运用异步和 COM 组件等功能解决问题

  • 深入了解 ASP.NET 运行机制,对应用程序域、配置、模板引擎、编译、请求处理管线等十分了解

  • 能独立完成 ASP.NET Web Form 中用户控件、服务器控件的编写;对 ASP.NET MVC 中的路由机制、控制器调用方式、过滤器、模型绑定与验证等特性十分熟悉,并能根据现有机制轻松完成扩展与定制

  • 能结合对 WCF 和 Web API 等技术的应用,构建分布式的系统

  • 清楚 IIS 的集成模式与经典模式、请求过滤与跟踪、信任级别等特性与功能以及应用程序池进程数量、进程模型、回收等特性与功能对应用程序的影响

  • 对项目的性能、压力和安全性要求有明确的认识,熟练运用 ASP.NET 输出缓存、进程内或分布式数据缓存提高性能;合理配置 IIS 输出缓存、压缩;了解常见的 Web 攻击方法并加以防范

  • 熟知请求和响应在各个过程的状态,并适时完成诸如请求流预处理、拦截、缓存、统计等功能

  • 对常见设计模式和思想非常熟悉,合理在项目中加以应用;熟练运用常见的开源和第三方库,结合项目需求,合理选用 DI、ORM 等用于提升开发效率的工具

  • 能独立完成大型项目的架构,独立完成系统中日志、缓存、数据处理等基础功能的开发计划

  • 对整个项目数据库设计、界面实现与优化、领域模型和数据服务、调试与测试、部署与服务器配置均能完整掌控

  • 能完成组织和协调 5 人以上人员参与的项目的开发计划和工作分配,把握开发进度,激励团队前进


当然,对于更高级的人才,上不封顶。


原文:https://www.zhihu.com/question/20045362/answer/18131746


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

欢乐纪中A组赛【2019.8.18】

前言 有一个暴力写挂了QVQQVQQVQ 成绩 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC111111(J−3)LRZ(J-3)LRZ(J−3)LRZ140140140100100100303030101010191919(J−3)WYC(J-3)WYC(J−3)WYC120120120100100100101010101010262626(J−3)HZB(J-3)HZB(J−3)HZB100100100…

Asp.Net Core 2.1+的视图缓存(响应缓存)

响应缓存Razor 页与 ASP.NET 核心 2.0 中不支持。 此功能将支持ASP.NET 核心 2.1 版本。在老的版本的MVC里面,有一种可以缓存视图的特性(OutputCache),可以保持同一个参数的请求,在N段时间内,直接从mvc的缓存中读取,不…

MongoDB投影字段

一、投影表字段 投影只包含a_field和b_field字段 Aggregation aggregation Aggregation.newAggregation(Aggregation.project("a_field", "b_field")); List<Map> list mongoOperations.aggregate(aggregation, "table", Map.class).ge…

Json.NET 不再有超过120个依赖项

Json.NET是.NET的官方的JSON解析和序列化库&#xff0c;它取代了Microsoft实际提供的库。但是当把Json.NET推向.NET Standard时&#xff0c;出现了一些问题。除了在该平台上无法使用的众多方法之外&#xff0c;在NET Standard 1.3上的Json.NET需要高达122个依赖包。随着适用于.…

MongoDB新建或删除索引

一、创建索引 创建正序索引 BasicDBObject indexOptions new BasicDBObject(); indexOptions.put("fieldName", 1); mongoOperations.getCollection(tableName).createIndex(indexOptions); 创建逆序索引 BasicDBObject indexOptions new BasicDBObject(); ind…

CF613D-Kingdom and its Cities【虚树,LCA,树链剖分,贪心】

正题 题目链接:https://www.luogu.org/problem/CF613D 题目大意 一棵树&#xff0c;每次询问kkk个点&#xff0c;删除mmm个点要这些点两两不连通&#xff0c;求mmm的最小值。 解题思路 我们可以对于询问的点构造一颗虚树&#xff0c;然后进行贪心选取即可。 codecodecode #…

C#热度不如Java?网友呛声:还有使用C#不能完成的工作?

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言&#xff0c;自发布以来受到了程序员的广泛关注。C#与Java有着很多相似之处&#xff0c;例如&#xff0c;单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是与Java每月被…

P3690-[模板]Link Cut Tree(动态树)【Splay】

正题 题目链接:https://www.luogu.org/problem/P3690 题目大意 nnn个点mmm个操作&#xff0c;要求支持 询问路径异或和连接一条边(若x,yx,yx,y没联通)删除一条边修改一个点的权值 解题思路 LCTLCTLCT板子题不解释。 codecodecode #include<cstdio> #include<cstrin…

MongoDB SpringData去掉自动生成的_class字段

使用定义的Bean类插入数据&#xff0c;spring data默认会给数据增加一个_class字段存储类的全名&#xff0c;这里需要去除类型 Configuration public class MongoConverterConfig implements InitializingBean {Autowiredprivate MappingMongoConverter mappingConverter;Over…

EntityFramework Core 2.0执行原始查询如何防止SQL注入?

前言接下来一段时间我们来讲讲EntityFramework Core基础&#xff0c;精简的内容&#xff0c;深入浅出&#xff0c;希望为想学习EntityFramework Core的童鞋提供一点帮助。EntityFramework Core执行原始查询在EntityFramework Core中执行原始查询我们借助FromSql来实现&#xff…

P3808,P3796-[模板]AC自动机(简单版/加强版)

简单版 题目链接: https://www.luogu.org/problem/P3808 题目大意 nnn个模式串&#xff0c;一个文本串&#xff0c;求有多少个模式串出现在文本串里。 解题思路 普通ACACAC自动机不解释。 codecodecode #include<cstdio> #include<cstring> #include<algorit…

MongoDB SpringBoot ObjectId序列化json为String

mongodb的ObjectId默认序列化为bean对象&#xff0c;如果需要转换为json字符对象&#xff0c;配置如下 Configuration public class JacksonConfig implements InitializingBean {Resourceprivate ObjectMapper objectMapper;Overridepublic void afterPropertiesSet() {Simpl…

EntityFramework Core 2.0自定义标量函数两种方式

前言上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式。本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数。自定义标量函数两种方式在EF Core 2.0中我们可以将方法映射到数据库中的标量函数&#xff0c;我们可在LINQ中调用此方法并会被正确翻译成SQL语句…

jzoj6310-Global warming【线段树,LIS】

正题 题目大意 给出一个长度为nnn的序列aaa&#xff0c;可以选择一个区间[l,r][l,r][l,r]使得aiaid(l≤i≤r,∣d∣≤x)a_ia_id(l\leq i\leq r,|d|\leq x)ai​ai​d(l≤i≤r,∣d∣≤x)。求最长上升子序列的最大值。 解题思路 我们可以发现肯定有一种最优解法是选择[k,n][k,n][…

SpringBoot shedlock MongoDb锁配置

配置mongo的表进行锁任务管理 maven依赖包 <dependency><groupId>net.javacrumbs.shedlock</groupId><artifactId>shedlock-spring</artifactId><version>2.5.0</version></dependency><dependency><groupId>net…

jzoj6311-Mobitel【dp,整除分块】

正题 题目大意 n∗mn*mn∗m的矩阵&#xff0c;求有多少条路径的乘积不小于SSS。 解题思路 我们用总路径数减去乘积小于SSS的路径数 我们很容易想到用fi,j,kf_{i,j,k}fi,j,k​表示到(i,j)(i,j)(i,j)这个点&#xff0c;然后乘积之和为kkk的dpdpdp。但是时间复杂度O(nmS)O(nmS)O…

ASP.NET Core远程调试

关于ASP.NET Core远程调试的具体做法可参考微软文档——Remote Debug ASP.NET Core on a Remote IIS Computer in Visual Studio 2017&#xff0c;详细做法不再赘述&#xff0c;这里主要记录下自己的感受。体验Web Deploy这种发布方式可直接将代码打包发到指定服务器的指定站点…

SpringCloud Consul自定义服务注册

SpringCloud自定义consul服务注册器&#xff0c;获取特定的本地地址进行注册&#xff0c;注销的时候检查并注销其他无效实例 package com.mk.springcloud.config;import com.ecwid.consul.v1.ConsulClient; import com.ecwid.consul.v1.agent.model.NewService; import com.ec…

jzoj6312-Lottery【dp,前缀和】

正题 题目大意 给出一个长度为nnn的序列aaa和数字lll&#xff0c;定义两个长度为lll的区间[l1,r1][l_1,r_1][l1​,r1​]和[l2,r2][l_2,r_2][l2​,r2​]的距离为有多少个不相同的数字。 然后有qqq个询问kik_iki​&#xff0c;要求输出有多少对距离为kik_iki​的区间。 解题思路…

修复.NET的HttpClient

早在2016年我们就报道过 &#xff0c;.NET的HttpClient存在一些问题。随着.NET Core 2.1中HttpClientFactory的引入&#xff0c;其中部分问题已经得到缓解。HttpClient的根本问题是&#xff0c;每次调用资源好像都应该在使用后立即释放。在现实中&#xff0c;那意味着每个目标服…