面试题09

Posted SmallCuteMonkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题09相关的知识,希望对你有一定的参考价值。

1.事务具有属性?

ACID属性。

  1. 原子性
  2. 一致性
  3. 持久性
  4. 隔离性

2.mysql的处理事务方式?

  1. 用begin,rollback,commit来实现
  • begin开始一个事务
  • rololback进行事务的回滚
  • commit提交一个事务
  1. 用set来改变事务的自动提交模式
  • set AUTOCOMMIT=0 禁止自动提交
  • set AUTOCOMMIT=1 可以自动 提交

3.事务的四种隔离级别?

  1. Read UNCOMMITTED
    一个事务读取另一个事务未提交的数据
  2. Read Committed 一个事务要等另一个事务已经 提交以后才可以读取
  3. Read Repeateable
    可重复读,在开始读取事务的时候,不可以进行修改的操作
  4. Serializable 序列化
    是事务的最高的隔离级别,可以避免脏读和不可重复读和幻读,但是
    这个级别的效率低,一般不使用。
    MYSQL默认的是Repeatable read, 而Oracle只支持两种事务隔级别,一个Serializable和 ReadCommited ,默认为Read Commited

4.数据库的并发策略?

一般采用三种方式来进行处理乐观锁,悲观锁,时间戳
乐观锁适用于写比较少的情况下(多读场景)

乐观锁实现的两种机制:
在数据库的表中加上version字段,表示数据库修改的次数,每修改一次加1。
CAS算法:(compare and swap)比较转换算法: 即不使用锁的情况下实现多线程同步。	

5.JDBC操作数据库流程?

  1. 加载数据库驱动Class.forName();
  2. 获取连接DriverManager.getConnection()
  3. 根据Sql获取会话对象, 通过Statement和PrepareStatement.
  4. 获取结果集
  5. 关闭资源(先ResultSet ,在prepareStatement,最后connection)。

6.什么是脏读,不可重复读,可重复读和幻读?

脏读:一个事务正在读取的数据的时候,这个数据正好发生了修改并且没有保存到数据库
幻读:再次查询的数据的条数不一样
1、 不可重复读:

同一个事务中:
id=10行, 字段c1, 第一次查询 c1=0;
id=10行, 字段c1, 第二次查询 c1=1;

因为在第二次查询, 另外一个事务修改了c1=1,且事务提交。

2、 可重复读:

同一个事务中:
id=10行, 字段c1, 第一次查询 c1=0;
id=10行, 字段c1, 第二次查询 c1=0;

无论id=10被读了多少次, c1=0

7.不适合索引使用的场景?

  1. 数据量较少
  2. 更新比较频繁
  3. 区分不明显的字段(如:性别)

8.limit 10000太慢怎么办?

1.建立跟业务的联系
2. order by +索引
3. 可以用延迟关联和子查询进行这个的相关的优化。

9. 并行和并发有什么区别?

并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

以上是关于面试题09的主要内容,如果未能解决你的问题,请参考以下文章

Java进阶之光!2021必看-Java高级面试题总结

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!

一道经典面试题:字符串在Java中如何通过“引用”传递

Mybatis最全的高质量面试题和答案—3

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试

面试题 01.09. 字符串轮转 : 字符串哈希运用题