快递100一面(Java)
面试邀请来得有突然,记录一下有些问题以及答案。
ArrayList 是线程安全的吗,怎样保证他线程安全。
原因: 其实大部分集合类都不是线程安全的,其关键的原因在于添加元素的底层实现,因为在arrayList的add()中:
elementData[size++] = e;
这一步包括了自增和赋值,因为当线程A执行了赋值以后,暂停转而运行其他的线程,但是还没扩容,就会导致,B线程的值直接覆盖A的值,
解决: 调用Collections.synchronizedList方法 ,其原理也就是将ArrayList里的方法添加synchronized关键字,也就是加锁,也就是经典的装饰器模式。
HashMap会出现什么问题,如何解决?
首先HashMap是一个高效的数据结构,可以在O(1)时间复杂度查询数据,原理大致为:将Key通过Hash算法得到一个地址值,再获取内存中想要的数据,但是Hash算法存在缺
快递100一面(Java)最先出现在Python成神之路。
版权声明:
作者:zhangchen
链接:https://www.techfm.club/p/16852.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论