适合 Python/TurboGears Web 开发人员的面试问题吗?
如果您想雇用一名主要使用 TurboGears/Python 的 Web 开发人员 - 您应该问他们什么样的问题?
If you were looking to hire a web developer who would primarily be working with TurboGears/Python - what sort of questions should you ask them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
除了其他答案中的好建议之外,我总是喜欢问(任何开发与网络相关的候选人的人):“当用户在浏览器地址上输入 www.foo.com 时栏并点击返回,然后会发生什么?请尽可能多或尽可能少地描述您认为最好的细节,然后我们可以深入研究答案的部分或全部部分”。
除了正在使用的服务器端框架之外,这还可以告诉我很多关于候选人对他们最终可能不得不处理的其他关键技术的理解:HTTP 和整个技术它下面的 TCP/IP 堆栈、DNS、各种各样的缓存(以及它们有时会带来麻烦,以及您作为开发人员可以尝试做些什么......)、浏览器技术的表面可见方面, cookie、HTML 和 CSS 或许还有一些 Javascript,...
是的,我们使用的日常技术(例如框架)努力从所有这些中抽象出来(从而提高生产力),但是 Joel Spolsky 的 泄漏抽象法则适用——了解您通常抽象的堆栈层对于真正掌握至关重要的软件工艺。
根据候选人面试职位的详细信息,在不同领域进行更深入的挖掘是适当的。例如,描述(在合理的抽象级别)HTTP 请求如何(通过 Web 服务器和 Turbogears 机器,也许通过 WSGI)到达您的应用程序代码,大致上您的代码将如何研究请求并准备响应,如何响应将被打包并发回请求浏览器,可能都是感兴趣的项目 - 取决于相关开发人员可能承担的前端/UI 职责类型,更多关于浏览器处理各个方面的方式响应(包括样式表、脚本、图像等的链接)也可能是合适的。
任何人都可以“临时抱佛脚”学习某种特定的技术,比如框架,如果他们足够聪明的话,就足以在“测验”式的面试中“取得好成绩”。但是,任何能够在像这次这样的更开放、更散漫的面试中取得好成绩的人,极有可能真正掌握并理解了相关技术和抽象堆栈的许多层次——我宁愿雇用一个具有以下能力的人:如此彻底、根深蒂固的理解,即使他们从未使用过 Turbogears(而是,比如说 Django、Wekrzeug 和 web.py)周,上衣],比那些致力于记住一堆 Turbogears 参考手册但并不真正理解 HTTP、cookie、TCP/IP...( 至少需要很多时间)的人几个月来补救)。
In addition to the good suggestions in the other answers, something I always like to ask (from anybody who's a candidate to develop anything at all that's related to the web) is: "when a user types www.foo.com on their browser's address bar and hits return, what happens then? Please describe in as much or as little detail as you think best, then we may drill down into some or all parts of the answer".
Quite apart from the server-side framework(s) in use, this can tell me a lot about the candidate's understanding of other crucial technologies that they may well end up having to deal with: HTTP and the whole TCP/IP stack below it, DNS, caches of many and sundry sorts (and how they can sometimes be a bother and what can you, the developer, try to do about that...), surface-visible aspects of browser technologies, cookies, HTML and CSS and perhaps some Javascript, ...
Yes, everyday technologies we use, such as frameworks, try hard to abstract away from all this (and increase productivity thereby), but Joel Spolsky's Law of Leaky Abstractions applies -- being aware of layers of the stack that you're normally abstracting away from is crucial to real mastery of the software craft.
Depending on the details of the position the candidate's interviewing for, deeper drill downs will be appropriate in different areas. For example, describing (at reasonable abstraction level) how the HTTP request would get (through a web server and Turbogears machinery, perhaps by way of WSGI) to your application code, roughly how your code would study the request and prepare a response, how the response would be packaged up and sent back to the requesting browser, may all be items of interest -- depending on what kind of frontend/UI responsibilities the developer in question might have, more about the way the browser will deal with various aspects of the response (including links to style sheets, scripts, images, ...) might also be appropriate.
Anybody can "cram" about a specific technology such as a framework, enough, if they're smart enough, to "ace" a "quiz"-style interview. But anybody who's able to ace a more open-ended, discursive interview such as this one, is overwhelmingly likely to have really mastered and understood many of the layers of the relevant stack of technologies and abstractions -- I'd much rather hire somebody with such a thorough, deep-rooted understanding, even if they've never used Turbogears (but rather, say, Django, Wekrzeug and web.py) [they'll be able to cram and get the Turbogears-specific details down pat in a week, tops], than somebody who's committed to memory a stack of Turbogears reference manuals but doesn't really understand HTTP, cookies, TCP/IP... (that lack would take, at least, many months to remedy).
最好的面试问题是你要求他们解决问题的问题。
以下是一些半随机建议(在 FizzBizz 测试之后)
Python
Give这是一个不平凡的项目,需要在您工作的领域中实施一周以上。我曾经向一家猎头公司提出申请,他们要求我实施协同过滤系统。
通常令人困惑的领域是装饰器、类型系统、元类,也许还有迭代器。你可以向他们询问一些有关这些事情的问题,以探究他们的深度。
TurboGears
我在这里不能提出太多建议,但您可以对他们选择的 ORM 进行测试(构建一些映射器和查询),询问一些有关验证的问题(我在使用 FormEncode 进行条件验证时遇到了一些麻烦)。您还可以稍微了解一下他们如何测试应用程序,确保其可扩展,测试其性能并部署它。
The best interview questions are the ones where you ask them to solve problems.
Here are a few semi-random suggestions (after the FizzBizz test)
Python
Give them a non-trivial project to implement over a week in the domain where you're working. I applied once to a search firm and they asked me to implement a collaborative filtering system.
The areas that are usually confusing are decorators, the type system, metaclasses, perhaps iterators. You could ask them something about these things to probe their depth.
TurboGears
I Can't suggest much here but you could quiz them on the ORM of their choice (construct some mappers and queries), ask a little bit about validation (I had some trouble getting conditional validation to work with FormEncode). You could also wander a little into how they'd test the app, make sure that it scaled, test it's performance and deploy it.
向他询问:
如果他对此了解很多,那么肯定对其他问题也了解很多。
Ask him for:
If he know a lot about that, surely know a lot about other issues.
不要测验。从你的风险投资家那里获取一些真实的(可能是损坏的)代码。让他们告诉您他们将如何修复它/添加功能。
如果可以的话,请他们带一些以前工作的样本。
Don't quiz. Get some real (possibly broken) code from you vcs. Get them to tell you how they would fix it / add a feature.
If they can, ask them to bring some samples of previous work.