首页 > 焦点科技Java社招面经分享
头像
sclui袅袅
发布于 2020-08-02 23:32
+ 关注

焦点科技Java社招面经分享

1、先是项目介绍,细节提问,项目中用到缓存了吗?

2、eclipse插件开发,它的初始化方法是什么?

3、ArrayListLinkedList区别,ArrayList有初始容量吗,你看的是jdk几版本?容量不够怎么办,扩容为多大 ?

4、如果Arraylist当前容量是10,且有9个数据,那么是添加第10个数据时扩容还是第11个,扩容怎么实现的,为什么采用复制数组的方式而不是往后直接添加数据?

5、你比较熟悉哪个集合?

6、说说hashmap数据结构;

7、说说红黑树,它是基于什么数据结构实现的?

8、红黑树可能会再转为链表吗?

9、说下hashmap put的过程;

答:keyhashcode16位与低16位异或运算得到新的hash,为了让数据散列更均匀,然后把异或计算出的新hash与此时的hashmap容量-1&运算,得到插入下标。

 

10、为什么要做&运算,还有什么方式?

:二进制运算速度快,还可以取模。之后如果下标位数组无数据则直接插入,如果有数据则链表往下逐个进行hash比较,如果产生hash碰撞再进行==或者equals比较key是否一样,一样则覆盖原数据,否则添加到链表后面。

 

11、发生hash冲突怎么办?产生hash冲突后为什么还会比较原来keyhashcoderehash后的元素具体去向,还有扩容;

12、当前插入的位置上没有元素就不扩容吧?

13、为什么是2次幂扩容;

:我觉得有3<stron>2进制运算快;hash与当前容量-1&运算很快且很巧妙地获得元素下标;扩容后能巧妙地重新分配元素位置; </stron>

 

14、为什么看hashmap源码,你觉得看了后对你有什么好处?

15、扩容是一个费性能的事,如果知道集合中大致会存多少元素最好给它一个初始容量,如果你知道里面会存100个左右数据,你会给它多大初始容量?

16、它是线程安全的吗?

答:不是,jdk1.8多线程情况下可能会造成数据丢失,1.8之前更可能造成死循环。

 

17、线程安全的map有什么

答:hashtable,concurrentHashMap

 

18、说说concurrentHashMap,默认容量多少?

19、其它集合类了解吗

答:hashSettreeSet,treeMap,都解释的相对明白

 

20、它们是否允许插入空值

21、使用treeMap有什么需要注意的 (其中的元素要实现comparator接口)

22、有关synchronize的问题

23、Lock接口有哪些实现类,说说读写锁。

24、java内存模型,新生代老年代算法,简述新生代老年代gc过程,算法,标记清除,标记整理;

25、为什么新生代和老年代采用gc算法不同。jvm调优。

26、线程池有哪些参数,各代表什么意思?线程池中提供哪些队列种类?

27、假如线程池核心池5,总池大小10,有界队列长度10,现在有13个线程要用线程池运行,说下核心池和队列中的线程情况。

28、jdk中提供了哪几种线程池的实现?

29、io中用了什么设计模式,说说观察者模式,项目中用了哪些设计模式。jdk8有哪些新增功能?

30、redis有哪些数据结构。spring bean的生命周期,springBeanFactoryFactoryBean有什么区别?

更多模拟面试

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