江苏伟风智能 Java 实习一面
江苏伟风智能 Java 实习一面
1.说一下ArrayList和LinkedList的区别
ArrayList
- 优点:ArrayList 是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询 操作效率会比较高(在内存里是连着放的)。
- 缺点:因为地址连续,ArrayList 要移动数据,所以插入和删除操作效率比较低。
LinkedList
- 优点:LinkedList 基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等 一个连续的地址。对于新增和删除操作,LinkedList 比较占优势。LinkedList 适用于要头尾操 作或插入指定位置的场景。
- 缺点:因为 LinkedList 要移动指针,所以查询操作性能比较低。
适用场景分析
- 当需要对数据进行对随机访问的时候,选用 ArrayList。
- 当需要对数据进行多次增加删除修改时,采用 LinkedList。
如果容量固定,并且只会添加到尾部,不会引起扩容,优先采用 ArrayList。 当然,绝大数业务的场景下,使用 ArrayList 就够了,但需要注意避免 ArrayList 的扩容,以及非顺序的插入。
2.ArrayList和LinkedList插入数据效率谁高
👆
3.LinkedList的元素查询逻辑
get(int index): 逻辑: 从链表的头部开始遍历,计数直到达到指定的index位置。由于LinkedList内部维护了对头节点和尾节点的引用,以及节点间相互链接的关系,因此可以直接通过节点间的next指针(或在反向遍历时的prev指针)来逐个访问节点。 返回值: 返回该位置的元素,如果索引越界则抛出IndexOutOfBoundsException。
4.Spring IOC
5.@Autowired注解的实现原理
@Autowired原理:
举例:@Autowired
private BookService bookService;
1)、先按照类型去容器中找到对应的组件;bookService = ioc.getBean(BookService.class)
①、找到一个:找到就赋值
②、没找到就报异常
③、按照类型可以找到多个?找到多个如何装配上?
a、类型一样就按照变量名为ID继续匹配
Ⅰ、匹配上就装配
Ⅱ、没有匹配?报错
原因:因为我们按照变量名作为id继续匹配的
使用@Qualifier指定一个新的id
找到就匹配
6.spring数据注入
7.mysql索引适用的场景
8.索引失效场景
9.mysql事务的特点
10.ACID原则
什么是事务?: 多条sql语句,要么全部成功,要么全部失败。
事务的特性:
数据库事务特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性 (Durabiliy)。简称ACID。
- 原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功, 整个事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,让数据库返回初始 状态。
- 一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即数据不会被破坏。 如A转账100元给B,不管操作是否成功,A和B的账户总额是不变的。
- 隔离性:在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对彼此产生干扰
- 持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中。
11.mysql数据库如何体现这四个原则的呢
👆
#软件开发笔面经#