背景
程序猿小枫最近工作的很不开心,领导不赏识,感觉自己没有出头之日,于是心中萌生了换个工作环境的想法。从此小枫开始了他的漫漫求职之路。小枫的目标是一线互联网大厂,但是由于自己好久没有面试了,所以他准备先找几家公司练练手,找找面试的感觉,等自己完全准备好了再投自己心仪的大厂。这不,某个二线互联网公司的面试官给小枫打来了面试电话,我们来一起看看面试官都问了小枫什么问题?小枫回答出来了吗?
面试官考察目的分析
面试官:有没有过问题排查经历,假如服务器CPU使用率达到了90%以上,该怎么排查问题?
目的分析:面试官问的这个问题主要是项考察下在实际的工作中,候选人有没有一些生产问题排查以及解决的经验,以及遇到问题的时候分析问题的思路是怎样的。只有有经验同时能够按照自己的思路一步一步排查解决问题的人才是面试官感兴趣的候选人。
问题分析
这个问题其实并不难,如果服务器中的服务CPU比较高,那我们就要先确定到底是哪个服务CPU使用率高,然后再看服务内部什么原因导致CPU使用率高,找到了根本原因之后再进行问题修复和处理就可以了,于是小枫在脑海中整理了下思路,开始回答问题。
小枫:如果服务器的CPU使用率比较高可以使用top命令看下到底哪个服务的CPU占用率比较高,找到占用最高的java进程。找到之后,再使用top -Hp pid的命令查看java服务中到底哪个线程占用的CPU最高,使用jstack命令可以将java服务的线程堆栈打印出来,再通过之前获取到的线程id找到到底服务中哪个线程CPU占用的很高。
前段时间就遇到过类似的问题,通过刚才的排查步骤找到了CPU占用比较高的线程。翻看代码后发现,CPU比较高是因为线程中存在一个while循环的代码,不断判断队列中是否有数据。最后通过优化,将while循环空判断的情况进行了改进,当队列有数据的时候才进行后续的业务处理,没有数据的时候就进行等待。优化后CPU使用率下降了53%。
面试官:面试官听完后,嘴角露出了笑容,心想这个小伙子还不错,既有问题分析思路,也有案例辅助说明,兴趣渐浓。再问问其他问题吧。
总结
程序猿小枫找工作的故事还在继续,他能不能找到自己想要的工作,能不能收获大厂的offer,请大家拭目以待哦。