开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
一份开发者面试指南 - 技术翻译 - 开源中国社区

一份开发者面试指南 【已翻译100%】

标签: <无>
oschina 推荐于 3个月前 (共 33 段, 翻译完成于 05-04) 评论 5
收藏  
125
推荐标签: 待读

副标题:如何面试一家公司

你有没有经历过这样的工作面试,面试官看着桌子对面的你,说:“你还有什么问题吗?”你也看着面试官说:“嗯……我觉得没有了”。如果这发生在你身上,那么对于面试经验,很有可能你有一个非常片面的看法。

作为面试候选人,可以理解只关注一个结果:获得工作机会。但不要忘了,工作面试不是单向的。你也应该关注如何面试该公司,因为他们也在专注于如何面试你。

Tocy
 翻译得不错哦!

但是你该问他们什么呢?

很多求职者都问过我这个问题。在过去的 15 年里,我曾在 7 家公司工作(包含 2 个实习岗位,6 个月在一家创业公司兼职),我曾被十几个人面试过。现在我终于决定写下这些在面试中提出的所有问题,希望其他人能够从中获得些许帮助。

旁注:我们在每周的开发者建议播客  Soft Skills Engineering 中涵盖了这个主题和许多其他的内容。欢迎订阅!

我的目标是使它成为一个一直活跃的文档。如果您有建议,请通过 Twitter 联系我,我会将其纳入其中,供大家参考。

Tocy
 翻译得不错哦!

你会和谁交谈呢?

在面试时,你通常会遇到三个角色。根据公司的规模,这些可能是一人或多人:

  • 软件工程师

  • 工程经理(技术负责人,中层管理者,主管)

  • 公司领导(副总裁,首席技术官,首席执行官,部门经理)

我对这些角色的每个人都有不同的问题,下面将会列出。请注意,我有时会对多个角色问重复的相同的问题,以了解他们的答案是否一致。

这是一篇很长的文章,它的意义更多是作为参考,而不是通读片段。如果我今天正在面试,我会在带上这个,并在面试中(谨慎地)参考。

Tocy
 翻译得不错哦!

大多数问题没有 “正确” 或 “错误” 的答案。它们旨在帮助你了解该公司,它的文化、流程和组织架构。你也可把它们作为对话的开始,当你的大脑 “宕机” 时,这在面试中可能会非常有帮助。

作为礼貌,我通常会在面试开始时告诉面试官,我想有一些提问的时间。这有助于他们对此做出相应的规划。通常情况下,他们在面试结束时让我提出问题,因此要留意面试进程,并让他们在这过程中早点察觉到你的想法。每个问题提问后,暂停下并询问你是否可以继续问问题,以及面试官还有多少时间。

Tocy
 翻译得不错哦!

对软件工程师的问题

1. 您是如何知道每天的工作安排的?

这个问题的目的是确定是否存在沟通障碍。我想从 2 到 3 名工程师那里得到答案。如果公司领导说他们遵循一定的流程,但工程师没有谈论到这个流程,那就是沟通障碍的征兆。如果从不同的工程师那里得到不同的答案,这是沟通障碍的另一个征兆。

在高质量的团队中,我得到了一致的答案。每个开发者都知道这个流程,而且这个流程是足够轻量级的,它会获得工程师的支持,而不是反对。

Tocy
 翻译得不错哦!

其中一个很好的回答的例子(还有很多其他的例子)是:“我们做 N 周的冲刺,其中每个工程师承诺提交一组功能和错误修复。每天我们都会报告彼此提交的进展情况。我们有一个了不起的产品经理,他与客户接触,帮助我们安排功能和错误修复的优先级。“

其中一个坏的回答的例子(还有很多其他的例子)是:“我进了办公室,看看有哪些迫在眉睫的事情。大多数时候,我会被突发事件所打断。”

注意我没提及 “Scrum” 或其他任何具体的方法论。相比于雇员每天实际上是如何工作的,我对公司用于工程流程管理的标签并不太感兴趣。

Tocy
 翻译得不错哦!

2. 您使用什么版本控制工具?

良好的工具是良好团队的强大指标。如果一个团队正在使用一个古老的版本控制系统,他们可能会使用一些其他过时的工具。此外,他们可能不重视投资良好工具所带来的效率提升。

一个很好的后续问题是询问关于工作流的问题。你们使用分支吗?你们喜欢 rebase 或 merge(git 术语)吗?这些问题会告诉你,他们对于所选择的工具有多了解,也会告诉你很多关于他们熟练程度的信息,反过来这会告诉你如果你接受这项工作会怎样呢?例如,你会成为 “本地 git 专家”,还是要向名副其实的 Linus Torvalds 学习?

这个问题也可以开启针对一般的工具的讨论,这通常会给你一些良好的洞察。

Tocy
 翻译得不错哦!

3. 这份工作的哪些东西是你喜欢的?

好的回答:我从工作中收获了满足。
好的回答:在工作中有很多有趣的东西。
好的回答:我喜欢与真正聪明,友好的同事工作。
好的回答:管理人员尊重工程师。

越多好的回答更好。我不需要得到上面所有的回答才给一家公司打高分。记住有些人不会自然地 “流露出感情”,所以你可能不会得到主要的回答,但公司可能会很好。

无若
 翻译得不错哦!

但是如果我听到以下几种回答,并且很少听到好的回答列表中的回答,我会感到很忐忑:

差的回答:支付账单。
差的回答:我不用努力工作。
差的回答:没有很大的交付压力。
差的回答:我是否犯了很大的错误并不重要。
差的回答:(沉默)

不要以为这些回答是我编造的。在真正的面试中我确实听到过这些回答。

如果我听到这些差的回答,也不会就此在心里默认它是一间差的公司,但如果这些是仅有的答案,我通常会去其他地方看。

Tocy
 翻译得不错哦!

4. 你们写单元测试吗?

当你基于一个工程团队的单元测试习惯对他们做出判断时,要小心了。如果一个团队当我问其关于单元测试时变得兴奋,这通常来说是个好信号。但是另一方面,如果他们不能解释问什么他们要单元测试,或者单元测试的缺点,这是一个盲羊般教条主义的迹象。如果他们对为什么他们不写测试给了糟糕的借口,尤其是“我们没有时间”这样的借口,这对我来说是个坏兆头。

如果工程师告诉我他们写单元测试,并且他们也能告诉我他们测试的度量标准。比如他们需要运行多长时间,他们有多少测试,覆盖多少代码,这对于我来说很有吸引力,这表明了他们有好的工具,并且知道怎么去使用,另一方面,如果他们相信100%代码覆盖率能基本上保证无错误代码,我持怀疑态度。

我想要事先知道的是,我是否会在这家公司工作中需要面对一个庞大、过时,而且未经测试的代码库。这些将有助于我设定自己的期望,并决定这些是否是我想做的事情。

后续问题:

  • 你们更喜欢单元测试还是集成测试?

  • 你们会验收测试吗?

  • 你们使用什么测试框架,喜欢它吗?

  • 你们的单元测试需要运行多长时间?

Tony
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(5)
Ctrl/CMD+Enter

有一些帮助,会在下次面试注意
很有专业、职业的标准
很专业,可是我前段时间去mockplus公司面试,连第一关笔试都没通过,郁闷哦!!!
很棒的文章,可惜国内有多少企业做了,持续集成,单元测试呢?
这是译文吧,有点别扭
顶部