高并发系统设计面试题
高并发系统设计面试题
🔥🔥🔥 超高频问题(几乎必问)
- 让你设计一个秒杀系统,你会考虑哪些问题?
- 如果你的业务量突然提升100倍QPS你会怎么做?
- 库存扣减如何避免超卖和少卖?
- 订单到期关闭如何实现
- 让你设计一个订单号生成服务,该怎么做?
- 如何设计一个购物车功能?
- 你是如何进行SQL调优的?
- Redis如果挂了,你怎么办?
- 如何解决消息重复消费、重复下单等问题?
- 不用redis分布式锁,如何防止用户重复点击?
🔥🔥 高频问题
- 如何用Redis实现朋友圈点赞功能?
- Redis的zset实现排行榜,实现分数相同按照时间顺序排序,怎么做?
- 如何实现"查找附近的人"功能? 🏷️IoT
- 消息队列使用拉模式好还是推模式好?为什么?
- 如果让你实现一个RPC框架,会考虑用哪些技术解决哪些问题?
- 一个订单,在11:00超时关闭,但在11:00也支付成功了,怎么办?
- 一个支付单,多个渠道同时支付成功了怎么办?
- 如果让你实现消息队列,会考虑哪些问题?
- 不使用synchronized和Lock如何设计一个线程安全的单例?
- 索引失效的问题是如何排查的,有哪些种情况?
🔥🔥 高频问题(续)
- 说一说多级缓存是如何应用的?
- 从B+树的角度分析为什么单表2000万要考虑分表?
- 线上接口如果响应很慢如何去排查定位问题呢?
- 怎么做数据对账?
- MySQL千万级大表如何做数据清理?
- 高并发的库存系统,在数据库扣减库存,怎么实现?
- MySQL热点数据更新会带来哪些问题?
- 和外部机构交互如何防止被外部服务不可用而拖垮
- MySQL里有2000W数据,Redis中只存20W的数据,如何保证redis中的数据都是热点数据?
- 用了一锁二查三更新,为啥还出现了重复数据?
🔥 中频问题
- 每天100w次登录请求,4C8G机器如何做JVM调优?
- Kafka,单分区单消费者实例,如何提高吞吐量
- 40亿个QQ号,限制1G内存,如何去重?
- 如果单表数据量大,只能考虑分库分表吗?
- InnoDB为什么不用跳表,Redis为什么不用B+树?
- 为什么MySQL用B+树,MongoDB用B树?
- 一个接口3000QPS,接口RT为200MS,预估需要几台机器?
- 在100M内存下存储一亿个整数,其范围在1到2亿,如何快速判断给定到一个整数数值是否存在?
- 数据库逻辑删除后,怎么做唯一性约束?
- 电商下单场景,如何设计一个数据一致性方案?
🔥 中频问题(续)
- 如何实现缓存的预热?
- 如何实现百万级数据从Excel导入到数据库?
- 如果需要跨库join,该如何实现?
- 应用占用内存持续增长,但是堆内存、元空间都没变化,可能是什么原因?
- 和其他公司做数据交互时,有什么需要注意的?
- 4C8G的机器,各项系统指标,什么范围算是正常?
- 4C8G 16台 和 8C16G8台,不考虑成本的情况怎么选?
- 如何预估一个系统的QPS?
- 如何做SQL调优:用了主键索引反而查询很慢?
- 如果要存IP地址,用什么数据类型比较好? 🏷️IoT
🔥 中频问题(续2)
- 一次RPC请求,客户端显示超时,但是服务端不超时,可能是什么原因?
- 为什么不建议使用MC实现订单到期关闭?
- 如何实现敏感词过滤?
- 为啥不要在事务中做外部调用?
- 如何做平滑的数据迁移?
- 如何实现一个抢红包功能?
- 使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?
- 加分布式锁之后影响并发了怎么办?
- 数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景?
- 为什么很多公司数据库不允许物理删除(delete) 数据
📱 中低频问题
- 为什么不用分布式锁来实现秒杀?
- 为什么不直接用原生的BlockingQueue做消息队列
- SpringEvent和MQ有什么区别?各自适用场景是什么?
- 如何实现百万级排行榜功能?
- 为什么一定要做限流?不应该服务好客户吗?不应该是加机器吗?
- 大型电商的订单系统,如何设计分库分表方案?
- 你认为分布式架构一定比单体架构要好吗?
- 代码中使用长事务,会带来哪些问题?
- Redis的内存如果用满了,会挂吗?
- 给第三方提供接口调用,需要注意些什么?
📱 中低频问题(续)
- 应用启动后前几分钟,Load、RT、CPU等很高,如何定位?可能原因是什么?
- 分库分表时,每个城市的人口不一样,有的密集,有的稀疏,如何均匀分布?
- 项目中,如果日志打印成为瓶颈,该如何优化?
- 分布式系统,用户登录信息保存在服务器A上,服务器B如何获取到共享session
- 实现一个登录拉黑功能,实现拉黑用户和把已经登录用户踢下线?
- 调用第三方接口支付时,第三方接口显示支付成功,但是在调用方显示失败,什么原因?
- 读取一千个文件,一个线程读取和开十个线程读取,哪种方式效率高?
- a,b 的联合索引,select b where a = xx,无法走索引覆盖什么原因?
- 大量的手机号码被标记成骚扰电话,如何存储这些号码? 🏷️IoT
- 把商品加入购物车时断网了,该怎么在重新联网时处理?
📱 低频问题
- 不用大于号小于号怎么判断两个正整数大小?
- 外卖系统,一天一千万条数据,用户需要查到近30天的数据,商家也要查询到30天的数据,怎么设计表?
- 进入电梯里断网后又恢复刚开始为什么网络慢? 🏷️IoT
- 一个表有用户和时间两个列,现有3个需求:根据用户查;根据日期查;根据用户和日期查;怎么建立索引?
- 做一个过滤黑名单网址的系统,你觉得要怎么实现,会用到哪些数据结构?
- 全国的酒店价格(千万级)需要在某个瞬间比如7点发生变动,怎样高性能准点进行变更?
- 服务器有多个节点,线上出现用户进入缓慢,监控服务器cpu和缓存没有压力,可以从哪些方面排查?
- 账户里面只有十块钱,同时发来两笔订单一共大于十块钱,怎么保证不超花?
- 项目中需要应用发布和ddl变更,需要如何保证不出错?
- 有100个优惠券,有几千万流量,怎么保证服务器不垮掉,怎么保证最前面的人能抢到这个券?
📱 低频问题(续)
- 秒杀场景下,怎么加库存?
- 5分钟内最多允许用户尝试登录3次,如果错误次数超过限制,需要对该用户进行锁定,怎么实现?
- 两个不相关的网站A和B,如何实现A登录B也能自动登录
- MQ出现消息乱序了如何解决?
- 在for循环中调用数据库,有什么缺点?如何优化?
- MySQL单表一千万条数据怎么做分页查询?
- MySQL千万级数据量,查询如何做优化?
- 什么是数据归档,一般是怎么做的?
- 第三方接口不稳定经常超时,如何处理三方接口异常不影响自己的接口?
- Redis、MySQL和MongoDB的区别是什么,各自适用场景
📱 低频问题(续2)
- Redis实现分布式锁,加锁的时候,redis不可用了咋整?
- 如果让你实现短链服务,如何生成不重复的短链地址?
- MySQL如果突然断电,会发生数据丢失吗?
- 防止接口被恶意刷流量,除了限流还应在代码层面做哪些防护?
- 库存扣减、创建订单,如何拆成TCC?
- Redis保存库存的时候,如何避免被Redis清理掉?
- 如果token被窃取了,是不是就能伪造登录了?
- 如果有1TB的数据需要排序,但只有32GB的内存如何排序处理?
- 如何从1TB的搜索日志中找出搜索量最高的10个关键词?
- 用@Scheduled执行定时任务,如何避免集群的并发问题
📱 低频问题(续3)
- 下单支付过程,点击跳转支付,输入密码,支付完成后跳转到订单页,整个过程可能会有什么问题,架构方面做哪些设计
- 有一张上百万条数据的单表,从前端页面、Java后台、数据库三个层面做哪些查询优化
- 假设还有很多内存,有什么情况还会频繁fullgc?
- 压测600没问题,上线后300就扛不住了,可能是什么原因?
- Redis和MySQL的一次普通查询,RT在什么范围内是合理的?
- 5亿条数据放到布隆过滤器中,大概需要多大内存?如何估算?
- 为了避免丢消息问题需要落表,如何设计这张消息表?
- 有一个银行系统,对实时性要求比较高,你会怎么选择垃圾回收器
- 百万级会员的用户平台,如何实现快到期的会员的消息提醒
- A线程获取Redis分布式锁,但那一刻做了主从的切换,B线程能获取到锁吗?
📱 低频问题(续4)
- 如果设计一个缓存,需要考虑哪些方面?
- 扫表任务,如何写SQL可以避免出现跳页的情况?
- 阿里出的Java开发手册看过吗,对哪条规约印象深刻?
- 购物车中如何解决重复下单的问题?
- 让你实现一个短链服务,你会考虑哪些问题?
🏷️ 物联网相关问题标识说明
🏷️IoT 标记的问题在物联网场景中特别常见:
- 13. 如何实现"查找附近的人"功能? - 物联网设备定位、地理位置服务
- 50. 如果要存IP地址,用什么数据类型比较好? - 物联网设备IP管理
- 79. 大量的手机号码被标记成骚扰电话,如何存储这些号码? - 物联网设备号码管理
- 83. 进入电梯里断网后又恢复刚开始为什么网络慢? - 物联网设备网络重连机制
热度说明
- 🔥🔥🔥: 90%以上面试会问到
- 🔥🔥: 70-90%面试会问到
- 🔥: 50-70%面试会问到
- 📱: 30-50%面试会问到