调试与系统阅读

共 17 题
#

1. 火焰图(Flame Graph)的真实生产应用

A 火焰图宽度代表单个函数调用的耗时
B 采样率越高越好,不会影响线上性能
C 火焰图只能用于 Java,其他语言无法生成
D 火焰图通过采样调用栈聚合展示 CPU 时间分布,解读看栈宽与深度,生产采样需低频短时并先经监控确认问题窗口 ✓ 正确答案
#

2. 慢日志(Slow Log)分析的工程方法

A 慢日志分析就是逐条人工阅读定位
B 慢日志只对数据库有用,应用层不需要
C 慢日志阈值越低越好,全量记录最科学
D 应规范化采集、按模式聚类并与系统指标对齐,以"频率 × 单次影响"排序改进项并回验闭环 ✓ 正确答案
#

3. 再现率低于 10% 的偶发故障应如何设计实验性复现条件

A 低概率故障只能靠运气复现
B 变量越多越好,应一次改变多个条件
C 复现实验不需要记录失败结果
D 通过强化条件扩大复现窗口、单变量正交实验收缩变量空间,无法复现时用现场捕获与统计关联收集证据 ✓ 正确答案
#

4. 第三方库的 Bug 排查应上溯到何种深度再决定绕行

A 任何第三方库 Bug 都必须追到内核层根因才能处置
B 遇到库的 Bug 一律立即换库
C 上溯到"能定位可行动根因"的深度即可,用影响面、可控性、升级前景等标准决策绕行,并配注释、监控与跟进 ✓ 正确答案
D 绕行之后不需要再关注上游修复
#

5. 偶发故障只在特定流量、数据或时刻出现时,如何用条件日志、采样与可复现实验逐步缩小变量范围?

A 按流量、数据、时间、环境四维度分割变量,用条件日志与分层采样捕获现场,用单变量复现实验逐轮验证排除 ✓ 正确答案
B 偶发故障只能扩大日志范围全量记录慢慢找
C 采样策略会漏掉关键样本,应禁止采样
D 一轮实验可以同时改变多个维度加快收敛
#

6. 对新成员调试思路的 review 应聚焦在哪些思维断点

A 应聚焦跳过验证、证据不足、无终止条件等思维断点,用提问引导其补全"假设-验证"推理链 ✓ 正确答案
B review 时应直接告诉新成员正确答案,效率最高
C 调试能力主要靠天赋,review 无法提升
D 只要结果正确,过程断点无需关注
#

7. 阅读他人 RFC/PR 时识别'隐藏假设'的常见信号

A RFC 中未写的场景都是作者验证过的,无需质疑
B 绝对化表述、无出处的数字、省略的失败路径与类比迁移是隐藏假设的常见信号,应显式化并设计验证 ✓ 正确答案
C 隐藏假设只存在于外部开源 RFC,内部文档没有
D 识别隐藏假设只是挑毛病,没有实际价值
#

8. tcpdump 与 Wireshark 在分布式调试的真实使用

A tcpdump 负责抓包(过滤、环形缓冲、双侧观测),Wireshark 负责分析(跟踪流、重传统计、协议解码),用于定位超时、连接异常与协议不符 ✓ 正确答案
B 抓包只要在服务端一侧进行即可定位所有问题
C Wireshark 只能看明文 HTTP,无法解析其他协议
D 生产环境禁止抓包,只能靠日志推断
#

9. 系统化调试中二分定位、日志埋点与最小复现的适用场景、组合顺序与终止条件如何设定?

A 三种方法应同时大量使用,越多越好
B 最小复现建实验场、二分定位收缩范围、埋点补证细节,按"先复现、再二分、埋点补证"组合,并设双向终止与止损换法规则 ✓ 正确答案
C 二分定位适合所有类型的问题
D 终止条件只会让排查半途而废,应避免设置
#

10. 调试从现象描述、假设生成到根因验证的循环中,如何用证据检验避免跳过验证直接下结论?

A 按"现象-假设-验证-根因-修复-回验"分层推进,用可证伪预测、贴标签与证据链五环检查防止跳过验证 ✓ 正确答案
B 经验丰富的工程师可以直接跳过验证层凭经验修复
C 假设不需要可证伪的预测,只要能解释现象即可
D 修复后无需回验,日志正常即算完成
#

11. 面对海量源码与文档,如何带着 3 个具体问题做问题驱动式阅读并产出结论?

A 源码阅读应从 README 开始按顺序读完全部代码
B 问题驱动只适合初学者,资深工程师不需要
C 阅读不需要产出物,读得多自然懂
D 带着真实、可回答、有产出的问题进入,按"入口-主线-求证"路径阅读,并用一页纸结论与最小实验固化成果 ✓ 正确答案
#

12. strace、ltrace、perf、eBPF 等工具在生产调试的真实使用

A 四个工具功能相同,任选其一即可
B eBPF 需要修改应用代码才能使用
C strace 可以全量长期跟踪线上进程,不影响性能
D 按问题层级选工具:IO/网络卡顿用 strace 或 eBPF、CPU 热点用 perf、调用行为用 ltrace,生产使用先评估侵入性与权限 ✓ 正确答案
#

13. 如何从入口函数、数据流与关键路径三个视角快速建立大型代码库的心智模型?

A 读大型代码库应从最底层的工具类开始逐行阅读
B 三个视角互相冲突,只能选一个
C 心智模型只能靠长时间浸泡自然形成
D 入口函数建框架、数据流打通主链路、关键路径确定深读重点,三视角配合并用三张图沉淀心智模型 ✓ 正确答案
#

14. debugger、分布式 trace 与 profiler 分别适合哪类调试问题,如何组合定位跨层故障?

A 调试工具可以随意选用,效果都一样
B 分布式 trace 只能看延迟,不能定位失败服务
C debugger 是生产环境定位问题的首选工具
D trace 定位跨服务范围、profiler 定位资源热点、debugger 定位逻辑问题,跨层故障按"收缩-深挖-交叉验证"组合 ✓ 正确答案
#

15. 复杂问题如何拆解成可验证的小块?

A 按可独立验证、正交、由粗到细的原则,用链路、假设、依赖、维度等方法拆解,每块配验证标准与预期结果 ✓ 正确答案
B 大问题无法拆解,只能整体分析
C 拆得越细越好,无需考虑验证成本
D 拆解只适用于性能问题
#

16. 调试经验如何固化为团队工具与文档?

A 优先沉淀高频、高损、难复现问题,能自动化做成工具、流程做成 playbook,并配 owner、版本与使用反馈闭环维护 ✓ 正确答案
B 所有调试经验都应该写成详细文档
C 沉淀物上线后不需要更新,一次写成就行
D 调试经验属于个人资产,不应沉淀给团队
#

17. 系统阅读的架构笔记、调用图与定期复盘如何沉淀为团队可复用知识资产?

A 架构笔记只要写一次,系统演进后无需更新
B 调用图与代码脱节不影响使用价值
C 架构笔记沉淀设计意图、调用图沉淀关系导航、复盘沉淀演进记录,配统一索引与 owner 评审,以"减少重复问答"衡量复用价值 ✓ 正确答案
D 系统阅读产出物只对写作者本人有用