[java面试题]
1.Collections.sort排序内部原理
在Java6Arrays.sort()和Collections.sort()中使用MergeSort,在Java7中,内部实现被TimSort代替,这需要对对象之间的比较进行更严格的实现
2.HashMap原理,java8所做的更改
在结构实现方面,HashMap是通过数组+链表+红黑树(JDK1.8添加了红黑树部分)实现的。HashMap仅允许一个记录的键最多为空,而允许多个记录的值为空。HashMap不是线程安全的。ConcurrentHashMap是线程安全的。解决冲突:发生冲突时,请使用zipper方法在单链接列表中链接其关键字为同义词的节点。哈希表的长度为m,定义了一个由m个头指针组成的指针数组T,并将地址为i的节点插入到以T(i)作为头指针的单链表中。在Java8中,冲突元素超出了限制(8),并且链表被一棵红黑树取代。
3.String和StringBuilder之间的区别
1)可变且不可变:字符串不可变,并且每次执行“+”时都会生成一个新对象。因此,在频繁更改字符串以节省内存的情况下,不使用String。
2)是否是多线程安全的:StringBuilder不会向该方法添加同步锁,因此它不是线程安全的。StringBuffer和String都是线程安全的。
4.向量和数组的区别
1)当内存不足时