Java开发,面试题扫描

作者:gggv123
链接:https://www.nowcoder.com/discuss/41112
来源:牛客网

2、ArrayList、LinkedList的区别,底层怎么实现的
3、HashMap是如何实现的
4、数据库的范式、索引
5、Java多线程有几种实现方式
6、jdbc、Statement 和 PreparedStatement
7、设计模式有哪些,设计模式的原则
8、介绍一下SSH和Hadoop
9、讲了一下笔试题
10、java访问权限
11、序列化和网络编程,如何实现文件的跨机器传输
12、树的遍历,深搜和广搜
13、java面向对象的特性:封装,继承,多态啥的

---------------------------- ---------  --------- -----------------------------------   ---------------------------------------------------------------

2.

ArrayList和LinkedList的大致区别如下:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

ArrayList和LinkedList底层实现原理

1.说一下 ArrayList 底层实现方式?

①ArrayList 通过数组实现,一旦我们实例化 ArrayList 无参数构造函数默认为数组初始化长度为 10②add 方法底层实现如果增加的元素个数超过了 10 个,那么 ArrayList 底层会新生成一个数组,长度为原数组的 1.5 倍+1,然后将原数组的内容复制到新数组当中,并且后续增加的内容都会放到新数组当中。当新数组无法容纳增加的元素时,重复该过程。是一旦数组超出长度,就开始扩容数组。扩容数组调用的方法 Arrays.copyOf(objArr, objArr.length + 1);

2.说一下 LinkedList 底层实现方式?

LinkedList 底层的数据结构是基于双向循环链表的,且头结点中不存放数据,如下:

既然是双向链表,那么必定存在一种数据结构——我们可以称之为节点,节点实例保存业务数据,前一个节点的位置信息和后一个节点位置信息,如下图所示:

 https://blog.csdn.net/weixin_38422276/article/details/78978410

猜你喜欢

转载自www.cnblogs.com/wanghuadongsharer/p/9746697.html
今日推荐