Java GC垃圾回收几乎是面试必问的JVM问题之一,本篇文章带领大家了解Java GC的底层原理,图文并茂,突破学习及面试瓶颈. 楔子-JVM内存结构补充 在上篇<JVM之内存结构详解>中有些内容我们没有讲,本篇结合垃圾回收机制来一起学习.还记得JVM中堆的结构图吗? 图中展示了堆中三个区域:Eden.From Survivor.To Survivor.从图中可以也可以看到它们的大小比例,准确来说是:8:1:1.为什么要这样设计呢,本篇文章后续会给出解答,还是根据垃圾回收的具体情况来设计的.…
如果Java虚拟机中标记清除算法.标记整理算法.复制算法.分代算法这些属于GC收集算法中的方法论,那么"GC收集器"则是这些方法论的具体实现. 在面试过程中这个深度的问题涉及的比较少,但对于理解上面的这些算法有很好的帮助.如果能够如数家珍,也是面试中的加分项,还是那句话,毕竟面试官的时间也不多了. 概念准备 在学习Java GC收集器之前,需要先了解一些内容和概念,首先如果没有学习<面试官,不要再问我"Java GC垃圾回收机制"了>的可先学习该篇文章,…
关于Java虚拟机类加载机制往往有两方面的面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程.其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解. 面试题试水 现在有这样一道判断程序输出结果的面试题,先看看打印的结果是什么? public class SuperClass { static { System.out.println("SuperClass static init"); } public static String ABC = "abc&qu…
关于Java虚拟机类加载机制往往有两方面的 面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程.其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解. 面试题试水 现在有这样一道判断程序输出结果的面试题,先 看看打印的结果是什么? public class SuperClass { static { System.out.println("SuperClass static init"); } public static String ABC = "abc&…
如果Java虚拟机中标记清除算法.标记整理算法.复制算法.分代算法这些属于GC收集算法中的方法论,那么"GC收集器"则是这些方法论的具体实现. 在 面试过程中这个深度的问题涉及的比较少,但对于理解上面的这些算法有很好的帮助.如果能够如数家珍,也是面试中的加分项,还是那句话,毕竟面试官的时间也不多了. 概念准备 在学习Java GC收集器之前,需要先了解一些内容和概念,首先如果没有学习<面试官,不要再问我"Java GC垃圾回收机制"了>的可先学习该篇文章…
起源 自己经历过的面试也不少了,互联网的.外企的,都有.总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的.细细想来,面试官拥有以下七种武器.恰似古龙先生笔下的武侠世界中的七种武器.下面我为各位一一道来. (欢迎转载.转载请注明出处:http://www.cnblogs.com/hzg1981/) 长生剑=语言基础 长生剑是七种武器之首,同理,编程语言的考察也是技术面试中最基本的.这条不满足的就直接Pass了.以Java为例,语言的考察大致可以分为三个层次: 初级…
JVM的运行数据区 首先我简单来画一张 JVM的结构原理图,如下. 我们重点关注 JVM在运行时的数据区,你可以看到在程序运行时,大致有5个部分. 1.方法区 不止是存“方法”,而是存储整个 class文件的信息,JVM运行时,类加载器子系统将会提取 class文件里面的类信息,并将其存放在方法区中.例如类的名称.类的类型(枚举.类.接口).字段.方法等等. 2.堆( Heap) 熟习 c/c++编程的同学们应该相当熟习 Heap了,而对于Java而言,每个应用都唯一对应一个JVM实例,而每一个…
常见的面试问题 总结一下,在Java程序员的面试中,经常会被问到类似这样的问题: Java中的函数式接口是什么意思? 注解 @FunctionalInterface 的作用是什么? 实现一个函数式接口有哪几种方式? lambda表达式和匿名内部类有什么区别? Java中的方法引用有哪几种形式? 能说说你对 Stream 接口中的 map 和 reduce 方法的理解吗? Stream并行编程的底层实现用了什么多线程框架? 能说说 Stream 并行编程的适用场景以及注意事项吗? Concurre…
1. 以下代码的输出结果是(A) int i =3; i = i++; System.out.println(i); A .3  B.4  C.5 a=b++是先将b值赋值给a后b再自增. 2. Math.round(11.5)等于多少? Math.round(-11.5)等于多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;向上取整 3. Collection 和 Collections的区别. Collection是集合类…
在Java相关的职位面试中,很多Java面试官都喜欢考察应聘者对Java并发的了解程度,以volatile关键字为切入点,往往会问到底,Java内存模型(JMM)和Java并发编程的一些特点都会被牵扯出来,再深入的话还会考察JVM底层实现以及操作系统的相关知识. 接下来让我们在一个假想的面试过程中来学习一下volitile关键字吧. 1. Java并发这块掌握的怎么样?来谈谈你对volatile关键字的理解吧. 参考答案: 我的理解是,被volatile修饰的共享变量,就会具有以下两个特性: 保…