网站首页 > 博客文章 正文
说明
如果你有经常注意面试题,你会发现现在面试题多多少少会含有jvm相关的面试题,之前也把一些jvm面试题汇总了下:面试题系列一,那为什么面试官喜欢问关于JVM的面试题呢?
主题
谈谈自己的理解,概括为以下几个方面:
- 的确很重要。
- 供大于求。
- 面试风气。
下面就针对这几点谈谈。
的确很重要
随着互联网的发展,高并发高可用、快速响应成为软件的必须,而JVM与这些有着密切关联。之前JVM系列好多都是一些由于STW影响到快速响应问题,忽然网站慢一下(抖动下)等问题,下面谈谈最近通过JVM排查到的高并发高可用问题。(在高可用高并发下面问题原因可能会很多,比如cpu异常高、磁盘IO高、SWAP空间等,有可能很多问题都是综合性的问题)
以前在我的认知里面,如果服务运行有问题,最简单有效快速地办法就是重启,最近遇到了问题打破了我对该方法的认知。
某业务线最近集群服务升级忽然上线上去不能提供服务,之后影响到整个集群,查看当时服务器情况,负载、cpu、io、swap等都正常,查看日志就是卡在最后一行不动了(也没有发现OOM,等任何异常)。
如果是之前估计这个问题我也就排查不了了,现在排查问题多了一个维度JVM(的确有时候需要考虑的,并且现在很多监控工具都会考虑到JVM的),查看gcutil查看比例,发现from 100% eden 100% old 100%但是服务就是没有OOM,执行任何都命令都非常缓慢了(更别谈访问请求了),查看具体gc日志发现concurrent mode failure 并且时间很长,猜测就是一瞬间量把内存给用完了,导致from 100% eden 100% old 100%现象,最终不能提供服务,之后其他集群节点也陆续出现了此类情况,重启无效,现象一样很快就from 100% eden 100% old 100% 不能提供服务,没办法,一直重启直到都启动好了可以正常提供服务。
留了一台进行排查问题,执行jmap -histo pid无果,加-F也无果,后来执行jmap -dump:format=b,file=heap.bin pid (6G堆执行了3-4个小时左右)通过MAT分析查看,发现都是某个逻辑产生的数据,占用了5G左右(char[]、String、Map、List等都与某个逻辑代码有关)猜测是该问题(由于涉及到公司具体业务不方便截图,只能大概说明下),很容易定位到代码最后是由于并发没有考虑好,逻辑写的也有点问题导致的,进行修改处理,问题解决,出了JVM相关问题可以进行排查解决。
很能很多人认为线上出现问题可以排查继续解决问题的人牛逼,其实错了,真正牛逼的人都是在问题产生前就解决了(需要意识里面转变和学习思考提高的地方)。
下面看个例子就明白了,是Charles告诉我的,我觉得放在这里特别合适:
春秋战国时期,有位神医被尊为“医祖”,他就是“扁鹊”。一次,魏文王问扁鹊说:“你们家兄弟三人,都精于医术,到底哪一位最好呢?”扁鹊答:“长兄最好,中兄次之,我最差。”文王又问:“那么为什么你最出名呢?”扁鹊答:“长兄治病,是治病于病情发作之前,由于一般人不知道他事先能铲除病因,所以他的名气无法传出去;中兄治病,是治病于病情初起时,一般人以为他只能治轻微的小病,所以他的名气只及本乡里;而我是治病于病情严重之时,一般人都看到我在经脉上穿针管放血,在皮肤上敷药等大手术,所以以为我的医术高明,名气因此响遍全国。”
如果能在编码时候就考虑到JVM,做到面向JVM编程那就更牛逼了,如果能在上线前查阅到此类JVM问题或者是OOM问题以及一些其他问题那也就好了。
综述:因此这些成为必不可少的技能,所以面试需要了解,因为公司可能会面临该问题。
供大于求
现在不像以前了,以前会点html都好找工作,现在由于学习软件的人越来越多,而且每年大学生都在毕业(而老一辈的也很少换工作)人只会越来越多,有个笑话,随便在大街上扔硬币砸到的那个可能就是搞软件的,现在人员太多,公司为了区分,会多添加维度,每多一个维度可能就会刷掉一批人,核心供大于求,所以我们也必须朝着这些大的方向努力,使得自己的竞争力比别人强。
面试风气
简单的问题都不好意思问,怕面试者鄙视面试公司问的问题。现在有一股妖风,不管啥公司都慢慢像阿里这样的公司靠近,面试不问点jvm、并发、分布式都不好意(虽然公司可能没有用到,虽然可能仅仅CURD),老是觉得问问这些显得逼格高点,不管处于什么原因很多公司的确都在学习他们,都在问这些问题,那么我们就朝着这些大的方向努力也是没错的,如果朝着这些方向努力就是他们需要的人才,那么也就对了。
类似其他,比如高并发 锁、分布式、缓存等都可以考虑考虑这样思考,你会有不一样的收获的。
以上就我的分享,感谢各位耐心的看完文章,最后再分享一个我自己的后端技术群,群里自己收集了很多java架构面试资料,大家可以进群免费领取资料哦,群号:680075317,也可以进群一起交流,比如遇到技术瓶颈、面试不过的,大家一些交流学习!
猜你喜欢
- 2024-09-18 3分钟搞清楚 JVM逃逸分析(java 逃逸对象)
- 2024-09-18 天天都是面对对象编程,你真的了解你的对象吗?
- 2024-09-18 做JAVA开发的同学一定遇到过的爆表问题,看这里解决
- 2024-09-18 线上一次fullgc搞得鸡飞狗跳后,我总结了这篇文章
- 2024-09-18 Java中的对象都是在堆上分配的吗?
- 2024-09-18 jvm 相关的线上问题,内存使用率飙升到 90%+ 等 处理手段
- 2024-09-18 面试官问我JVM问题,我直接回怼他
- 2024-09-18 JVM入门第2部分-调试内存问题(jvm内存调优方法)
- 2024-09-18 互联网大厂面试系列-面试被问到什么是JVM的逃逸分析?
- 2024-09-18 内存溢出OutOfMemoryError科普系列一
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)