面试:经典问题解决思路

1. 秒杀系统架构

参考:秒杀系统架构优化思路

2. 如何防止订单重复提交

重复提交原因:

  1. 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。
  2. 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。
方案 描述 优点 缺点
方案一 提交订单按钮置灰 简单易实现,常用于短信验证码场景 只能解决多次点击下单按钮的问题
方案二 设计一个服务,预生成全局唯一订单号,如UUID,提交订单前先取这个唯一单号ID,然后带上ID提交,在后端通过唯一索引做幂等和防重 要多请求一次、多增加了一个分布式服务、QPS高时服务压力大、数据库多设计了一个单号字段
方案三 修改方案二,由前端生成唯一订单号 比方案二少一次服务请求,服务器压力降低 依然需要新增字段
方案四 使用用户id+分隔符+商品ID拼成一个临时标识符,用它做key在redis上生成一个校验对象,并过期自动删除,提交时用这个key做校验防止重复提交 只需要后端修改、不需要修改数据库
相关推荐
天天摸鱼的java工程师28 分钟前
当我成为面试官,我才知道当年那些面试官其实并不是在难为我,而是在考察我面对问题的拆解能力
前端·后端·面试
Dubhehug1 小时前
4.B树和B+树的区别?为什么MySQL选择B+树作为索引?
数据库·b树·mysql·面试·b+树
何遇er1 小时前
大厂的前端面试——低代码混合
低代码·面试
前端小巷子2 小时前
Cookie与Session:Web开发中的身份验证与数据存储
前端·javascript·面试
汪子熙2 小时前
Visual Studio Code 中排除指定文件夹搜索的最佳实践与实现原理
后端·面试
开开心心就好3 小时前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony
yanlele11 小时前
我用爬虫抓取了 25 年 5 月掘金热门面试文章
前端·javascript·面试
小兵张健12 小时前
武汉拿下 23k offer 经历
java·面试·ai编程
爱莉希雅&&&13 小时前
技术面试题,HR面试题
开发语言·学习·面试
天天扭码13 小时前
《很全面的前端面试题》——HTML篇
前端·面试·html