面试:经典问题解决思路

1. 秒杀系统架构

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

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

重复提交原因:

  1. 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。
  2. 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。
方案 描述 优点 缺点
方案一 提交订单按钮置灰 简单易实现,常用于短信验证码场景 只能解决多次点击下单按钮的问题
方案二 设计一个服务,预生成全局唯一订单号,如UUID,提交订单前先取这个唯一单号ID,然后带上ID提交,在后端通过唯一索引做幂等和防重 要多请求一次、多增加了一个分布式服务、QPS高时服务压力大、数据库多设计了一个单号字段
方案三 修改方案二,由前端生成唯一订单号 比方案二少一次服务请求,服务器压力降低 依然需要新增字段
方案四 使用用户id+分隔符+商品ID拼成一个临时标识符,用它做key在redis上生成一个校验对象,并过期自动删除,提交时用这个key做校验防止重复提交 只需要后端修改、不需要修改数据库
相关推荐
程序员爱钓鱼12 分钟前
Rust HashMap 详解:键值存储、查询、更新与统计
后端·面试·rust
触底反弹10 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
醇氧12 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
黄敬峰15 小时前
从零搞懂 useState 与 Fragment:React 函数式组件的基石
面试
谙弆悕博士15 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
Android研究员19 小时前
Android进阶之事件分发机制深度剖析
android·前端·面试
触底反弹20 小时前
🔥 AI 写代码总翻车?这套实战方法论救了我
人工智能·面试·程序员
风栖柳白杨20 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
imbackneverdie20 小时前
知网官宣:禁止 AI 列为论文署名作者,标注 Gemini、DeepSeek 等 AI 为作者的稿件统一下架
大数据·人工智能·ai·职场和发展·aigc·科研·高校
测试老哥1 天前
接口自动化测试分层设计与实践总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试