美文网首页谈技术简友广场读书
系统设计面试与现实完全不同

系统设计面试与现实完全不同

作者: 技术的游戏 | 来源:发表于2023-03-08 16:24 被阅读0次

当您面试软件开发工作时,您可能会遇到一些系统设计问题。

特别是如果您正在寻求高级职位。

像许多软件开发一样,面试问题与现实完全不同。

面试是什么样的

面试官给你一个服务的抽象描述。您应该自己设计答案。

在面试中,你需要提问。基本上,收集需求。

  • 该应用程序应该做什么?
  • 人们将如何使用它?
  • 有多少人会使用它?
  • 应用程序是否有高负载?

通常,面试官对于他们希望看到的解决方案有一些想法。

您需要提出可以满足要求的技术和实施策略的组合。

这是一次令人生畏的交流。基本上,您必须在短短几分钟的讨论/思考中设计出一个高性能服务。

光是时间限制是不现实的。

现实世界中的系统设计

您的应用程序运行缓慢或无法很好地扩展。

那里有现有代码,您需要了解它是如何工作的。需求收集是一个弄清楚谁在使用现有服务以及它有什么问题的过程。

歧义比比皆是。您花费大量时间了解问题所在以及现有部分如何组合在一起。

现在,您需要提出一个建议的计划。所以,你写了一份设计文件。通常,您有几天或几周的时间来研究、计划和写下您的想法。

在那些日子和几周里,您将与其他工程师讨论他们的想法。有没有人有比你更好的解决方案?有没有你没有考虑过的方法?

编写设计文档后,您将与团队共享。大家都懂设计吗?有什么顾虑?我们如何改进它?

现在,您需要规划实施设计的工作。新变化的测试计划是什么?我们如何确保更改是零停机时间?其他团队需要了解和审查此设计的哪些内容?

面试与现实

现实与面试有很大不同。

让我们总结一下差异:

  • 面试是全新的,抽象的新问题。现实是在现有的应用程序和依赖项中工作。
  • 面试要求收集是简单的问题。现实情况是您必须清除旧代码并与了解它的高级开发人员/其他团队交谈。
  • 面试需要几分钟,时间有限。现实需要数天/数周才能提出可行的系统设计。
  • 在面试中你一个人工作。实际上,系统设计是高度协作的,实际上需要与许多利益相关者交谈。
  • 在面试中,有一个口头计划,也许还有一两个图表。实际上,您需要能够清楚地写出设计文档并整合反馈。
  • 面试期望一个完美的想法,当场。现实承认总会有权衡取舍,您需要时间和多个贡献者才能找到最佳解决方案。
  • 面试相对不太关心测试计划、回填现有数据、迁移期间不丢失数据以及零停机部署。实际上,这些是最难的部分。

学习系统设计

我听到许多被系统设计吓倒的软件工程师。“我知道得不够多,我担心我会因为不知道而被解雇!”

这是真相……

您可能需要了解系统设计的要点才能通过面试阶段。这里有一些资源可以帮助系统设计面试。

但不要被吓倒并认为这份工作实际上就是那样。

相反,设计一种新方法更加微妙和协作。没有人会期望您当场为新建筑产生天才的想法。

所以,深吸一口气。你不会因为系统设计而被解雇。

每日清单

我每天早上都会为软件开发人员写一些新东西。

如果你喜欢我的文章,点赞,关注,转发!

相关文章

网友评论

    本文标题:系统设计面试与现实完全不同

    本文链接:https://www.haomeiwen.com/subject/vxjoldtx.html