如果您想聘请一位主要使用 TurboGears/Python 的 Web 开发人员 - 您应该问他们什么样的问题?
4 回答
除了其他答案中的好建议之外,我总是想问的问题(任何候选人都可以开发任何与网络相关的东西)是:“当用户在他们的浏览器地址上键入 www.foo.com bar 和 hits 返回,然后会发生什么?请尽可能详细或尽可能详细地描述,然后我们可能会深入研究答案的部分或全部部分”。
除了使用的服务器端框架之外,这可以告诉我很多关于候选人对他们最终可能不得不处理的其他关键技术的理解:HTTP 和它下面的整个 TCP/IP 堆栈, DNS,各种各样的缓存(以及它们有时如何成为麻烦,开发人员可以尝试做些什么......),浏览器技术的表面可见方面,cookie,HTML和CSS,也许还有一些Javascript,...
是的,我们使用的日常技术,例如框架,会努力从所有这些中抽象出来(并因此提高生产力),但是 Joel Spolsky 的 泄漏抽象定律适用——意识到你通常抽象掉的堆栈层从是真正掌握软件工艺的关键。
根据应聘者面试职位的详细信息,在不同领域进行更深入的钻探将是合适的。例如,描述(在合理的抽象级别)HTTP 请求将如何(通过 Web 服务器和 Turbogears 机器,可能通过 WSGI)到达您的应用程序代码,您的代码将如何研究请求并准备响应,如何响应将被打包并发送回请求浏览器,可能都是感兴趣的项目——取决于相关开发人员可能承担的前端/UI职责,更多关于浏览器处理各个方面的方式响应(包括指向样式表、脚本、图像等的链接)也可能是适当的。
任何人都可以“填塞”特定技术(例如框架),如果他们足够聪明,足以“完成”“测验”式面试。但是,任何能够在这样一个更开放、更散漫的面试中胜出的人,都极有可能真正掌握并理解了相关技术和抽象堆栈的许多层——我更愿意雇用有以下能力的人。如此彻底、根深蒂固的理解,即使他们从未使用过 Turbogears(而是说,Django、Wekrzeug 和 web.py)[他们将能够填满并获得 Turbogears 特定的细节。周,顶],而不是那些致力于记忆一堆 Turbogears 参考手册但并不真正了解 HTTP、cookie、TCP/IP 的人......
最好的面试问题是你要求他们解决问题的问题。
这里有一些半随机的建议(在FizzBizz 测试之后)
Python
给他们一个重要的项目,让他们在你工作的领域实施一个多星期。我曾经向一家搜索公司申请过,他们要求我实施一个协同过滤系统。
通常令人困惑的领域是装饰器、类型系统、元类,也许还有迭代器。你可以问他们一些关于这些事情的事情,以探索他们的深度。
涡轮齿轮
我不能在这里提出太多建议,但是您可以就他们选择的 ORM 进行测验(构建一些映射器和查询),询问一些有关验证的问题(我在使用 FormEncode 进行条件验证时遇到了一些麻烦)。您还可以稍微了解一下他们如何测试应用程序,确保它可以扩展,测试它的性能并进行部署。
问他:
- 自省
- 模型-视图-控制设计
- 记录工具
如果他对此了解很多,那么肯定对其他问题也了解很多。
不要考试。从您的 vcs 获取一些真实的(可能是损坏的)代码。让他们告诉你他们将如何修复它/添加一个功能。
如果可以,请他们带一些以前工作的样本。