快递 100 面 (Java 版本)
发布时间
阅读量:
阅读量
突如其来的面试邀请令人措手不及,现将部分问题及对应的回答整理记录如下。
ArrayList 是线程安全的吗,怎样保证他线程安全。
原因:
事实上,多数集合类并未实现线程安全机制,其根本原因与元素添加操作的底层实现密切相关。具体而言,在arrayList的add()方法中,这一问题尤为突出。
elementData[size++] = e;
该过程涉及自动递增与赋值操作,由于当线程A完成赋值后,系统暂时挂起并切换至其他线程执行,而此时尚未进行数组扩容,将引发线程B直接覆盖线程A所赋值的问题。
应对措施:
采用Collections.synchronizedList方法进行处理,其本质是为ArrayList中的各个方法添加synchronized关键字,实现同步控制,即通过加锁机制来保障线程安全,这一方式正是典型的装饰器模式的应用。
HashMap会出现什么问题,如何解决?
首先,HashMap作为一种高效的数据结构,能够在O(1)的时间复杂度内完成数据查询,其基本原理是:通过将Key值输入Hash算法生成一个对应的地址值,进而从内存中获取所需数据。然而,Hash算法本身存在一定的局限性,即不同Key值经过计算后可能以极低的概率生成相同的地址值,这种现象被称
全部评论 (0)
还没有任何评论哟~
