一位程序员来面试,要求年薪45万。技术总监让他看一段线上代码,找出最近频繁报错的根源。
程序员盯着屏幕看了8分钟,圈出了一行日志,说问题在这里。总监看了一眼,只开出月薪1万2,说这个数你能接受就留下,不接受就算了。面试室里很安静,只有空调低沉的嗡嗡声。技术总监把笔记本电脑转向对面的年轻人,屏幕上是一段线上服务的错误日志。“最近一周频繁报错,QPS掉了30%,找找根源。”
年轻人叫周野,三十出头,简历上写着前大厂高级工程师,期望年薪四十五万。他接过电脑,目光扫过满屏滚动的日志流。总监靠在椅背上,转着手里的钢笔。他预期这个过程至少半个小时——先梳理调用链,再排查中间件,最后定位到某次发布引入的变更。线上问题的排查向来如此,层层剥茧,急不得。
八分钟。周野把屏幕转回来,食指点了点其中一行日志:“这里。”总监凑近看。那是一行看起来毫不起眼的DEBUG日志,等级过低,在生产环境本该被屏蔽。但日志的内容暴露了一个关键信息——每次请求都会去读取一份本地配置文件,而这份文件在最近一次运维更新后被写入了错误的过期时间戳。“每次读到这个时间戳,就会触发一次重试,”周野说,“重试又读一次,死循环。连接池被耗尽,后面的请求全部排队超时。”
总监盯着那行日志看了十秒。没错,就是它。配置文件的缓存策略和日志级别的疏忽叠加在一起,构成了这个耗时一周都没能定位的Bug。他合上电脑,沉默了一会儿。“月薪一万二,”他说,“这个数你能接受就留下,不接受就算了。”周野愣在那里,脸上的表情从从容变成了错愕。“四十五万是年薪。”
“我知道。”总监的语气很平,“你只花了八分钟。说明你一眼就看到了本质——本地配置和日志级别的关系。这种直觉,值四十五万。”“那为什么……”“因为你只看了日志。代码就在旁边,你没打开过。”总监指指屏幕右下角,“你圈出的那行日志,是测试环境才开启的DEBUG级别。线上出这个错,说明有人在生产环境误开了DEBUG开关。你找出原因的速度很快,但你根本没检查‘为什么生产环境会有DEBUG日志’——这才是运维流程的漏洞。”
周野张了张嘴,想说什么。总监站起身:“你解决故障很厉害,但你不关心系统为什么变成这样。我们这里缺的是能建墙的人,不是能拆墙的人。一万二,做不做?不做的话,今天就到这。”窗外下起了雨,雨点斜打在玻璃上,留下一道道蜿蜒的水痕。周野坐着没动,手指还搭在笔记本电脑的触控板上,指尖冰凉。
他盯着屏幕上那行被他圈出来的日志,忽然觉得那个黄色的高亮标记像个嘲笑。八分钟,他太快了,快到只看见了答案,没看见问题背后站着的人。
发布于 北京
