程序员面试题

HashMap和Hashtabled的区别:
HashMap:线程是不安全的,效率高,可以存储null键和null值
Hashtable:线程是安全的,效率低,不可以存储null键和null值
多线程下的HashMap-----不安全的(危险哦)
Why?
because:1,put()的时候导致的多线程数据不一致(丢失数据)
2,resize()操作会导致环形链表
3,fail-fast,当前HashMap同时进行删除/修改时抛出异常

注解:就是代码中的特殊标记,可以在编译,类加载,运行时被读取,并执行相应的处理。
基本的Annotation
1. @Override:重写注解检查该方法是否是实现父类的
2. @Deprecated:过时注解
3. @SuppressWarnings:抑制编译器警告注解,就是不给我们给予警告
4. @SafeVarargs:堆污染警告,就是一个不是泛型的集合赋值给一个带泛型的集合
5. @Functionallnterface:指定接口是函数式接口
数组和集合的区别:
1:长度的区别 数组的长度是固定的、集合的长度可变
2:内容不容 数组存储的同一种类型的元素、集合可以存储不同类型的元素
3:元素的数据类型
数组可以存储基本数据类型也可以存储引用数据类型
集合只能存储引用数据类型
集合(Java容器)
1.List接口(有序,可重复): ArrayList集合和LinkedList集合和Vector集合
1. ArrayList:底层数据结构是数组。线程不安全(改查快)
2. linkedlist:底层数据结构是链表。线程安全(增删快)
3. Vector: 底层数据结构是数组。线程安全
注意:ArrayList是基于动态数组实现的,增删时需要对数组拷贝,它的默认化初始容量长度是10,需要扩容的时候增加原先的0.5倍,就是原先的1.5倍(1+0.5)倍。
ArrayList和Vector的区别:最大的区别就是一个不安全一个安全。Vector安全性高(底层是同步的synchronized)另外一个区别就是ArrayList在扩容时增加原先的0.5倍,而Vector是原先的1倍
Linkedlist的底层是数据结构是双链表
3.Map集合(无序,不可重复)
Collection和Map的区别:
1. Collection是单列集合,里面的set是唯一的,list是可以重复的,它的数据结构镇对元素有效
2. Map是双列集合,可以通过键key、值Value一一对应的,属于一个映射
HashMap的底层是:数组+链表+红黑树
链表也是散列表(有一个装载因子属性其默认值是0.75)
2.set接口----底层实际上是一个HashMap的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值