首页 > 其他分享 >系统设计面试与现实完全不同

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

时间:2023-03-09 16:31:44浏览次数:29  
标签:需要 系统 现实 想法 面试 设计

image.png

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

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

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

面试是什么样的

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

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

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

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

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

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

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

现实世界中的系统设计

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

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

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

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

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

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

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

面试与现实

现实与面试有很大不同。

让我们总结一下差异:

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

学习系统设计

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

这是真相……

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

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

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

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

每日清单

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

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

标签:需要,系统,现实,想法,面试,设计
From: https://blog.51cto.com/u_12409319/6110901

相关文章

  • 索引设计原则
    满足业务需求的情况下,尽量降低主键的长度。插入数据时,尽量选择顺序插入,选择使用AUTO_INCREMENT自增主键。尽量不要使用UUID做主键或者是其他自然主键,如身份证号。业务操作......
  • 架构设计思想-“开闭原则”
    架构设计思想,其中有一种设计原则叫“开闭原则”,其核心是:一个对象对扩展开放,对修改关闭。就是说,一旦写好了某个类,就不要去轻易改动他,而是要保证它一直能运行下去,而面对新的......
  • Spring设计模式——代理模式[手写实现JDK动态代理]
    代理模式代理模式(ProxyPattern):是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介作用,代理模式属于结构型设计模式。使用代......
  • 一Spring框架基础--2设计模式
    一Spring框架基础--2设计模式1.3spring用到的设计模式1.3.1责任链模式有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象......
  • 浅析三款大规模分布式文件系统架构设计
    什么是文件系统当提到文件系统,大部分人都很陌生。但我们每个人几乎每天都会使用到文件系统,比如大家打开Windows、macOS或者Linux,不管是用资源管理器还是Finder,都是在......
  • 面试被问到了解哪些开发模型?看这一篇就够了!
    前言软件开发模型是指软件开发全部过程、活动和任务的结构框架。一般包括需求、设计、编码和测试等阶段,甚至包括维护阶段。软件开发模型明确规定了软件开发过程中要完成的......
  • day88 - 数据库函数设计-插入100w条数据
    数据库插入100w条数据CREATETABLE`app_user`(`id`BIGINT(20)UNSIGNEDNOTNULLAUTO_INCREMENT,`name`VARCHAR(50)DEFAULT''COMMENT'用户昵称',`email`V......
  • Spring设计模式——原型模式
    原型模式原型模式(PrototypePattern),是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式主要适用于以下场景:类初始化消耗资源较多使用new生......
  • 前端设计模式——中介者模式
    前端中介者模式(MediatorPattern),用于将对象之间的通信解耦并集中管理。它通过引入一个中介者对象,将对象之间的交互转移到中介者对象中,从而避免对象之间直接相互通信。在前......
  • 设计一个采用三级流水线、顺序、单发射、单核的32位RISC-V处理器
      一切从头开始 1.目的:单周期单指令cpu  只要加法RV32I 通过最后测试需要五条,后面说原因,addaddibnejal(跳转并存储一个地址)lui把立即数做为高位存储在寄存......