Yihui’s Blog

文章与笔记

关于前端、工程与日常思考的记录。找到一个主题,开始阅读。

783 篇文章

两百万个生产者发送消息,仅一个消费者,如何高效设计锁?

日期:2026-07-11 标签:#面试 #八股 #后端 #并发 #队列 #场景题 一句话答案 这应设计为 MPSC 有界队列,而不是让两百万线程竞争一把锁;生产者通过原子序号领取槽位,单消费者顺序读取,并用分段、批量和背压控制竞争。 面试口语版 我会先质疑“两百万生产者”是否指两百万线程,如果是,线程模型本身不…

阅读全文

每次进入订单列表页面都会触发全量同步,怎么优化?

日期:2026-07-11 标签:#面试 #八股 #后端 #同步 #线程问题排查 #场景题 一句话答案 页面查询不应耦合全量同步,应将同步改为事件驱动加增量补偿,页面只读取本地可查询模型,必要时触发异步刷新。 面试口语版 每次进页面全量同步会造成重复 I/O、线程堆积、上游压力和长尾延迟。我会先拆开“同步”和“查…

阅读全文

线上消息队列故障,如何做兜底改造?

日期:2026-07-11 标签:#面试 #八股 #后端 #消息队列 #线上问题排查 一句话答案 核心原则是生产不丢、业务可降级、恢复可控:用本地 Outbox/持久缓冲接住关键事件,非核心消息降级丢弃,并在 MQ 恢复后限速回放和对账。 面试口语版 先按消息重要性分级。交易类消息发送失败时,业务事务内写 Out…

阅读全文

商家如何查看店铺卖得最好的 Top 50 商品?

日期:2026-07-11 标签:#面试 #八股 #后端 #系统设计 #TopN #场景题 一句话答案 按明确统计口径消费订单事件,实时需求用流处理维护店铺窗口聚合和 Top N,离线报表用数仓聚合;退款和取消通过可撤回事件修正。 面试口语版 先确认“卖得最好”按销量、销售额还是支付订单数,以及时间范围和是否扣除…

阅读全文

线上数据库连接池爆满问题排查

日期:2026-07-11 标签:#面试 #八股 #后端 #数据库 #线上问题排查 一句话答案 连接池爆满通常是连接使用时间变长或请求量超过数据库承载,排查应区分慢 SQL、长事务、连接泄漏、数据库阻塞和流量突增,不能直接扩大连接池。 面试口语版 我先确认是单实例还是全局、活跃连接满还是等待队列满,并对齐流量、发…

阅读全文

MySQL 中使用索引一定有效吗?如何排查索引效果?

日期:2026-07-11 标签:#面试 #八股 #后端 #MySQL #索引 #场景题 一句话答案 索引不一定被使用,也不一定比全表扫描快;应通过真实参数、执行计划、实际行数、回表次数和运行指标验证效果。 面试口语版 优化器基于成本选择访问路径。查询返回大比例数据、索引选择性差、统计信息不准或 SQL 写法破坏…

阅读全文

MySQL 中 SELECT 查询 1000 万行,内存会飙升吗?

日期:2026-07-11 标签:#面试 #八股 #后端 #MySQL #数据库 #场景题 一句话答案 很可能造成数据库、网络和客户端内存及资源压力,但是否一次性飙升取决于执行计划、排序临时表、驱动缓冲方式和应用是否流式消费;无论如何都不应无界查询千万行。 面试口语版 MySQL 执行全表扫描时 InnoDB 主…

阅读全文