程序员

【Java面试提问解读】三:容器相关

2019-03-14  本文已影响0人  Cesarean
面试公司:字节跳动西瓜视频
面试岗位:后台开发日常实习生
面试轮次:第一次面试
面试问题纵览

前言:这里的问题我答得一半一半,因为只会用而没有深入底层,而实际上面试的话对于这个容器的底层实现还是很重视的。这篇先讲面试问题,再写一些容器的基础。


ArrayListLinkedList异同

HashMap底层实现
HashMap的底层实现是数组+链表;数组用于散列表,冲突的解决方案是拉链法,同时在JDK1.8之后有了一个改进就是当冲突链链长大于阈值(默认8)时,将该冲突链转化为红黑树,以保证查询的效率。(问到这里就可能扯到红黑树和二叉查找树了)
扩充:
@HashMap核心三大功能

@HashMap死循环

HashMapHashTable异同

//Implements in HashMap
public V put(K key, V value) {
    return putVal(hash(key), key, value, false, true);
}
static final int hash(Object key) {
    int h;
    return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
//Implements in HashTable
public synchronized V put(K key, V value) {
    // Make sure the value is not null
    if (value == null) {
        throw new NullPointerException();
    }
    ...
}

容器基础

上一篇 下一篇

猜你喜欢

热点阅读