>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Unknown

后端开发者的面试题:没有标准答案

回想一下你上次参加面试的经历。面试官问了诸如"什么是ACID"或"接口与抽象类的区别是什么"这样的问题。你从参考书中背出了标准答案,面试官在笔记本上打了个勾,然后进入下一个问题。这种对话模式类似于大学里的口试,很难真正展示候选人解决实际问题的能力。

Ariardo Martini是Back-End Developer Interview Questions仓库的作者,他也遇到了同样的问题。他更愿意花一整天时间与候选人进行结对编程。但在没有时间进行协作开发的情况下,你需要的是能够激发讨论而非照本宣科的话题。

一份没有标准答案的速查表

这个项目是一套结构化的后端开发者对话式面试话题集。该仓库已获得超过16,000个star,但却没有一条现成的答案。

这是有意为之的。作者在开头就警告:这里的大多数问题都是开放式的,没有唯一的正确答案。这个集合的目的是开启一场对话,展现开发者的思维过程、他们对架构权衡的态度,以及对基本原则的理解。

作者提议讨论的内容

所有材料按主题分成了多个部分。以下是几个能清晰展示该仓库结构的模块。

架构与设计模式

候选人不是背诵GoF书中的模式名称,而是收到实际任务。全局对象和静态对象为何被视为不良实践?Active Record与Data Mapper的使用边界在哪里?或者如何应对"十亿美元的错误"——这个导致数千次生产环境崩溃的空引用概念。

语言与范式

这个部分包含关于类型系统、函数式风格以及语言内部机制的问题。你可能会被要求仅使用不可变数据结构用递归重写一个循环。或者讨论为什么Java和C#中的构造函数不属于接口的一部分。

分布式系统与数据库

这里测试的是对实际扩展挑战的理解。候选人如何评估CAP定理的权衡?在微服务中他们会选择哪种通信模型:请求/响应还是发布/订阅?如何测试并发代码,因为bug可能在高负载下一个月才出现一次?

非技术话题与流程

仓库中还有一个出人意料的部分涉及管理和协作问题。你如何向项目经理解释遗留代码的本质,并证明处理技术债务的必要性?在弹性工作制和无限制休假政策下如何组织团队工作?

这种方法的价值

问题选择原则本身很有意思。Martini建议在面试中引入那些面试官自己也没有完全清晰答案的话题。这样对话就变成了真正的经验交流。

仓库中包含一个单独的代码片段任务分类。候选人拿到一个次优或危险的代码片段,任务是找出栈实现中的内存泄漏,或者重构五个嵌套结构的链式调用if。这展示了候选人是否能识别代码异味并关注可读性。

另一个层面是像比尔·盖茨面试题风格的假设场景。想象你的老板是你的完美克隆,你会愿意为他们工作吗?或者尝试为COBOL辩护,对抗现代语言的倡导者。这类话题测试的是思维灵活性和在不失偏颇的情况下论证观点的能力。

如何使用这个仓库

招聘负责人不应该试图在一次面试中浏览全部150个列表。那会把面试变成一场马拉松式的煎熬。更明智的做法是选择两到三个与具体职位要求匹配的专注领域。

对于开发者来说,这个项目对自我评估很有用。浏览这些话题,如果像协变与逆变继承分布式计算的谬误这样的术语让你感到困惑,你就有了现成的自学主题清单。

最后,这些也是团队讨论的现成话题。以单体架构与微服务的问题为例,用一个小时对你的应用程序进行架构评审。

Back-End Developer Interview Questions是一个将面试形式从口试转变为同行对话的工具。

如果你负责面试,查看这个仓库并尝试建立一种平等的对话。如果你正在计划求职,将这个集合作为评估自己知识的基准。

相关项目