面试中遇到的设计题

1. 如何设计秒杀系统

前端:

a. 一些防刷单校验,拉长整个交易流程,起到一个削峰作用

b. 静态资源多CDN部署

c. 前端缓存,有些页面的切换,不需要调用后端接口

后端:

接口性能优化:使用缓存,异步,多线程,功能降级等手段

还有些高并发时保证系统稳定性的手段:扩容, 升配,限流,降级

还有是想做系统隔离/数据隔离的方案 这种成本很高。

2. 红包系统怎么设计

  1. 模型设计

红包池表,红包账户表,红包池表

  1. 怎么支持高并发?

高并发需要考虑这个并发是有多高?拿redis可支撑的写入速度作为分界线,8万/秒。

如果并发低于这个值?这个场景较好处理,使用redis作为主要的存储介质,需要使用lua脚本完成红包金额生成,红包扣减等动作。

如果高于这个值?可以考虑下吗几种方案?

一是. 使用消息队列,异步的方式,处理抢红包的请求,起到一个削峰的作用。配合的玩法,用户抢到红包后,需要一定的时间后才能打开红包。

二是. 将一个大红包均分成多个副本,每个副本分布在不同的redis节点上。再有一个前置的负载均衡器,可以将请求均匀的打在不同的节点上。解决单点瓶颈。

最后,为了保证系统的稳定,一定要做限流。预期外的流量,不要接受。

3. 怎么做一个唯一id的生成器

雪花算法

41位的时间戳 + 10位机器码 + 12位序列号

时间戳是毫秒级;机器码由用户指定可能有重复的风险;12位序列号的范围是0~4096;

4. 分布式限流怎么做

使用令牌桶。原理:算法以固定的速度向桶中存放令牌;桶有一定的容量,如果桶满了,则将新生成的令牌丢弃;有请求过来会消耗令牌。

相关推荐
奔跑的蜗牛ing1 小时前
CentOS Nginx 安装与静态文件服务器配置指南
前端·面试·架构
KaifuZeng4 小时前
通信与接口协议面试五、RS422
嵌入式硬件·面试·通信与接口
Frostnova丶5 小时前
(12)LeetCode 76. 最小覆盖子串
算法·leetcode·职场和发展
旧曲重听15 小时前
为什么现在 RAG 越少越少提及了
数据库·程序人生·职场和发展·agent
SamDeepThinking6 小时前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
wear工程师6 小时前
setState 到底是不是异步的?这题从 React 16 问到 18,标准答案早就变了
react.js·面试
凯瑟琳.奥古斯特6 小时前
力扣1013三等分解法与C++实现
开发语言·c++·算法·leetcode·职场和发展
凯瑟琳.奥古斯特8 小时前
力扣1012数位DP解法详解
开发语言·c++·算法·leetcode·职场和发展
SamDeepThinking9 小时前
为什么很多人学了Java,还是没真正理解类和对象?
java·后端·面试
阿新聊ai9 小时前
Claude Code 为什么总不懂你的项目?缺一张「项目地图」
前端·后端·面试