腾讯后端面经
1. 设计一个秒杀系统。假设有100万库存,怎么在分布式环境下保证高并发不出错,不会超卖?性能上要求TPS能到5万以上。
2. 想象一个场景:用Redis分布式锁处理支付回调,结果Redis主从切换,导致锁失效,订单被重复处理了。这种情况怎么解决?
3. 假设有个明星突然发了条动态,导致某个Redis热点Key的请求量飙到50万QPS,缓存瞬间被打穿,数据库也跟着雪崩了。你要是当时的值班工程师,怎么快速止损?事后又会怎么优化?
4. 设计一个订单自动关闭功能:用户下单30分钟没付钱,就自动取消。每天的订单量大概是1000万,要求处理时间的误差不能超过1分钟。
5. 有一个发积分的流程,跨了3个服务:先扣A账户,再加B账户,最后记日志。怎么保证这套操作的最终一致性?
6. 线上环境出了个问题:Young GC看起来很正常,但Full GC每天发生20多次,每次都让CPU飙得很高。你会怎么去排查和解决?
7. 假设订单表按用户ID分了128个库。现在要按商家ID来查最近3个月的订单,还要支持分页,怎么能高效地实现?
8. Kafka的一个消费组积压了1000万条消息,而且消费速度一直跟不上生产速度。怎么能快速追上进度,同时尽量减小对业务的影响?
9. 某个核心接口的TP99响应时间,突然从50毫秒飙到了2秒。怎么能在10分钟内快速定位到性能瓶颈在哪?
10. 来设计一个全局唯一ID生成器。要求每秒能生成10万个,ID要趋势递增,还得支持机房容错。
11. 我们采用“先更新数据库,再删除缓存”的策略,但发现还是会读到旧数据。怎么从根本上解决这个问题?
12. 某个服务平时QPS是一万,大促活动的时候预估会涨到50万。你会怎么设计一个弹性的扩容方案来应对?
13. 有个异步任务用了FixedThreadPool,结果因为任务处理不过来,导致队列堆积,最后OOM了。你会怎么优化?
14. 设计一个集群级别的限流器:要求把整个集群的QPS控制在10万以内,误差不能超过5%,而且还得保证低延迟。
15. 平时怎么监控和优化慢SQL查询?
16. A服务依赖B服务,当B的故障率到30%就触发熔断。但现在有个需求,即使熔断了,也得让一部分非常核心的请求能过去。这个机制怎么设计?
17. 假设MySQL和ES里都存了1亿条数据,需要每天对它们做一次一致性校验,怎么能在一个小时内搞定?
18. 设计一个图片上传服务,支持每秒5000张图片上传,并且要实时生成多种尺寸的缩略图。你觉得架构设计的要点有哪些?
19. 新版本上线,灰度了10%的机器,发现错误日志突然暴增,但核心监控指标看起来都正常。你会怎么快速回滚,之后又怎么去查明原因?
20. 假设现在有个单体系统,里面有200多张相互关联的表。现在要把它安全地拆分成微服务,整个过程中怎么保证数据的一致性?