江苏伟风智能 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数据库如何体现这四个原则的呢

👆

#软件开发笔面经#
全部评论

相关推荐

点赞 评论 收藏
分享
4 2 评论
分享
牛客网
牛客企业服务