系统设计面试

如何处理一个系统设计的面试题

系统设计面试是一个开放式的对话。他们希望你去主导这个对话

第一步:描述使用场景,约束和假设

把所有需要的东西聚集在一起,审视问题。不停的提问,以至于我们可以明确使用场景和约束。讨论假设。

  • 谁会使用它?
  • 他们会怎样使用它?
  • 有多少用户?
  • 系统的作用是什么?
  • 系统的输入输出分别是什么?
  • 我们希望处理多少数据?
  • 我们希望每秒钟处理多少请求?
  • 我们希望的读写比率?

第二步:创造一个高层级的设计

使用所有重要的组件来描绘出一个高层级的设计

  • 画出主要的组件和连接 (process on)
  • 证明你的想法

第三步:设计核心组件

对每一个核心组件进行详细深入的分析。举例来说,如果你被问到设计一个 url缩写服务,开始讨论:

  1. 生成并储存一个完成 url 的 hash
  • MD5 和 Base62
  • Hash碰撞
  • SQL还是NoSQL
  • 数据库模型
  1. 将一个 hased url翻译成一个完整的 url
  • 数据库查找
  1. API和面向对象设计

第四步:扩展设计

确认和处理瓶颈以及一些限制。举例来说就是你需要下面的这些来完成扩展性的议题吗?

  • 负载均衡
  • 水平扩展
  • 缓存
  • 数据库分片

论述可能的解决办法和代价。每件事情需要取舍。可以使用可扩展系统的设计原则来处理瓶颈。

附加

预估计算量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B语言 :我心目中永远的两位神共同开发出来的语言

B是贝尔实验室大约在1969年由Ken Thompson和Dennis Ritchie开发的一种编程语言。 B源于BCPL,它的名字可能是BCPL的缩写。汤普森的同事丹尼斯里奇推测,这个名字可能是基于Bon,这是汤普森为Multics设计的一种更早但与之无关的编程语言。[注1] …

lombok 相关注解

话不多说&#xff0c;lombok相关的注解的使用&#xff0c;需要添加入如下依赖&#xff1a; <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version> <!-- Spring Boot 项…

Vue-Router 路径匹配与重定向

一、效果与描述 通过设置路由匹配同时设置重定向&#xff0c;让输错的网址重定向到指定页面&#xff0c;例如在网页输入网页地址把路径进行任意修改&#xff0c;重定向到登录页面。 二、Vue-Router代码 import { createRouter, createWebHashHistory } from vue-routerimport …

代码随想录算法训练营第一天 | 704-二分法查找、27. 移除元素

数组基础 1、数组定义&#xff1a;数组是存放在连续内存空间上的相同类型数据的集合。 特点&#xff1a; 数组下标都是从0开始的。数组内存空间的地址是连续的 2、数组的元素是不能删的&#xff0c;只能覆盖。 704. 二分查找 1、题目链接&#xff1a;. - 力扣&#xff08…

2024年华为OD机试真题-小明找位置-Java-OD统一考试(C卷)

题目描述&#xff1a; 小朋友出操&#xff0c;按学号从小到大排成一列&#xff1b;小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n)&#xff1b;学号为整数类型&#xff0c;队列规模<10000&#xff1b; 输入…

vue 中import 不同层级目录下的文件的表示方式

项目场景&#xff1a; 项目背景&#xff1a; vue 项目中开发页面 需要 用到其它目录下的 文件&#xff0c;需要使用 import 进行导入 问题描述 问题&#xff1a; import util from /libs/util.jsimport drawer from ../drawer/drawerimport mixinViewModule from /mixins/vi…

vue3+ts+vite中封装axios,使用方法从0到1

一、安装axios npm install axios types/axios --save二、配置代理vite.config.ts&#xff0c;如果没有需要新建该文件 module.exports {server: {proxy: {/api: {target: http://localhost:5000, // 设置代理目标changeOrigin: true, // 是否改变请求源地址rewrite: (path)…

氢原子为什么没有中子呢?

问题描述&#xff1a;氢原子为什么没有中子呢&#xff1f; 问题解答&#xff1a; 氢原子是唯一一个没有中子的常见原子。其原子核只包含一个质子&#xff0c;而中子的质量与质子相当&#xff0c;但没有电荷。氢原子的构成为一个质子和一个电子&#xff0c;因此没有中子。 原…

