专栏名称: 朱小厮的博客
著有畅销书:《深入理解Kafka》和《RabbitMQ实战指南》。公众号主要用来分享Java技术栈、Golang技术栈、消息中间件(如Kafka、RabbitMQ)、存储、大数据以及通用型技术架构等相关的技术。
目录
相关文章推荐
拆神  ·  339万起!白鹅潭江景新盘开价 ·  2 天前  
财宝宝  ·  @金籉霷:1995年,付了4000块电话初装 ... ·  3 天前  
51好读  ›  专栏  ›  朱小厮的博客

10月面试了60多个人,总结了点心得

朱小厮的博客  · 公众号  ·  · 2020-11-02 08:51

正文

公司最近在招Java开发岗,居然一天内就收到200多份简历!想不到吧?
光筛选简历都用了很久,一天面好多个都快面吐了,现在想招个合适的Java开发太不容易了,需要去挖的细节太多了。
JVM、多线程、数据结构和算法、高并发、设计模式 这些内容,基本上都会被问到,面试官会通过这些内容评估Java开发人员的技术栈,如果这些不掌握的话基本直接GG了。
上面这些答上来才会进入真正的面试环节。大厂面试必问JVM,那么请大家尝试着回答一下以下关于JVM的问题:
1、JVM内存区域有哪些?为什么这么划分?
2、JVM 垃圾回收时如何确定垃圾?GC Roots有哪些?
3、堆和栈的区别是什么?Java中的数组是存储在堆上还是栈上的?
4、Java中的对象创建有多少种方式? 对象创建的过程是怎么样的?
5、你做过JVM 参数调优和参数配置吗?请问如何查看 JVM 系统默认值?
6、对于 JDK 自带的监控和性能分析工具用过哪些?
7、怎么看死锁的线程?
8、JVM内存泄漏与内存溢出的区别,怎么排查内存泄漏?
9、一个亿级流量系统,让它几乎不发生Full GC。你来进行JVM调优,怎么做?
10、线上系统突然CPU 100%,你怎么排查?
怎么样?你能答上来多少?自信能答对的又有多少?
很多工作3-5年的Java开发人员,平时接触的都是一些传统项目,像上面的一些实际场景案例,根本没遇到过。一旦被面试官问到,因为接触的太少,掌握的都是零散的知识点,基本回答起来都很片面,支支吾吾的。最后只能是回家等通知…
比如像第10个问题: 线上系统突然CPU100%,你怎么排查? 我这边可以给大家看一下我的解答思路:
1.先通过top命令找到消耗cpu很高的进程id,假设是2732;
top 命令是我们在 Linux 下最常用的命令之一,它可以实时显示正在执行进程的 CPU 使用率、内存使用率以及系统负载等信息。其中上半部分显示的是系统的统计信息,下半部分显示的是进程的使用率统计信息。
2.执行top -p 2732单独监控该进程
3.在第2步的监控界面输入H,获取当前进程下的所有线程信息
4.找到消耗cpu特别高的线程编号,假设是3288
5.执行jstack 2732对当前的进程做dump,输出所有的线程信息
6.将第4步得到的线程编号3288转成16进制是0xCD8
7.根据第6步得到的0xCD8在第5步的线程信息里面去找对应线程内容
8.解读线程信息,定位具体代码位置
最后根据线程名称相关信息进行具体排查(这里明显是GC线程占用了CPU)
关于JVM 很多面试都会深挖到底层的汇编、Linux服务器实战等,因为可以通过JVM排查到许多高并发高可用问题,甚至在问题产生前就把问题解决。如果面试的时候可以主动深入讲解JVM调优实战,绝对可以让面试官眼前一亮,给面试加分。
为了让大家有针对性的提升 JVM 调优技术,我特邀前 58 架构师 King 老师带来 JVM 精品之底层设计与调优实战》 实战直播课,从 JVM运行时数据区、垃圾回收算法与垃圾回收器、JVM常见面试题解析,到JVM调优工具、JVM调优实战 等,让你轻松征服面试官,升职跳槽更有底气!

一、适合人群

1、具备一定Java基础;
2、想深入学习JVM性能调优;
3、近期有跳槽及面试需求;
4、立志成为高级工程师、架构师的IT人;
二、你将获得什么?

1、建立完整的JVM知识体系
以大量的实战来增加你的理解和记忆,理论结合实践,进而加深对JVM的理解。从而建立体系化的JVM知识,而不是碎片化的内容。
2、面试中获取Offer的利器
课程中以实际场景作为出发点来解答面试中的问题,助力高级Java岗位面试,让你快速成为成为Java高级、资深工程师。
3、能够对线上应用进行优化和故障排查
大量的JVM调优实战,掌握它们,你能够非常容易地定位到应用中的问题,并提供优化思路,这会让你在实际工作中事半功倍。
三、课程福利
1:提供学习直播+预习资料+源码+答疑
2:今天加入额外再赠送一份目前最“火”的






请到「今天看啥」查看全文