二面
二面很重要,二面很重要,二面很重要。二面对于你是否能通过面试,是否能最终从池子中被捞出来都很重要。一面面完的第二天下午收到来自杭州的电话,约了晚上九点的时间,且通知了视频面试和在线编程。
一阵慌张……看了那么多面经,没见过谁连续两次编程的……晚上九点,准时登录视频网址后,面试官已经在线。二面面试官稍显严肃,给人感觉非常严谨。上来简单自我介绍后,他说一面评价比较好,他会面试得细致一点,可能时间会稍长。当时心神一紧,做好了鏖战的准备。二面问的内容非常多,且覆盖范围很广,大概问题如下:
JVM方面
- java内存模型,五个部分,程序计数器、栈、本地栈、堆、方法区。
- 每个部分的概念、特点、作用。
- 类加载的过程,加载、验证、准备、解析、初始化。每个部分详细描述。
- 加载阶段读入.class文件,class文件时二进制吗,为什么需要使用二进制的方式?
- 验证过程是防止什么问题?验证过程是怎样的?加载和验证的执行顺序?符号引用的含义?
- 准备过程的静态成员变量分配空间和设置初始值问题。
- 解析过程符号引用替代为直接引用细节相关。
- 初始化过程jvm的显式初始化相关。
- 类卸载的过程及触发条件。
- 三种类加载器,如何自定义一个类加载器?
- 双亲委派机制。
- JVM内存分配策略,优先放于eden区、动态对象年龄判断、分配担保策略等。
- JVM垃圾回收策略,怎样判对象、类需要被回收?
- 四种垃圾回收算法标记-清除、复制、标记-整理、分代收集。
- JVM中的垃圾回收器,新生代回收器、老年代回收器、stop-the-world概念及解决方法。
- 四类引用及使用场景?
基本上JVM方面所有的大的概念全部问到,真的需要理解到位。JVM比较熟悉,全程巴拉巴拉不停地说,有惊无险。
集合类
初始引起话题的问题:hashmap了解吗?心中一喜,开启侃侃而谈(胡吹)模式。讲到了以下的一些点:
- hashmap实现的数据结构,数组、桶等。
- hashmap的哈希冲突解决方法:拉链法等。拉链法的优缺点。
- hashmap的参数及影响性能的关键参数:加载因子和初始容量。
- Resize操作的过程。
- hashmap容量为2次幂的原因。
讲完一通之后,面试官挺满意,说了解地比较深挺好,抛出了下一个问题hashtable了解吗?又是心中一喜,一通介绍: