Home首页 / Phrasing话术语录
Phrasing · same thing, said by a senior话术语录 · 同一件事,老手怎么说
同一件事,换一种说法。同一件事,换一种说法。
Left is how a junior says it. Right is how a senior says the same thing — and the reasons under each card are what makes it land. Read them out loud.左边是菜鸟的说法,右边是老手的说法。每张卡下面的三条,是这句话为什么站得住。要出声念。
01Phrasebook: same thing, two people对照表:同一件事,两个人怎么说
Do not memorize the whole sentence. Memorize the three bold words in each senior line — then say it in your own order.不要整句背。记住老手那段的三个关键词,然后用你自己的顺序讲出来。
01支付回调重复 —— 你给的那段,我精修过
菜鸟说「微信有时候会重复通知,我在代码里做了个判断,重复的就不处理了。」
老手说因为网络经常会抖动,微信支付可能因为超时重试发来多条回调。为了保证数据一致性,我们在数据库里通过行锁、乐观锁(带状态判断的 SQL),以及给交易号加唯一索引,从而实现了接口的幂等性,保证商品只发一次。
网络抖动超时重试数据一致性行锁乐观锁唯一索引幂等性
- 先讲原因(网络抖动 → 超时重试),不是先讲自己的代码;面试官听到的是“他理解系统的边界”。
- 把手段按从强到弱排:唯一索引(数据库兜底)> 乐观锁 CAS > 行锁,说明你知道哪一层最可靠。
- 最后落在结果(只发一次货),一句话闭环,不拖泥带水。
02缓存和数据库不一致怎么办
菜鸟说「我改数据库之后就把缓存删掉。」
老手说我们走的是 Cache Aside:写库之后删缓存,不是更新缓存。删除失败会进延迟队列重试两次,兜底再靠过期时间;强一致场景不走缓存,直接读主库。
Cache Aside删缓存不更新缓存延迟双删补偿重试过期兜底强一致场景
- 说清模式名(Cache Aside),面试官立刻知道你不是凭感觉写的。
- 说清为什么删而不是更新:并发更新会写出脏数据。
- 给出兜底(重试 + 过期),最后加一句“强一致就不走缓存”——加一句边界,可信度立刻上来。
03穿透、击穿、雪崩,一次说清
菜鸟说「就是缓存不管用了,请求都打到数据库。」
老手说这三种要分开看:穿透是查不存在的数据,每一次都落到库,用布隆过滤器或空值缓存挡;击穿是某个热点 key 过期瞬间被打爆,用逻辑过期 + 互斥重建;雪崩是大量 key 同时失效或 Redis 整体挂了,用随机过期时间 + 集群/本地缓存二级兜底。
布隆过滤器空值缓存逻辑过期互斥重建随机 TTL二级缓存
- 先分类再给方案,这是老手的肌肉记忆;混着说会显得只是背过。
- 每类只给一个最常用方案,别堆名词。
- 结尾点出“三种的根因不同”,显示你理解的是机制不是清单。
04慢 SQL 怎么查
菜鸟说「我加了索引之后就不慢了。」
老手说先看慢查询日志定位 SQL,再用 explain 看 type、rows 和 Extra:全表扫描、filesort、回表太多分别对应不同改法——补联合索引、覆盖索引、或者把 where 条件改成能走索引的形式。改完用压测/线上慢查趋势验证,而不是只看执行时间降了。
慢查询日志explain全表扫描filesort联合索引覆盖索引回表验证
- 顺序是定位 → 诊断 → 改 → 验证,四步都有,说明你有一套方法而不是零散经验。
- 说出 explain 里真正要看的字段(type / rows / Extra),比“我用了 explain”强十倍。
- 强调验证,这是区分“改完就完事”和“对结果负责”的地方。
05分布式锁怎么讲才算讲透
菜鸟说「我用 Redisson 加锁,加锁就没问题了。」
老手说锁的粒度按业务维度定,比如按 sku 加,不是按订单号;持锁时长只覆盖临界区,绝不在锁里做远程调用。Redisson 的 watchdog 负责续期,进程挂了租约自动过期;主从切换可能丢锁,所以最后仍要靠数据库兜底(唯一索引 / CAS)。
锁粒度临界区watchdog 续期租约过期主从切换丢锁数据库兜底
- 先讲粒度,因为这是最常见的追问点(锁太粗会串行化)。
- 主动说出锁的失效场景(主从切换),比被问出来强得多。
- 结尾一定要落到“锁不是最终保证”,这是高级感的来源。
06为什么用 MQ
菜鸟说「用 MQ 可以异步,快。」
老手说三个作用分开说:削峰(下单峰值挡住,消费端按能力拉)、解耦(订单不关心下游有几个)、最终一致(本地消息表 + 重试 + 对账)。代价是重复消费和顺序问题,所以消费端必须幂等,关键业务按业务键分区保证顺序。
削峰解耦最终一致本地消息表对账重复消费幂等分区顺序
- 讲作用讲三条就够,每条一个词,不展开成长篇。
- 主动说代价(重复、乱序),并给出对应的解法——这是从“会用”到“负责”的分水岭。
- 提到对账,说明你想的是“最终一定对得上”,不是“发出去就算完”。
07限流降级怎么做
菜鸟说「我们加了限流,超过就拒绝。」
老手说限流按维度分层:网关层挡总量、服务层按接口/用户挡突刺、核心链路单独配额;算法上单机用令牌桶平滑突发,集群用 Redis + Lua 保证原子。降级要提前定好哪些能力可以关(评论、推荐、非核心查询),并留开关和演练记录。
限流维度令牌桶Redis + Lua 原子独立配额降级开关演练
- 先分层维度,再说算法,最后说降级——顺序本身就体现设计思路。
- 说“提前定好”和“演练”,面试官会认为你经历过真实的流量事件。
- 避免说“超过就拒绝”,那句话听起来像没考虑用户体验。
08线上出问题,你怎么排查
菜鸟说「我看了日志,发现是空指针,改了就上线了。」
老手说先看监控和告警确认影响面(哪个接口、多少量、从几点开始),再从链路追踪定位到具体节点,用日志和复现缩小范围;先止血(开关、回滚、扩容),再定位根因,最后补监控和回归用例,把这次故障变成可预防的。
影响面链路追踪先止血根因补齐监控回归用例
- “先止血再根因”是运维常识,说出这句话立刻显得成熟。
- 顺序里带量化(多少量、几点开始),说明你习惯用数据判断。
- 结尾一定跟复盘动作,把故障变成系统能力。
09需求评审怎么发言
菜鸟说「这个需求能做,给我三天。」
老手说我先确认三件事:目标是什么(成功指标)、边界在哪(哪些不做)、依赖有哪些(第三方、数据、其他团队)。如果这三件不清楚,评估出来的工期也不可信。另外我建议先做最小可用的一版,上线看数据再加。
成功指标范围边界外部依赖最小可用上线看数据
- 把“能做/不能做”换成“先确认三件事”,这是资深工程师的默认动作。
- 强调工期不可信的条件,保护自己也保护团队。
- 主动提分阶段交付,说明你关注的是业务结果而不是写完代码。
10代码评审说什么
菜鸟说「这个写法不好,改成我这样。」
老手说分成三类说:必须改(正确性、安全、并发问题);建议改(可读性、命名、重复代码);可以不改(风格偏好)。每条给出理由和影响,能给出示例代码就给示例,让人看懂“为什么”,而不是只服从我的习惯。
正确性/安全/并发可读性理由与影响示例代码不按个人偏好
- 分级是 review 的核心技巧,避免把个人偏好说成必须改。
- 强调“给出理由和影响”,这是协作能力而不是技术能力。
- 最后一句“而不是只服从我的习惯”,是很多面试官想听到的成熟度。
11汇报工作 / 周会发言
菜鸟说「这周改了十几个 bug,写了几个接口。」
老手说这周主要推订单同步这条线:完成两个接口并对接联调,接口 P95 从 800ms 降到 240ms;风险是第三方对账文件晚到,我准备了本地补数脚本兜底;下周做灰度,先切 10% 流量观察。
主推一条线量化结果风险与兜底灰度下周计划
- 结构固定:做了什么 → 结果多少 → 风险 → 下一步,十秒讲完。
- 数字要跟自己的判断一起出现(从多少到多少),而不是罗列工作量。
- 主动讲风险,比被追问“有问题吗”强得多。
12被问到不会的东西
菜鸟说「这个我没做过」「这个不太清楚」。
老手说这块我没有直接做过,我说下我会怎么验证:先看官方文档里的一致性模型,再用一个最小例子复现;如果时间允许我会先做压测对比再定方案。我比较确定的是结论方向——数据一致性优先,性能可以后补。
没直接做过怎么验证最小复现压测对比结论方向
- “没做过”+“我会怎么验证”是标准答法,比硬编安全得多。
- 给出最小验证路径(文档 → 小例子 → 压测),说明你有方法论。
- 最后给方向性判断,让人看到你不是空手。
02How to use this page怎么用这一页
- Read the left column first — that is probably what you would have said.先读左栏——那大概就是你会说的话。
- Read the right column out loud, twice. The words must come out of your mouth.右栏出声念两遍。词必须从你嘴里出来。
- Cover the right column and retell it using only the keyword chips.盖住右栏,只看下面的关键词,用自己的话重讲一遍。
- If a keyword means nothing to you, that is the next lesson to read.哪个关键词看不懂,那就是你下一节该去看的内容。
Twelve cards, three minutes each — one evening. After that, every answer sounds different.十二张卡,一张三分钟,一个晚上。之后你所有回答听起来都不一样。