针对Python/TurboGears网页开发者的面试问题?
如果你想雇一个主要使用TurboGears和Python的网页开发者,你应该问他们什么问题呢?
4 个回答
问他要:
- 自省能力
- 模型-视图-控制器设计
- 文档工具
如果他对这些了解很多,那他肯定对其他问题也懂得不少。
最好的面试问题是让他们解决实际问题的那些。
以下是一些随意的建议(参考了FizzBizz测试)
Python
给他们一个不简单的项目,让他们在一周内完成,最好是和你们工作领域相关的。我曾经申请过一家搜索公司,他们让我实现一个协同过滤系统。
通常让人困惑的地方包括装饰器、类型系统、元类,可能还有迭代器。你可以问他们一些关于这些内容的问题,看看他们的理解有多深。
TurboGears
在这方面我没什么特别的建议,但你可以问他们关于他们选择的ORM(对象关系映射)的知识(构建一些映射器和查询),也可以问问验证方面的内容(我在使用FormEncode时遇到过条件验证的问题)。你还可以稍微了解一下他们会如何测试应用,确保它能扩展,测试性能以及如何部署。
除了其他回答中提到的好建议,我总是喜欢问一个问题(针对任何有意开发与网络相关内容的人):“当用户在浏览器的地址栏输入 www.foo.com 并按下回车键后,会发生什么?请尽量详细或简略地描述一下,然后我们可以深入探讨答案的某些部分。”
不管使用了什么服务器框架,这个问题可以让我了解候选人对一些关键技术的理解,比如:HTTP协议和它下面的TCP/IP协议,DNS(域名系统),各种缓存(以及它们有时会带来的麻烦,作为开发者你可以怎么处理这些问题),浏览器技术的表面可见部分,cookies(小数据文件),HTML和CSS,甚至一些JavaScript……
是的,我们日常使用的技术,比如框架,努力把这些复杂的东西隐藏起来(从而提高工作效率),但Joel Spolsky的“泄漏抽象法则”是适用的——了解你通常忽略的技术层次是掌握软件开发的关键。
根据候选人面试的职位细节,深入探讨的方向会有所不同。例如,描述(在合理的抽象层次上)HTTP请求是如何通过一个网络服务器和Turbogears的机制(可能通过WSGI)到达你的应用代码的,大致讲一下你的代码是如何处理请求并准备响应的,响应又是如何打包并发送回请求的浏览器,这些都是可能感兴趣的内容——具体要看这个开发者可能负责的前端/UI工作,可能还需要更多关于浏览器如何处理响应各个方面的信息(包括样式表、脚本、图片的链接等)。
任何人都可以“死记硬背”某个特定技术,比如某个框架,如果他们足够聪明,就能在“测验”式的面试中表现出色。但如果有人能在这样一个开放式、讨论式的面试中表现出色,那他们很可能已经真正掌握了相关技术的多个层面——我更愿意雇佣这样对技术有深刻理解的人,即使他们从未使用过Turbogears(而是使用过Django、Werkzeug和web.py),因为他们可以在一周内快速掌握Turbogears的具体细节,而不是那些只记住了一堆Turbogears参考手册但对HTTP、cookies、TCP/IP等没有真正理解的人……(要弥补这种缺失,至少需要几个月的时间)。