【场景面试题】 100 题:共性思路总结
服务端研发面试 100 题共性思路总结这份总结不是另一套题库而是把 100 道场景题背后的共同套路抽出来。复习时建议先看这里建立“答题骨架”再回到题库逐题练表达。一、总览思维导图服务端场景题答题地图目标澄清功能边界一致性等级延迟与可用性成本与合规容量估算QPS峰值存储体量热点比例读写比数据建模主键与唯一键分片键索引与排序键状态机与版本链路拆分同步主链路异步派生链路缓存与搜索索引MQ与Outbox异常恢复幂等重试与退避乱序与重复补偿与对账工程治理灰度监控降级审计回滚二、100 题按能力域分布题号能力域典型关键词复习重点110社交、Feed、热点系统fanout、关注边、K 路归并、可见性热点拆分、读写扩散取舍、权限兜底1118海量人群与数据处理Bitmap、白名单、导出、UV、去重命中率决定模型批任务要可恢复1927高并发交易与业务系统秒杀、券、座位、支付、账务资金/库存正确性优先状态机和流水兜底2839MySQL、缓存、MQ索引、分页、DDL、缓存一致性、积压证据驱动优化至少一次意味着幂等4050分布式与稳定性事务、调度、锁、ID、多活、Oncall明确一致性边界先止血再定位5160API、身份、权限、安全网关、Token、RBAC、审计、审核入口要轻权限要服务端兜底安全要分层6170搜索、推荐、实验、实时计算索引、召回、特征、A/B、流计算候选压缩、版本治理、口径可信7180存储、对象、边缘、成本对象存储、CDN、向量、Geo、计费内容与元数据分离成本和权限一起设计8190微服务、发布、容量、可靠性RPC、服务发现、熔断、压测、扩缩容资源隔离、容量模型、无损发布91100业务平台、规则、隐私、保障规则引擎、价格、积分、直播、合规可配置不等于失控重大活动要演练三、通用答题流程1. 澄清业务目标2. 做容量估算3. 定数据模型4. 画主链路5. 拆异步派生链路6. 设计异常路径7. 说明取舍与演进8. 补监控、灰度、回滚面试时不要一上来报 Redis、Kafka、MySQL。更稳的开场是“我先确认目标和量级然后按数据模型、主链路、异常链路、扩展和监控来设计。”这句话会把讨论拉回工程问题而不是组件背诵。四、最常复用的 12 个设计套路套路适用题型典型说法权威数据 派生索引Feed、搜索、推荐、缓存DB/对象状态是权威Inbox/搜索/缓存都可异步重建Outbox MQ订单、索引、通知、审计业务事务写 outbox后台可靠投递消费者幂等状态机 流水支付、券、积分、审核、注销禁止直接改状态所有变化有 from/to/event/request_id版本号防乱序搜索索引、缓存、配置、事件只接受更高 version旧事件到达直接丢弃分桶/分片抗热点点赞、评论、粉丝、计数热点对象按 bucket 写入读时聚合或归并TopK/惰性归并Feed、榜单、推荐召回只取形成结果所需候选不做全量排序低命中率用白名单活动人群、广告定向先用 bitmap 求交再精确校验并物化名单高命中率用排除集8 亿筛 7 亿、默认准入默认允许只维护 excluded bitmap短同步 长异步上传、导出、审核、转码主请求只确认受理重活任务化并可断点续跑缓存失效优于更新缓存一致性、多视图缓存写 DB 后删缓存binlog 重试失效回填带版本租约 幂等调度、导出、分布式任务Worker 领取租约宕机后过期转移业务以 task_id 幂等灰度 回滚 审计配置、实验、规则、发布所有变更有 owner、版本、审批、观测和回退路径五、按题型组织答案1. 高并发写入题关键词是“前置过滤、削峰、幂等、最终落库”。比如秒杀、点赞、评论、弹幕、礼物。答题时先把无效流量挡在入口再用缓存或内存结构承接瞬时峰值最后用数据库唯一键、条件更新或流水保证最终正确。2. 大规模读取题关键词是“预计算、索引、缓存、TopK”。比如 Feed、搜索、推荐、排行榜、附近的人。不要说全表扫描要说明数据如何提前按访问模式组织好读请求只做少量归并和过滤。3. 一致性题关键词是“分级一致性”。资金、库存、座位要强约束搜索、推荐、通知可最终一致读己之写用主库、位点或短期 sticky。面试时主动说出哪些地方可以不强一致反而显得成熟。4. 异步任务题关键词是“任务表、分片、游标、租约、限速、结果核对”。导出、补发、转码、审核、导入都属于这一类。不要写 for 循环要讲任务模型。5. 平台治理题关键词是“版本、owner、审批、审计、灰度、回滚”。配置中心、实验平台、规则引擎、标签系统、Schema Registry 都不是单纯 CRUD而是防止人把系统配炸。6. 稳定性题关键词是“先止血、再定位、后复盘”。限流、熔断、降级、隔离、扩容、回滚是止血工具Trace、指标、日志和变更时间线是定位工具复盘要落到防线改进。六、面试复述模板3 分钟版我先确认目标读写比、峰值、延迟、一致性和数据量。主链路我会尽量短只保留必须同步成功的动作。派生数据用 MQ/Outbox 异步做例如缓存、搜索、通知、统计。正确性靠唯一键、状态机、版本号和幂等键兜底。高并发靠限流、分片、缓存和批量化热点单独拆分。最后补监控、灰度、降级、回滚和对账。10 分钟版先画模块图再按“写路径、读路径、异常路径、扩容路径、运维治理”展开。每个模块都说明存什么数据、用什么主键和索引、失败后怎么恢复、为什么不用另一种方案。七、常见追问与回答方向追问回答方向为什么不用同步强一致说明强一致成本指出哪些字段必须强哪些派生数据可最终一致MQ 重复怎么办至少一次是常态消费端用业务唯一键、状态机或 message_id 幂等缓存和 DB 不一致怎么办写 DB 后删缓存失败重试回填带版本关键读绕缓存大 V 或热点对象怎么办分桶、读写扩散切换、限流、缓存、异步任务化如何扩容逻辑槽、分片映射、灰度迁移、双读校验、回滚路由如何证明方案可用容量估算、压测、监控指标、故障演练、对账结果八、复习建议第一轮按章节刷题重点看每题的“具体示例”。第二轮按套路刷把所有“幂等题”“热点题”“异步任务题”“一致性题”归到一起。第三轮限时口述每题先讲 3 分钟版本再补异常路径和取舍。真正面试时能把问题拆清楚比背更多组件名更有用。面试前自检清单每题是否先说业务目标与数量级而不是直接说 Redis/Kafka是否给出主键、分片键、唯一约束、排序键和幂等键是否同时覆盖正常、失败、恢复三条路径是否说明至少一次投递带来的重复和幂等是否说清强一致、最终一致和读己之写分别用在哪里是否给出热点、扩容、灰度、监控和回滚是否能解释为什么不用另一个方案以及方案何时失效