java高级工程师匿名用户
面试官是个年轻人,从沟通中能看出面试官经验不是那么丰富,技术能力也不见得多强,有一个沟通场景大概是这样的,面试官出了一道题,关于ArrayList的,意思是新建了一个arrayList,初始化长度是100,然后将100个业务对象放入arrayList中,实现取出第50个对象进行删除,然后再插一个新的对象,我把代码在草稿上完整的写出了,此时面试官说,remove(i)这种写法会报错,我就在想这段代码我写过N次了应该不会有问题的,在后来的提问环节我追问这段代码为什么会报错以及报什么样的错误,面试官说你可以自己动手试试,我回答说我一定会动手尝试,但我希望您先跟我说一下,他始终没说出来,后来支支吾吾的憋出话说,因为是我临时想出来的,可能是我记错了,今天早上一上班我迫不及待的试了下,代码可以正常运行,我真的挺无语的,所以无论如何就冲这面试官我都不会考虑了。代码如下:public class TestArrayList { public static void main(String args[]) { List beanList = new ArrayList(100); for (int i = 0; i < 100; i++) { User user = new User(); beanList.add(user); } for (int i = 0; i < beanList.size(); i++) { if (i == 49) { beanList.remove(i); } } User newUser = new User(); beanList.add(newUser); System.out.println(newUser); }}ps:像arrayList和map这种,是有负载因子这个概念的,arrayList在你不指定的情况下默认是1.5意思是当你持续插入的过程中,当到达一定容量时,arrayList的存放数据的elementData长度会自动增加至原有长度的1.5倍。