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