面试与笔试相比,最大的优势就是能通过与应试者当面交流来看出他面对问题时的反应,解决问题的思路和与人沟通的方式等。
因此,我认为面试应该与笔试加以区分。我们公司招聘工程师几乎没有笔试,仅在面试期间偶尔夹杂少许细节问题,以期了解应试者实践经验如何。
结合面试的特点,考察一些思路方面的问题(比如,如何在 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 组件等功能解决问题
深入了解 http://ASP.NET 运行机制,对应用程序域、配置、模板引擎、编译、请求处理管线等十分了解
能独立完成 ASP.NET Web Form 中用户控件、服务器控件的编写;对 ASP.NET MVC 中的路由机制、控制器调用方式、过滤器、模型绑定与验证等特性十分熟悉,并能根据现有机制轻松完成扩展与定制
能结合对 WCF 和 Web API 等技术的应用,构建分布式的系统
清楚 IIS 的集成模式与经典模式、请求过滤与跟踪、信任级别等特性与功能以及应用程序池进程数量、进程模型、回收等特性与功能对应用程序的影响
对项目的性能、压力和安全性要求有明确的认识,熟练运用 ASP.NET 输出缓存、进程内或分布式数据缓存提高性能;合理配置 IIS 输出缓存、压缩;了解常见的 Web 攻击方法并加以防范
熟知请求和响应在各个过程的状态,并适时完成诸如请求流预处理、拦截、缓存、统计等功能
对常见设计模式和思想非常熟悉,合理在项目中加以应用;熟练运用常见的开源和第三方库,结合项目需求,合理选用 DI、ORM 等用于提升开发效率的工具
能独立完成大型项目的架构,独立完成系统中日志、缓存、数据处理等基础功能的开发计划
对整个项目数据库设计、界面实现与优化、领域模型和数据服务、调试与测试、部署与服务器配置均能完整掌控
能完成组织和协调 5 人以上人员参与的项目的开发计划和工作分配,把握开发进度,激励团队前进
当然,对于更高级的人才,上不封顶。
2016 © donet5.comApache Licence 2.0