很多面试官喜欢在最后环节抛出一道“线上问题排查”的开放题,比如“线上服务CPU飙到100%,你怎么处理?”“接口突然变慢了,你从哪儿查起?”这种问题没有标准答案,但恰恰最能拉开候选人的差距。我面过不少候选人,背了一堆JVM参数和命令,真到这种场景题上,思路混乱、东一榔头西一棒子,几句话就露馅了。
这篇文章我不打算罗列题库,而是把“线上问题排查”这一类面试题背后的考察逻辑、高频场景的完整排查链路,以及面试官真正想听的回答框架拆开讲清楚。无论你是在准备面试,还是日常工作中遇到类似问题不知道从何下手,这篇内容都值得仔细看一遍。
1. 面试官抛出这道题,真实意图是考察什么
先想清楚一个问题:面试官问“线上出问题了你怎么排查”,他到底想听到什么?
很多人以为这是一道考命令的题,于是疯狂背诵top、jstack、jmap这些工具的参数。但实际上面试官根本不关心你背了多少命令,他关心的是你面对未知问题时的思维路径。线上故障的特点是:现象明确、根因未知、信息碎片化。你能不能从一堆看似无关的指标里找到那条主线,能不能在压力下保持有序操作,这才是考察的核心。
具体来说,面试官心里有四个打分维度。
第一个是排查思路是否成体系。候选人是从“现象→假设→验证→结论”这样推进,还是想到什么查什么。我记得有个候选人回答“CPU高就先重启”,当时面试官脸都黑了。重启确实能解决问题,但没找到根因,下次还会再犯,这在面试里属于“负分操作”。
第二个是工具是否熟练且理解原理。不光知道jstack能看线程栈,还得知道线程号为什么要转成十六进制才能匹配上。只会敲命令不理解输出含义的,一追问就卡壳。
第三个是是否有实战经验。真正处理过线上问题的人,开口第一句往往是“我会先看一下监控报警,确认影响范围”,而不是直接跳到执行命令。这种“先评估影响再动手”的肌肉记忆,只有真实经历过才能形成。
第四个是沟通和优先级意识。线上故障分秒必争,是先恢复服务还是先定位根因,这需要判断。有经验的人会先做止损操作,再慢慢查,这个决策过程本身就是面试官考察的重点。
所以,准备这类面试题的正确姿势不是背题,而是建立一套自己的排查框架,然后用实战经验去填充它。面试官问任何一道场景题,你都能把问题装进框架里,输出一套逻辑自洽的回答。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CPU飙升与内存溢出的排查链路拆解
线上问题里,CPU飙升和内存溢出是两类最经典的高频考题,几乎每场技术面试都会碰到。这两类问题的排查链路成熟、工具明确,也是最容易考察候选人基本功的地方。
2.1 CPU飙升:从top到线程栈的四步定位
先说你接到告警“CPU使用率100%”时的标准操作。第一步不是抓线程,而是看进程。登录服务器执行top,按CPU排序找到那个占用率异常的Java进程,记下PID。这一步很多人会跳过去直接jstack,但多进程场
