应用模块

常用工具集

以上是常用工具的知识重点。接下来从面试官角度总结一下面试考察点:

掌握常用的 JVM 分析工具主要用来分析哪类的问题,例如线程死锁可以用线程分析工具 jstack;内存溢出可以使用 jmap 查看堆中占用最大的对象类型;需要对程序性能进行分析时,可以使用 JMC 中的飞行记录器等等。

掌握常用的代码版本管理工具 Git,包括 Git 的常用命令与常见问题,以及理解 Git 工作流。例如知道 Git 的 merge 与 Git rebase 的区别,merge 是提交 commit 合并修改,rebase 是修改提交历史记录。知道自己团队在协作开发时,使用的哪种工作流,有什么样的优缺点。

掌握 Linux 系统下的常用工具,也是突出实战能力。了解不同问题应该使用哪类工具来进行分析。例如,磁盘写入经常耗时较高可以通过 iostat 来分析磁盘 IO 情况,如果不能确定问题,可以通过 strace 对文件写入的系统调用进行分析;或者 CPU 负载较高,想要定位哪个线程导致,可以通过 top 结合 jstack 来进行分析等等。

本课时的考察点以知识广度为主,对于不同类型的工具,需要知道适用场合,重点考察实际应用经验。面试时这部分内容可能会被问到一些原理,但一般不会深入询问工具的具体实现。

加分项
对于常用工具这部分,面试官可能不会直接问你“会用某某工具吗”,所以对于这一课的知识,你需要主动出击,才能获得加分。比如,在面试官询问项目经验时,带出你了解的工具,来体现你的知识广度与实战经验。

举个例子,当面试官询问你遇到过哪些线上问题时,你可以说遇到过单机请求耗时高的问题,通过 JMC 的飞行记录器采样分析,发现写 log 日志时线程竞争非常激烈,很多线程在等待写锁时耗时非常大,进一步通过 iostat 排查发现 util 利用率百分比很高,最后定位是磁盘出现问题。解决方法,一方面更换磁盘解决了问题,另一方面对写竞争较激烈的日志文件使用了异步 log 机制。这样回答,既可以突出你对常用工具的掌握能力,也可以突出你的实战和解决问题能力。

另外再给提供两个思路:

可以在介绍自己开发的某个项目时,提到在上线前使用 JMC 做了性能 Profile,发现并优化了某些问题。

在介绍项目方案时,讲到自己对某两个不同方案进行了 JMH 测试,来验证方案实现的性能,等等。这两个 Case 都能够做到主动出击,体现自己的对常用工具的理解与掌握能力。

真题汇总
最后列出一些真题用于参考练习,如下。

这些题目我前面基本都介绍过,就不再重复解答。推荐课后学习一下 JMC、BTrace、tcpdump、strace 等工具的使用。

常用框架

缓存

队列

数据库

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-23 18:34
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务