【面试必看】系统设计面试该如何回答?

本文介绍了系统设计面试的四个关键步骤:明确系统要求、进行抽象设计、考虑优化点和优化设计。强调了询问系统功能性与非功能性需求的重要性,以及在设计中考虑性能、高可用性和技术选型。同时,建议面试者积累知识、实战练习、保持好奇心并熟悉性能指标和测试工具。
摘要由CSDN通过智能技术生成

我也给大家整理了一份Java核心知识点+面试真题大全,需要的可以点击领取

系统设计面试一般怎么问?


我简单总结了一下系统设计面试相关问题的问法:

  • 设计一个某某系统比如秒杀系统、微博系统、抢红包系统、短网址系统。

  • 设计某某系统中的一个功能比如哔哩哔哩的点赞功能。

  • 设计一个框架比如 RPC 框架、消息队列、缓存框架、分布式文件系统等等。

  • 某某系统的技术选型比如缓存用Redis 还是Memcached、网关用Spring Cloud Gateway 还是Netflix Zuul2

系统设计怎么做?


我们将步骤总结成了以下 4 步。

Step1:问清楚系统具体要求

当面试官给出了系统设计题目之后,一定不要立即开始设计解决方案。 你需要先理解系统设计的需求:功能性需求和非功能性需求。

为了避免自己曲解题目所想要解决的问题,你可以先简要地给面试官说说自己的理解,

为啥要询问清楚系统的功能性需求也就是说系统包含哪些功能呢?

毕竟,如果面试官冷不丁地直接让你设计一个微博系统,你不可能把微博系统涵盖的功能比如推荐信息流、会员机制等一个一个都列举出来,然后再去设计吧!你需要筛选出系统所提供的核心功能(缩小边界范围)!

为啥要询问清楚系统的非功能性需求或者说约束条件比如系统需要达到多少QPS呢?

让你设计一个1w人用的微博系统和100w人用的微博系统能一样么?不同的约束系统对应的系统设计方案肯定是不一样的。

Step2:对系统进行抽象设计

我们需要在一个 High Level 的层面对系统进行设计。

你可以画出系统的抽象架构图,这个抽象架构图中包含了系统的一些组件以及这些组件之间的连接。

在这里插入图片描述

Step3:考虑系统目前需要优化的点

对系统进行抽象设计之后,你需要思考当前抽象的系统设计有哪些需要优化的点,比如说:

  1. 当前系统部署在一台机器够吗?是否需要部署在多台机器然后进行负载均衡呢?

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值