Hacker News 中文摘要

RSS订阅

你不是在面试工作,你是在试镜职位 -- You're Not Interviewing for the Job. You're Auditioning for the Job Title

文章摘要

文章通过作者的一次面试经历,揭示了技术面试中的“表演”性质。面试官更关注候选人展示复杂问题的解决能力,而非实际工程中的简洁与效率。作者认为,面试更像是对“解决难题的架构师”这一职位的试镜,而非对实际工作能力的评估。

文章总结

文章标题:你不是在面试工作,你是在为职位头衔试镜

主要内容:

文章通过作者的一次面试经历,揭示了技术面试中的“表演”性质。作者在面试中被要求展示如何对包含百万条记录的数组进行排序,他提出了实际工程中更高效的方法,如分页、数据库索引和服务器端过滤,但面试官却期望他展示JavaScript的Array.prototype.sort()方法。作者认为,面试官更看重的是“表演”复杂问题的能力,而非实际工程中的简洁和效率。

技术面试的“剧场”性质:

  1. 复杂性与能力:在面试中,复杂性被视为能力的象征。面试者需要展示对分布式系统模式、企业级工具的熟悉程度,以及为理论上的百万用户设计架构的能力。然而,在实际工作中,简洁的设计才是王道,只有在真正需要时才增加复杂性,并优化可维护性而非理论上的规模。

  2. 面试的“剧本”:系统设计面试通常遵循固定的“剧本”:

    • 第一幕:召唤巨龙:假设无限用户和行星级流量,将每个合理的数字乘以1000,将简单的应用视为处理纽约证券交易所的系统。
    • 第二幕:绘制神秘符号:在白板上画满方框、箭头,至少一个冗余的Kubernetes集群,添加消息队列和微服务,并在每个组件周围绘制负载均衡器。
    • 第三幕:召唤技术之神:讨论共识算法,提到可观测性和SLOs,并低声念出“最终一致性”以抵御未来的扩展问题。

为什么存在这种“剧场”性质:

  1. 信号与噪音:复杂性比判断更容易评估。面试者可以背诵CAP定理和SQL与NoSQL数据库的区别,但知道何时不使用分布式系统则更难在45分钟的对话中评估。
  2. 风险规避:招聘委员会更害怕假阴性而非假阳性。一个“简单”的答案感觉有风险,而一个“复杂”的答案感觉更安全,即使它对实际问题来说是过度设计。
  3. 抱负差距:公司为他们的“抱负”自我招聘,而不是当前的现实。他们想要能够理论上扩展到百万用户的“高级工程师”,而不是为当前1万日活跃用户编写可维护代码的人。
  4. 面试官的激励:讨论负载均衡策略和分布式共识比谈论无聊的CRUD操作更有趣,即使CRUD是实际工作的90%。

诚实回答的代价:

在面试中,诚实的回答往往不会得到工作机会。例如: - 背压问题:诚实的回答是“我们不需要处理背压”,而面试回答是“我们实现了指数退避和断路器”。 - 数据库问题:诚实的回答是“Postgres处理得很好”,而面试回答是“我们将使用多语言持久化策略”。 - 扩展问题:诚实的回答是“我们没有1000万用户”,而面试回答是“我们将实现水平分片和自动扩展的Kubernetes pods”。

如何赢得这场游戏:

  1. 将表演与实践分开:在面试中表演并不意味着你是伪君子,而是对破碎系统的务实应对。
  2. 学习“神圣文本”:学习分布式系统模式,即使你永远不会使用它们。练习绘制在面试中看起来令人印象深刻的架构图。
  3. 接受陈词滥调:总是以“在规模上,我们需要考虑…”开始讨论,尽早提到监控和可观测性,即使对于简单系统也是如此。
  4. 然后放下表演:一旦被雇佣,无情地倡导简洁。成为质疑“我们真的需要这种复杂性吗?”的声音。

结论:

技术面试存在于一个平行宇宙中,舞台要求“复杂性表演”,而工作奖励“简洁的掌握”。系统是破碎的,但个体演员不能通过自我牺牲来修复它。扮演你的角色,获得职位,然后利用你的位置倡导理性。最好的报复不是失败,而是成功,然后删除不必要的复杂性。

总结:

文章揭示了技术面试中的“表演”性质,指出面试中复杂性问题的重要性,而实际工作中简洁和效率更为关键。作者建议面试者学习如何在面试中表演,但一旦被雇佣,应倡导简洁和理性。

评论总结

评论内容总结:

  1. 面试过程的批评

    • 许多评论者认为面试过程过于形式化,与实际工作内容脱节。例如,评论2指出面试中的许多步骤并不涉及技术问题,而是更注重沟通技巧。
    • 评论7提到,面试者往往被要求展示复杂的解决方案,而不是实际解决问题的能力,导致面试表现与实际工作能力之间的差距越来越大。
  2. 面试设计的质疑

    • 评论4认为,许多面试设计是为了排除美国公民,偏向签证持有者。
    • 评论11指出,面试内容往往与实际工作无关,因为公司没有时间更新面试脚本。
  3. 面试与真实能力的脱节

    • 评论6强调,面试中过于复杂的解决方案并不一定代表优秀,反而简单的解决方案更能体现候选人的能力。
    • 评论14表示,面试官更看重候选人如何解决问题,而不是他们能否强行解决一个荒谬的问题。
  4. 面试的表演性质

    • 评论9将面试比作一场表演,候选人需要展示复杂的架构和技术,即使这些在实际工作中并不必要。
    • 评论17指出,创业公司不需要这种表演性的面试,而是更注重实际和高效的解决方案。
  5. 面试的改进建议

    • 评论18建议,面试应该由未来的同事进行,以便双方评估是否适合一起工作。
    • 评论16提出,通过查看候选人与AI的聊天记录,可以更好地了解他们的实际编码能力和思维方式。
  6. 面试的心理学分析

    • 评论19认为,面试中的许多不合理设计源于结构性问题,如宗教般的仪式感、面试官的不专业以及对自身地位的维护。
    • 评论15指出,招聘委员会更害怕误判强候选人为弱,因此宁愿错过一些优秀候选人,也不愿冒险录用不合适的人。
  7. 对面试的反思

    • 评论3表示,许多有经验的工程师甚至无法通过自己设计的面试,暗示面试过程的不合理性。
    • 评论20认为,尽管面试可能存在问题,但面试官通过复杂的问题来评估候选人的思维方式和基础知识是合理的。

总结:评论者对技术面试的批评主要集中在面试过程的形式化、与实际工作脱节以及过于复杂的解决方案要求上。同时,也有评论者提出了改进面试的建议,如由未来同事进行面试、通过AI聊天记录评估候选人等。整体上,评论者认为面试应更注重候选人的实际能力和思维方式,而不是表演性的展示。