程序员一定学JVM吗?
作为一名Java工程师,怎么可能说自己不懂JVM呢,想成为一名优秀的架构师,JVM是你必备的,没有什么捷径,只有
好好的理解JVM就可以了,可以说每个Java程序员面试的时候必问的一个问题,你有没有面对过JVM这么奇怪的面试题吗?你有没有被JVM伤害过呢?
最新JVM面试题
1,什么是垃圾回收?
答:垃圾回收首先要从早期的计算机语言说起,比如C语言,当使用C语言发开的时候,开发者需要手动的来跟踪内存的,这种的缺点就是当程序员不小心忘记释放内存的时候,会造成内存的泄露。所以到了Java语言,就提供所谓的“垃圾回收”,它的好处就是会在适当的时候将已经终止生命期的变量内存给释放掉,这样就降低了内存的泄露问题。
2,用什么命令可以查看项目的依赖关系?
答:使用mvn dependency:tree就可以查看项目依赖。
3,常用垃圾回收算法有几个,你有用过吗?
答:常见的垃圾器有mark-sweep算法、Coping算法、mark-compact算法、Generational coolection算法。
4,常用垃圾回收器有哪些?
答:常见的垃圾回收器serial/serial Old、ParNew、Parallel Scavenge、Parallel Old、CMS、G1一共有6种垃圾回收器。
5,垃圾回收算法和垃圾收集器分别是?
答:垃圾收集器算法是内存的理论基础而已,然而垃圾收集器才是内存回收的具体实现。
6,你了解Java8的metaspace(元空间)吗?
答:元空间的本质和永久带类相似,都是对JVM规范方法区的实现,然而元空间和永久之间最大的区别就是元空间并不在虚拟机中,而是使用本地内存,这是它们的不同点。
7,为什么要进行元空间代替久代?
答:因为字符串存在永久代中,容易出现性能的问题以及内存的溢出,永久代会为GC带来不必要的复杂度,然后回收率偏低。
高并发
1,你知道线程状态有哪些?
答:新建状态,可运行可能在运行中也能在等待CPU时间片,还有阻塞就是等待获取一个排锁,如果线程释放了锁就会结束状态等等。
2,你知道并发级有哪些吗?
答:无等待、无锁、无饥饿、阻塞、无障碍。
3,volatile和synchronized的区别?
答:volatile仅能实现变量的修改可见性,然而synchronizaed则是可以保证变量的修改可见性和原子性的。还有就是vloatile不会造成线程的阻塞,synchronizaed则相反,但只是可能造成阻塞。
4,synchronized关键字的使用方式有哪些?
答:普通同步方法使用时锁是当前实例的实例对象、静态同步方法时锁是当前类的class对象、以及同步方法块使用时琐是自己定义的对象。
总结面试过程该注意什么
面试一定要提前到达,作为Java程序员一定要好好的充分准备,多背面经题,最主要的JVM这块要好好准备,还有就是数据结构都是面试的重中之重,祝大家早日找到心仪的工作。