公司最近在招Java开发岗,居然一天内就收到200多份简历!想不到吧?
光筛选简历都用了很久,一天面好多个都快面吐了,现在想招个合适的Java开发太不容易了,需要去挖的细节太多了。很多工作3-5年的Java开发人员,平时接触的都是一些传统项目,像上面的一些实际场景案例,根本没遇到过。一旦被面试官问到,因为接触的太少,掌握的都是零散的知识点,基本回答起来都很片面,支支吾吾的。最后只能是回家等通知…比如我们总监最喜欢问的一个问题:线上系统突然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进制是0xCD87.根据第6步得到的0xCD8在第5步的线程信息里面去找对应线程内容
8.解读线程信息,定位具体代码位置最后根据线程名称相关信息进行具体排查(这里明显是GC线程占用了CPU)
像JVM、多线程、数据结构和算法、高并发、设计模式这些内容,基本上都会被问到,面试官会通过这些内容评估Java开发人员的技术栈,如果这些不掌握的话基本直接GG了。
上面这些答上来才会进入真正的面试环节。大厂面试必问JVM,那么请大家尝试回答一下以下关于JVM的问题:2、JVM 垃圾回收时如何确定垃圾?GC Roots有哪些?3、堆和栈的区别是什么?Java中的数组是存储在堆上还是栈上的? 4、Java中的对象创建有多少种方式? 对象创建的过程是怎么样的? 5、你做过JVM 参数调优和参数配置吗?请问如何查看 JVM 系统默认值?6、对于 JDK 自带的监控和性能分析工具用过哪些?8、JVM内存泄漏与内存溢出的区别,怎么排查内存泄漏?9、一个亿级流量系统,让它几乎不发生Full GC。你来进行JVM调优,怎么做?关于JVM 很多面试都会深挖到底层的汇编、Linux服务器实战等,因为可以通过JVM排查到许多高并发高可用问题,甚至在问题产生前就把问题解决。如果面试的时候可以主动深入讲解JVM调优实战,绝对可以让面试官眼前一亮,给面试加分。为了让大家有针对性的提升JVM调优技术,我特邀前58架构师King老师带来《JVM精品之底层设计与调优实战》实战直播课,从JVM运行时数据区、垃圾回收算法与垃圾回收器、JVM常见面试题解析,到JVM调优工具、JVM调优实战等,让你轻松征服面试官,升职跳槽更有底气!以大量的实战来增加你的理解和记忆,理论结合实践,进而加深对JVM的理解。从而建立体系化的JVM知识,而不是碎片化的内容。课程中以实际场景作为出发点来解答面试中的问题,助力高级Java岗位面试,让你快速成为成为Java高级、资深工程师。大量的JVM调优实战,掌握它们,你能够非常容易地定位到应用中的问题,并提供优化思路,这会让你在实际工作中事半功倍。2:今天加入额外再赠送一份目前最“火”的【Java Github 超硬核面试 “备战” 手册】;这套面试手册的组成内容主要有以下3大主题,5个主要模块,35个小板块:程序员简历模板(900份)