当前位置: 首页 > news >正文

面试篇-系统设计题总结

这里记录一些有趣的系统设计类的题目,一般大家比较喜欢出的设计类面试题目会和高可用系统相关比如秒杀和抢红包等。欢迎大家在评论中评论自己遇到的题目,本篇文章会持续更新。
在这里插入图片描述

1、设计一个抢红包系统

抢红包系统其实也是秒杀类中的一个场景,抢红包的特点在于无法超售,下单中的超卖、少卖问题是可以允许的。但是对于红包,一旦用户抢到的钱比发出去的钱更多,那就是大问题了。

抢红包系统的特点:

  • 高并发场景保证系统的高可用
  • 不能超售,及不允许抢到的钱比发出的钱多。

1.1 高可用的解决方案:

  1. 负载均衡
  2. 限流
  3. 熔断、降级
  4. 隔离
  5. 超时重试
  6. 异步调用
  7. 使用缓存
    涉及高科用系统可以参考我之前写的这篇文章:如何设计一个高可用系统

1.2 抢红包系统的设计

参考文章:
https://jiajunhuang.com/articles/2023_01_31-red_envelope.md.html
https://juejin.cn/post/6925947709517987848
上面两篇文章写的很好,建议参考,这里总结一下该方案设计:
1. 分布式锁拦截 或者 mysql层乐观锁控制
2. 预分配红包,增加一个红包明细表

还有一种方案可以使用redis队列做存储,每次来抢pop一个红包,然后同时将这个红包再异步存储到库中。这里需要注意的就是如果pop完系统崩溃,可能造成redis数据丢了,或者mysql还没有存储到红包,该如何处理?
在这里插入图片描述

1.3 其他

红包分配算法其实也会常问,如何分配才能保证随机,这道题属于算法题,不属于系统设计题目,可作为延伸思考。
一般会使用二倍均值法
参考文章:https://juejin.cn/post/7080343105177665544

2、秒杀系统设计

秒杀系统的特点如下:

  • 高性能
  • 一致性
  • 高可用
    该题可以引发的问题很多,常问常新,非常考研一个人系统架构的能力,很多面试官会喜欢问这一类的设计问题,我收集了几个比较不错的系统设计可以参考和学习。
    如何设计一个秒杀系统1
    如何设计一个秒杀系统2

相关文章:

  • 开发AI黑客机器人并上传全云端
  • ReactNative如何实现沉浸式状态栏及渐变色Header【兼容Android和iOS】
  • TreeSize Free - 硬盘空间管理工具
  • Beyond Low-frequency Information in Graph Convolutional Networks
  • idea 出现 git credential manager for windows解决方法
  • WPF自定义模板--Lable
  • k8s kubectl top pod报错error Metrics API not available
  • 竞品测试 埋点自动化
  • 机器学习10大算法
  • 11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法
  • ChatGPT:JVM-为什么从伊甸园区到幸存区后,from和to要一直交换
  • yum使用报错:ImportError: /lib64/libxml2.so.2: file too short
  • Linux下系统目录对应的功能介绍
  • vue动态组件与插件到底是什么?
  • [Vue学习]生命周期及其各阶段举例
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【个人向】《HTTP图解》阅后小结
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Electron入门介绍
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 算法之不定期更新(一)(2018-04-12)
  • 微服务核心架构梳理
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Android开发者必备:推荐一款助力开发的开源APP
  • Linux权限管理(week1_day5)--技术流ken
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (Forward) Music Player: From UI Proposal to Code
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四)Controller接口控制器详解(三)
  • (算法)Travel Information Center
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Linq学习笔记
  • (转)LINQ之路
  • (转)项目管理杂谈-我所期望的新人
  • (转)用.Net的File控件上传文件的解决方案
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .Mobi域名介绍
  • .NET CORE Aws S3 使用
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net的socket示例
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET连接MongoDB数据库实例教程
  • .net项目IIS、VS 附加进程调试
  • :中兴通讯为何成功
  • [<事务专题>]