面试篇-系统设计题总结

文章目录

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

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
相关推荐
顺凡8 小时前
删一个却少俩:Antd Tag 多节点同时消失的原因
前端·javascript·面试
音符犹如代码10 小时前
Java并发List实战:CopyOnWriteArrayList原理与ArrayList常见面试题
java·开发语言·面试·list
蚂小蚁15 小时前
一文吃透:宏任务、微任务、事件循环、浏览器渲染、Vue 批处理与 Node 差异(含性能优化)
前端·面试·架构
uhakadotcom17 小时前
在使用cloudflare workers时,假如有几十个请求,如何去控制并发?
前端·面试·架构
嵌入式学习之旅19 小时前
嵌入式面试1103
面试·职场和发展
蒙奇D索大19 小时前
【算法】递归算法实战:汉诺塔问题详解与代码实现
c语言·考研·算法·面试·改行学it
重铸码农荣光21 小时前
从「[1,2,3].map (parseInt)」踩坑,吃透 JS 数组 map 与包装类核心逻辑
面试·node.js
疯狂踩坑人21 小时前
结合400行mini-react代码,图文解说React原理
前端·react.js·面试
程序员爱钓鱼1 天前
Python编程实战——Python实用工具与库:Numpy基础
后端·python·面试
晨非辰1 天前
【数据结构初阶】--从排序算法原理分析到代码实现操作,参透插入排序的奥秘!
c语言·开发语言·数据结构·c++·算法·面试·排序算法