Java面试整活自己会一点大数据让疯狂diss

实际上这个问题就是非常基础的,实际上面试官就是想问你,二者的数据结构是什么样子的,以及他们各自适用于什么样子的场景上。
 
阿粉的回答就是从这开始入手,然后开始回答面试官的问题。
 
ArrayList和LinkedList都是实现了Collection和List接口。
 
ArrayList 底层实际上是大小可变数组的实现,并允许包括 null 在内的所有元素,还提供一些方法来操作内部用来存储列表的数组的大小。
 
LinkedList 底层就是链表的结构实现,并且允许所有元素(包括 null)LinkedList 类还为在列表的开头及结尾get、remove 和insert 元素提供了统一的命名方法。
 
这个时候我们就能从数组和链表的不同来分析性能的比较了,毕竟这都是老生常谈,数组结构查询速度快,添加和删除操作慢,而相对的链表结构,查询速度相对来说比较慢,而添加和删除操作比较快。
 
一般这个答案都是面试官需要的,也有面试官会问你,为什么查询数组就快,链表就慢,这个就涉及到底层的知识了,如果不会,那么肯定只能说,自己写过测试用例,实际对比的,这确实没错,但是肯定不是面试官想要的答案,面试官想要的答案都是:
 
针对查询操作来说,在数组中,只需对 [基地址+元素大小*k] 就能找到第k个元素的地址,对其取地址就能获得该元素,
 
而链表要获得第k个元素,首先要在其第k-1个元素寻找到其next指针偏移,再将next指针作为地址获得值,
 
这样就要从第一个元素找起,多了多步寻址操作,寻址操作次数链表要多一些。
 
如果你能回答出类似这种方式的答案,一般面试官就放过你了,阿粉面试的时候,十次有九次都是这种,说到这里之后,这个问题就简单的结束了,面试官也就不再进行深挖了

dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。