ECMAScript 6 (二)

ECMAScript 6 (二) 面向对象的扩展 不可扩展 一级保护&#xff0c;不可扩展 我们之前在创建的时候&#xff0c;因为JS是一个弱语言&#xff0c;所以对象在创建好之后&#xff0c;任然可以二次添加删除修改属性 同时在ES6里面&#xff0c;虽然推出了const&#xff0c;但是con…

pom.xml中resouces标签

pom.xml中resouces标签 resources是maven在编译项目时将资源文件或者额外的文件赋值到输出目录(target/classes)中。通常包括配置文件&#xff0c;属性文件&#xff0c;模板文件&#xff0c;jar包等。 resouces中可以包含resouce。也就是可以自定义的配置多个资源配置。 direct…

数据结构学习之单向循环链表应用的案例(旋转链表)

实例要求&#xff1a; 1、给定一个链表的头节点 head &#xff0c;请你旋转链表&#xff0c;将链表每个节点向右移动 k 个位置&#xff1b; 2、链表中节点的数目的范围为[0, 500] &#xff1b; 实例分析&#xff1a; 1、入参合理性检查&#xff0c;即head ! NULL || head-&…

JVM运行时数据区(下篇)

紧接上篇&#xff1a;JVM运行时数据区&#xff08;上篇&#xff09;-CSDN博客 堆 一般Java程序中堆内存是空间最大的一块内存区域。创建出来的对象都存在于堆上。 栈上的局部变量表中&#xff0c;可以存放堆上对象的引用。静态变量也可以存放堆对象的引用&#xff0c;通过静态…

Word插件-大珩助手-手写电子签名

手写签名 支持鼠标写&#xff0c;支持触摸屏写&#xff0c;点击画笔按钮切换橡皮擦&#xff0c;支持清空画板重写&#xff0c;点击在word中插入签名&#xff0c;可插入背景透明的签字图 素材库-保存签名 将写好的签字图复制粘贴到素材库中&#xff0c;以便永久使用&#xff…

AMEYA360:广和通RedCap模组FG131FG132系列

2024年1月&#xff0c;广和通RedCap模组FG131&FG132系列已进入工程送样阶段&#xff0c;可为终端客户提供样片。广和通RedCap模组系列满足不同终端对5G速率、功耗、尺寸、成本的需求&#xff0c;全面助力RedCap技术的行业应用。 FG131&FG132系列基于骁龙X35 5G调制解调…

第六站:C++面向对象

面向对象的第一概念:类 类的构成: “类”&#xff0c;是一种特殊的“数据类型”&#xff0c;不是一个具体的数据。 类的设计: 创建一个类: class Human { public://公有的,对外的void eat();//方法,成员函数void sleep();void play();void work();string getName();//获取对内…

Git相关3 —— 命令及添加Gitee的公钥

1.Git相关命令1 -- 工作目录、暂存区、本地仓库、 使用平台有&#xff1a;cmd、Git bash、VSCode window系统修改VSCode默认终端为git bash git init 初始化 --- 新增.git 文件夹 git status 查看 文件/文件夹 状态 git add 需要追踪的文件名/文件夹名 提交到暂存区 git add…

Electron中 主进程(Main Process)与 渲染进程 (Renderer Process) 通信的方式

1. 渲染进程向主进程通信 修改 html 文件内容 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 解决控制…

docker部署私人云盘nextcloud

1.拉取镜像 docker pull nextcloud 2.创建目录 mkdir -p /data/nextcloud/{config,data,apps} 3.创建实例 docker run -itd --name yznextcloud -v /data/nextcloud/config:/var/www/html/config -v /data/nextcloud/data:/var/www/html/data -v /data/nextcloud/apps:/va…

Sublime Text4 crack时替换的汇编指令

Sublime Text4 crack时替换的汇编指令 首先请支持正版&#xff0c;这里研究破解的步骤&#xff0c;仅做汇编代码学习。 破解步骤很简单&#xff1a; 打开二进制文件&#xff0c; 搜索 80 78 05 00 0F 94 C1&#xff0c; 替换为 C6 40 05 01 48 85 C9. (源: https://gist.git…