面试开始
面试官:你好,我是今天的面试官,你是王德发对吧?
王德发:是的,您好!
面试官:好的,我们直接进入正题。
第一轮提问(Java基础与核心)
面试官:第一个问题,HashMap
在Java中是如何实现的?扩容机制是什么?
王德发:嗯……HashMap
底层使用数组+链表/红黑树实现。当链表长度超过阈值时会转为红黑树,提升查询效率。扩容的话,是当前容量达到负载因子乘以容量的时候,就会扩容为原来的两倍。
面试官:不错,回答得还可以。那我再问你,ArrayList
和LinkedList
的区别是什么?适用场景分别是什么?
王德发:ArrayList
基于数组实现,支持随机访问,查找快,但插入删除慢;LinkedList
基于双向链表实现,插入删除快,但查找慢。适用于频繁增删的场景用LinkedList
,频繁查询的场景用ArrayList
。
面试官:很好,基本概念掌握得不错。
面试官:接下来一个问题,final
关键字的作用是什么?可以用在哪些地方?
王德发:final
可以修饰类、方法、变量。修饰类表示该类不能被继承,修饰方法表示该方法不能被子类重写,修饰变量表示该变量一旦赋值就不能改变。
面试官:回答准确,很好。
面试官:最后一题,谈谈你对Java异常体系的理解,checked exception
和unchecked exception
有什么区别?
王德发:Java异常分为Error
和Exception
。Exception