• 面试题


    蜜源

    (1)HashMap 与 HashTable 的对比?

    YY

    (1)HashMap 1.7, 1.8 的主要区别, 除了树化,扩容后不需要重新计算hash 还有什么?

    (2)ConcurrentHashMap 1.7 与 1.8 的区别, 1.7 的分段锁,分了多少段呢? 1.8 还有化了什么

    CVTE

    (1)hashmap 扩容机制,为什么要在0.75的时候扩容?

    (2)Set集合中元素不重复的特性?

    底层实际将将该元素作为key放入HashMap

    由于HashMap的put()方法添加key-value对时,当新放入HashMap的Entry中key与集合中原有Entry的key相同,新添加的Entry的value会将覆盖原来Entry的value,但key不会有任何改变,

    因此如果向HashSet中添加一个已经存在的元素时,新添加的集合元素将不会被放入HashMap中,原来的元素也不会有任何改变,这也就满足了Set中元素不重复的特性

    钱大妈,小迈网络

    (1)ArrayList和LinkList的区别?底层结构是怎样的?

    (2)Map有哪些?线程安全是哪一个?

    通天晓

    (1)linklist和arraylist的区别?arraylist怎么扩容的?

    (2)了解hashmap吗?

    其他:

    (1)HashMap 底层实现原理是什么?JDK8 做了哪些优化?为什么要添加红黑树?

    (2)JDK1.8HashMap扩容时做了哪些优化?

    (3)加载因子是什么?为什么是0.75?

    (4)HashMap 是如何导致死循环的?

    (5)当有哈希冲突时,HashMap是如何查找并确认元素的?

    (6)HashMap 为什么是线程不安全的?

    数组和链表的区别?

    1、内存占用

        ①数组需要连续的内存空间

        ②链表不需要连续的内存空间

      2、结构大小

        ①数组大小固定,不可动态改变

        ②链表大小可动态变化

      3、增删查

        ①数组查询速度快(下标),增删速度慢(移动大量元素)

        ②链表增删速度快(修改引用),查询速度慢(遍历)

      4、访问方式

        ①数组可根据下标随机访问

        ②链表只能顺序遍历访问,不能随机访问

    arrayList 和linkList区别?

    (1) ArrayList是实现了基于动态数组的数据结构,LinkedList是实现了基于链表的数据结构。

    (2) 对于添加、删除元素,LinedList比较占优势,因为ArrayList要移动大量数据。

    (3) 对于遍历和查找元素,ArrayList比较快(下表),因为LinkedList需要从头开始遍历。

    arraylist怎么扩容的?

    ArrayList扩容增加原来的0.5倍。

    了解hashmap吗?

    (1)    非线程安全的

    (2) HashMap允许记录的键为null(最多一条记录),值为null(允许多条记录)

    (3) HashMap中数组的默认大小是16,而且一定是2的倍数,扩容后的数組长度是之前数组长度的2倍(扩容倍数是2)。

    (4) 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表长度大于 8 时,链表结构会转换成红黑树结构(红黑树具有快速增删改查的特点)。

    (5) 扩容因子是0.75

    Map有哪些?线程安全是哪一个?

    HashMap, 线程安全的是HashTable,SynchronizedMap,ConcurrentHashMap

    HashMap、Hashtable、ConccurentHashMap三者的区别

    HashMap线程不安全,数组+链表+红黑树
    Hashtable线程安全,锁住整个对象,数组+链表
    ConccurentHashMap线程安全,CAS+同步锁,数组+链表+红黑树
    HashMap的key,value均可为null,其他两个不行。

    HashTable效率低的原因么?

    HashMap和Hashtable的区别?

    ArrayList和Vector的区别

    首先,这两个类都实现了List接口(List接口继承了Collection接口),是有序集合,相当于一种动态的数组,能够通过索引(元素在List中位置,类似于数组的下标)来访问元素,并且其中的数据是允许重复的。

    区别主要包括两个部分:

    (1)同步性:

    Vector是线程安全的,而ArrayList是非线程安全的,所以如果不是要求线程安全的情况下,最好使用ArrayList,效率会高些。

    (2)数据增长:

    ArrayList与Vector都有一个初始的容量大小,当存储超过了容量时,就需要增加ArrayList与Vector的存储空间,Vector默认增长原来的一倍,ArrayList增加原来的0.5倍。

    HashMap和Hashtable的区别

    (1) HashMap 是非线程安全的,HashTable 是线程安全的,所以 HashTable 的效率比不上 HashMap;

    (2) HashMap允许记录的键为null(最多一条记录),值为null(允许多条记录),而 HashTable不允许;

    (3) HashMap中数组的默认大小是16,而且一定是2的倍数,扩容后的数組长度是之前数组长度的2倍。HashTable中数组默认大小是11.扩容后的数组长度是之前数组长度的2倍+1。

    希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
  • 相关阅读:
    PHP中如何防止跨域调用接口
    301、404、200、304、500HTTP状态
    多表联合查询
    put方式提交上传图片
    获取样式属性getComputed,currentStyle
    AjaxPro异步加载服务器的时间
    在 ASP.NET 中执行 URL 重写
    ASP.NET 的前世今生 之 .NET Framework
    asp.net 读写 XML 转载自 yiki'space
    可爱的人人
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/15049197.html
Copyright © 2020-2023  润新知