导读:面试是工程师在职业生涯中总会碰见的问题。相信很多工程师对怎么回答面试官的问题已经有自己的总结。面试是双向的过程,面试官在面试你的过程中,你也在面试公司。你可以从面试中获取公司很多信息。本文作者总结了面试中针对不同面试官的不同问题。由高可用架构翻译,转载请注明出处。
面试的时候,面试官通常最后会问:“你有什么问题吗?”,面试者往往回答说:“没有”。 如果这种情况总是发生在你身上,那么很有可能你对面试有一个非常片面的理解。专注于面试公司,因为他们同时也专注于面试您。那你应该问公司什么问题呢?
在面试中,您通常会遇到三种角色。根据公司的规模,可能是一个人或多个人:
软件工程师
技术经理(技术负责人,中层管理人员)
公司领导(副总裁,CTO,首席执行官,部门经理)
我将在下面列出针对这些不同角色的不同问题。我有时会对多个角色重复相同的问题,以了解和比较他们的答案。
这个问题的目的是确定是否有协作上的问题。我想从 2 - 3 名工程师那里得到答案。如果公司领导说他们遵循一定的过程,但工程师不会谈论这个过程,那就是协作问题的征兆。如果您从不同的工程师那里得到不同的答案,这是另一个工作协作问题的征兆。我对工程师实际的日常“如何做的事情”更有兴趣,而非工作过程的使用的标签。
使用良好的工具是好团队的特征。如果一个团队正在使用一个古老的版本控制系统,那么他们可能会使用一些其他过时的工具。此外,他们可能不重视投资良好的工具以实现工作效率增长。
正面的答案:我从我所做的工作中获得了满足。
(面试官:咳咳(尴尬),旁白由高可用小编贡献)
根据单位测试实践对工程团队作出结论时要小心。当我询问单元测试时,如果一个团队兴奋不已,这通常是一个好兆头。另一方面,如果他们不能解释为什么需要单元测试,或单元测试的缺点,这可能是盲目的教条主义。如果他们无法给出不写测试的理由(特别是像我们没有时间这一借口),那对我来说是一个糟糕的迹象。
你喜欢单元测试还是集成测试?
你有验收测试吗?
你使用什么测试框架?你喜欢它吗?
您的单元测试要运行多长时间?
好的软件开发团队使用 Jenkins,Travis 和 Buildbot 等工具。如果团队没有持续集成,我会尝试衡量他们是否熟悉这个概念。如果不是不熟悉,在我的经验中这是一个坏迹象。持续集成系统意味着团队可能相信自动化,这在我经验中通常是好迹象。
当 CI 报告失败时,您的团队需要多长时间才能解决问题?
你喜欢/不喜欢你的 CI 系统?
您的 CI 运行一次需要多长时间?你会让他们更快吗?
这是一个开放式问题,旨在了解该团队是否努力观测其软件。对于 Web 开发团队,答案往往侧重于性能指标,如服务器响应时间,请求吞吐量,用户数量,客户端响应等。但是讨论可以涉及到像不同语言的用户数量,浏览器崩溃,缓存命中/错失率以及无数其他主题。
如果团队没有花时间来观测,那可能是他们没有使用真实数据作为决策的指标。这可能是过早的优化。我重视一个根据真实的测量数据做出决策的团队(特别是关于绩效),这也适用于许多其他事情。
您最重要的产品指标是什么?
你使用什么观测系统? (例如,MixPanel,statsd 等)
一个强大的团队通常有专门的测试人员,与此同时团队的开发人员也专注于质量。一个真正强大的团队有令人印象深刻的自动化测试。有些团队太小而无法拥有专门测试人员,但这并不意味着他们是一个糟糕的团队。当我问这个问题时,我试着去感受他们的测试过程。他们是否总是火烧眉毛?他们是否有一个理智发现和优先考虑错误的过程?他们是否依赖用户查找 bug?
如何优先处理错误?
使用什么错误跟踪器? (和你讨厌什么)
使用Excel来跟踪错误吗? (nooo!)
bug跟踪器有多少个bug?
错误需要多长时间修复(最小/最大/典型)?
根据我的经验,好团队使用大量的协作工具。他们经常使用聊天服务(Slack,IRC,HipChat,Jabber),代码审查服务(Gerrit,GitHub,GitLab,Review Board),当然还有电子邮件。我正在寻找每个人如何知道其他开发人员在做什么的方式。我并非在寻找细节,更多的是为了通识。此外,我希望看到同协作工具集成。最简单的例子是可以发送自动构建失败消息的电子邮件。 web-dev团队的另一个例子是自动化错误记录服务,当严重错误发生时或当关键指标跨越某个阈值时通知团队。
我个人对框架的态度:
我喜欢现代的东西
我喜欢令我感到新奇的东西
所以如果一个团队在 Motif 中构建一个 AIX 桌面应用程序,我可能不感兴趣。但对你来说这可能是一个有趣的主题,你应该对自己的喜好有一个很好的了解。
如果您想要清楚地了解与该团队合作的内容,那么请尝试与他们一起工作。我从来没有做过这件事,但我有一个朋友做过(有可能是故事)。我认为这是一个好主意。如果你想了解有关团队的任何事情,请和他们一起工作半天。当然这可能需要您签署 NDA。如果团队愿意考虑这个想法,我认为这是一个非常好的迹象。
这个问题旨在让您更了解公司实际遵循的开发过程。这个问题本身并不能带来丰富的信息,但是当你提出这些问题时,事情会更加有趣:
谁设定这个期限?
你在最后的截止日期前完成工作了吗?如果没有,为什么不?
高质量的团队一致同意截止日期并设定该日期。任意修改的截止日期可能是工作协同出现问题的征兆,或者至少说明在确定时间表时工程师没有话语权。
这个问题有助于衡量公司在开发者体验方面付出的努力。新的开发人员需要几个小时,几天或几周的时间来设置计算机并准备开始编码?是自动还是手动?这将告诉您,团队在“支持活动”中的熟练程度(与编写软件无关,但有助于支持该目标)。团队是否认真对待这一问题?
(面试官:咳咳(尴尬),旁白由高可用小编贡献)
我喜欢拥有强大技术背景的经理人。无意冒犯我的 MBA 朋友,但我真的喜欢那些和我有类似经历的经理。
我认为好的经理是发自内心的喜欢而非被迫成为经理。我喜欢管理人员专注于为他们的团队服务。我最喜欢的经理是那些专注于自己的团队改善而不是“管理”的人。他们认为自己是团队的帮手和保护者。他们有一种服务态度,他们会认为最重要的工作是让团队成员工作的更好。
既然我问了工程师同样的问题,我就会和经理的答案进行比较,看看他们是否匹配。如果不匹配,可能意味着有一些协作上的矛盾。工作中最可怕的问题是无法辨识的问题。我认为这是经理的工作,确定工作中的问题并解决它。
他们通常回答说是工作人员短缺。因为这是一个显而易见的答案(他们毕竟是招聘),所以我想问第二大挑战是什么。我正在寻找像延迟时间表,产品质量问题和人际关系的问题。每个团队都有问题,所以你得到的答案取决于几个因素:
经理对问题的意识
经理是否诚实地对待你
队伍中的问题的严重性
熟练的经理将有很好的技术手段来做到这一点。当评估个别团队成员的表现时,最好的经理将会仔细收集整个团队的反馈意见。不好的经理将会根据自己的观察点作出评价,而不咨询小组。
我喜欢为那些重视反馈意见并帮助团队成员改进的经理工作。绩效评估可能是痛苦,也可能是积极的过程。根据我自己的观察,我认为大多数人认为这一过程是痛苦的。一个真正伟大的经理将会明白这一点,并且将采取措施,以某种方式使绩效评估变得非常好,让您印象深刻,并希望为他们工作。
你能告诉我一段时间你帮助某人提高他们的表现吗?
在这些考核中你如何教导人?
我想知道我的薪酬是否会根据我对公司的贡献进行调整,我们每年至少会对其进行一次官方的评估。对于这样的公司,我喜欢询问有关股权的问题。你会给我股票期权吗?你能每年给我更多的股票期权吗?
你如何进行加薪预算?
去年的中位数上涨是多少(百分比)?
我可以期待一年以后多少工资?最好的情况,最坏的情况?
我不会将这些问题写入合同,这些问题也不会保证未来的加薪。相反,我想了解公司如何运作。我是需要用我的方式来要求加薪呢,还是有一个已经就位的标准过程?
我认为大多数人已经知道要问这个问题,但为了完整起见,值得一提。大多数公司都准备给你一堆纸或一个描述公司福利的网站。重要的是要知道,因为它通常是您很大一部分补偿。这可能只适用于美国。我不知道公司提供的医疗保险奖励在其他国家如何工作。
一些公司将排名和奖金相关,通过排列每个员工,从最坏到最坏,使一定比例的员工进入“好”,“平均”和“坏“子列表。
你真的认为X%的员工“坏”吗?这对你的招聘过程有什么看法? (这是一个大胆的问题 - 小心谨慎)
你应用某种曲线来确定表现最好的人吗?
您使用什么指标来对员工进行排名?
您如何知道这些指标是否准确收集?
您如何知道这些指标实际上是最佳表现?
面试并不总是能碰到公司的高层领导(特别是对大公司来说),但是当有这样机会时候,我把它作为评估公司财务可行性的机会。我可能没有资格这样做,但有一些明显的问题,我有时可以通过面试发现它们。此外,我也想知道自上而下的文化是什么,因为这些信息可以告诉我公司如何重视工程师价值。
我正在努力了解公司背后的资金。我想知道他们是否由风险投资,私募股权,公共股票或通过收入自筹资金。通常我可以在面试前弄清楚这一点,但公司的领导层常常会给出一些通过 Google 或 CrunchBase 找不到的见解。
如果盈利了,太棒了!如果没有盈利,你们的盈利计划是什么?一些创业公司有盈利计划,而其他创业公司则通过收购或 IPO 寻找出路。
过去几个季度/年的历史收入。它向上趋势吗?
竞争风险,如竞争,意外费用和收入不足。
跑道:在筹集更多资金前,公司可以运营多长时间。
我申请的工作是否可能会在未来被外包,或者这项工作是否可以变成管理外包的工程师。
这是另一个问题,我用来对应工程师与领导层的观点。我正在寻找里面不同的地方。如果领导和工程师观点接近,这表明了良好的从上到下的沟通。我想知道高层领导是否与海内外员工脱节。我也想看看领导层是否有远见,是否沟通良好。我喜欢的公司需要有一个强大的,共同的愿景。
随着这个问题,我也会寻求真实的证据,而不仅仅是营销炒作的信息。如果高层领导给我实际的数字,如收入,市场规模和资本化,这是一个好兆头。此外,如果我可以从其他来源验证这些信息,那就更好了。另一方面,某些数字可能表示非常糟糕,公司的资金只够再烧一个月了。
(面试官:这个面试者好霸气!旁白由高可用小编贡献)
对我来说,这个问题的最佳答案是一个简单的答案。如果该人可以画出一个解释汇报关系结构的简单组织结构图,我很满意。我个人的喜好是为小型,敏捷的公司工作,而组织和通信开销最小。您的偏好可能会有所不同。不管你喜欢什么,这个问题都是为了给你所需要的信息,以便对该公司做出明智的决定。
面试是双向的。 如果您有幸获得 offer,请确保您的经验做出明智的决定。 祝你好运!
推荐阅读
校长:技术成长四个阶段需要的架构知识
我们如何用Cassandra每天存储上亿条线上数据
为什么Slack等聊天工具不适合开源项目开发团队的沟通?
本文作者 Dave Smith,由 jesse 翻译,转载请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
高可用架构
改变互联网的构建方式