第3章 高频技术问题与回答框架
本章聚焦支付核心链路、事务、幂等、对账四类高频面试题。每个问题都遵循“定义-场景-方案-性能-示例”五步答题框架,帮助你在面试中结构清晰、逻辑严密。
| 主题 | 核心概念 | 常见难点 | 性能优化方向 |
|---|---|---|---|
| 支付核心链路 | 请求路径、异步化、一致性 | 长事务、锁竞争 | 异步削峰、读写分离 |
| 分布式事务 | ACID、TCC、Saga | 隔离级别、回滚补偿 | 本地消息表、异步确保 |
| 幂等设计 | 幂等键、状态机、去重表 | 重复请求、并发冲突 | 缓存去重、唯一约束 |
| 对账 | 对账维度、差错处理 | 数据不一致、延迟 | 离线批处理、补偿机制 |
问题1:如何优化支付核心链路的性能?
面试官考察点:是否理解支付链路的全貌(订单、支付、账务、通知),能否识别瓶颈并给出异步、缓存、分片等方案。
回答框架:① 明确链路节点(前置校验→扣款→通知)。② 分析耗时瓶颈(数据库IO、远程调用)。③ 提出优化:异步化削峰、缓存热点数据、读写分离。④ 举例说明。
简短示例回答:支付核心链路包括订单校验、资金扣减、渠道同步。常见瓶颈在数据库写锁。我们采用异步削峰:扣款通过MQ异步处理,本地事务+消息表保证最终一致性,TPS提升3倍。
可能追问:如何保证异步消息不丢失?扣款失败如何补偿?
避坑提醒:避免过度承诺“零延迟”,强调可接受的延迟窗口和补偿机制。
问题2:在高并发支付场景下,如何保证分布式事务的一致性与性能?
面试官考察点:对2PC、TCC、Saga的理解,以及在具体场景中的选型理由。
回答框架:① 定义场景(跨库/跨服务)。② 技术选型对比(TCC适合高一致性、Saga适合长时间流程)。③ 性能考量(减少锁粒度、异步补偿)。④ 给出具体方案。
简短示例回答:我们使用TCC实现跨服务账户扣款。Try阶段冻结资金,Confirm直接扣除,Cancel释放冻结。通过本地事务表记录状态,异步Worker轮询补偿,TPS达2000+,一致性达4个9。
可能追问:TCC空回滚怎么处理?幂等如何设计?
避坑提醒:不要只背诵2PC缺点,要主动展示TCC/Saga的补偿设计。
问题3:设计一个防止重复支付的幂等方案。
面试官考察点:幂等键设计、去重表、状态机、并发处理能力。
回答框架:① 定义幂等概念。② 方案核心:业务唯一键+去重表/Redis锁。③ 状态机流转(待支付→支付中→支付成功)。④ 性能优化:唯一索引+乐观锁。
简短示例回答:使用订单号+流水号作为唯一键,建联合索引。支付前先插入去重表,成功则更新状态机。若重复请求,插入失败直接返回“已处理”。单机QPS 5000+,无锁冲突。
可能追问:去重表如何清理?Redis方案可能丢失怎么办?
避坑提醒:强调幂等与业务的结合,避免只说“加锁”或“Redis”,要说明异常恢复策略。