java程序员面试——java基础(1)集合

java程序员面试——java基础(1)集合


1.HashMap实现原理?参数?

原理:

  • hashmap是数组和链表的结合体,数组每个元素存的是链表的头结点
  • 往hashmap里面放键值对的时候先得到key的hashcode,然后重新计算hashcode,(让1分布均匀因为如果分布不均匀,低位全是0,则后来计算数组下标的时候会冲突),然后与length-1按位与,计算数组出数组下标
  • 如果该下标对应的链表为空,则直接把键值对作为链表头结点,如果不为空,则遍历链表看是否有key值相同的,有就把value替换,没有就把该对象最为链表的第一个节点,原有的节点作为他的后续节点

参数:

  • 初始容量16,达到阀值扩容,阀值等于最大容量*负载因子(默认0.75),扩容每次2倍,总是2的n次方

2.HashMap HashTable区别?,Hashmap key可以是任何类型吗?

这里写图片描述


3.HashMap ConcurrentHashMap区别?ConcurrentHashMap如何保证线程安全?

这里写图片描述
ConcurrentHashMap使用分段锁技术,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问。


4.LinkedList ArrayList区别

  • ArrayList基于数组,LinkedList基于链表
  • ArrayList查找快,LinkedList插入删除快
  • 随机查找频繁用ArrayList,插入删除频繁用LinkedList

5.ArrayList,Vector,HashMap,Hashtable扩容机制?

  • arraylist,初始容量10,(oldCapacity * 3)/2 + 1
  • vector,初始容量10,oldCapacity * 2
  • hashmap,初始容量16,达到阀值扩容,为原来的两倍
  • hashtable,初始容量11,达到阀值扩容,oldCapacity * 2 + 1

6.concurrent包?

这里写图片描述


7..集合框架图

这里写图片描述

近期学习spark内容,同时复习整理一下Java的基础知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值