1.Kafka中有三个topic,但是有四个消费者,会出现什么问题?每个消费者都能消费到消息吗?
2.Integer a = 1,Integer b = 1,Double a = 1.0,Double b = 1.0,Boolean a = true,Boolean b =true,a==b?为什么?
(1)true。因为对于整型数据来说,在-128到127之间的值,会被缓存起来重复使用,也就是说如何自动装箱的方式创建值在-128到127之间的话,实际上他们之间的==比较是会被拆箱成int再比较,结果自然是true。
(2)对于浮点类型的数据来说,由于没有缓存区,所以a==b的结果是false。(为什么没有缓存区?因为浮点区间里面的数是无限多个的)
(3)对于布尔值来说,Java为它提供了缓冲,即TRUE和FALSE两个对象,所以a和b实际上都指向了Boolean.TRUE对象,故a==b的结果是true。
3.Java中数组和链表的区别?
(1)数组是一块连续的空间,数组在定义上长度就是固定的,一旦创建无法改变,当需要频繁的随机访问时,用数组较好。
(2)链表是一组通过指针相连的节点,链表的长度可以动态的改变,但是访问某一个元素的时候,需要遍历,但是删除和插入较快。
4.HashMap底层用什么实现的?
数组+链表+红黑树
5.红黑树是什么版本才引入的?
Java 8
6.HashMap数组中存储的是什么东西?
数组中存放的是链表(或者红黑树)的头节点,每个链表(或红黑树)中存放的是键值对
7.HashMap是如何新增一条数据的?
(1)HashMap会根据新增数据的K的hashCode找到该K在数组中的位置。
(2)如果该位置上的链表(或红黑树)为空,则直接将新增数据作为链表的头节点。
(3)如果该位置上的链表(或红黑树)不为空,则需要遍历该链表(或红黑树),查找对应的键是否存在。
(4)如果键存在,则更新对应的值;否则,将添加新的键值对到链表中。
8.线程安全的HashMap是什么?如何实现的?
9.死锁是如何产生的?
10.重写和重载的区别?
11.构造方法可以重写吗?
构造方法用于创建和初始化对象,不能被继承,自然也不能被重写,只能被重载。