面试题09
Posted SmallCuteMonkey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题09相关的知识,希望对你有一定的参考价值。
1.事务具有属性?
ACID属性。
- 原子性
- 一致性
- 持久性
- 隔离性
2.mysql的处理事务方式?
- 用begin,rollback,commit来实现
- begin开始一个事务
- rololback进行事务的回滚
- commit提交一个事务
- 用set来改变事务的自动提交模式
- set AUTOCOMMIT=0 禁止自动提交
- set AUTOCOMMIT=1 可以自动 提交
3.事务的四种隔离级别?
- Read UNCOMMITTED
一个事务读取另一个事务未提交的数据 - Read Committed 一个事务要等另一个事务已经 提交以后才可以读取
- Read Repeateable
可重复读,在开始读取事务的时候,不可以进行修改的操作 - Serializable 序列化
是事务的最高的隔离级别,可以避免脏读和不可重复读和幻读,但是
这个级别的效率低,一般不使用。
MYSQL默认的是Repeatable read, 而Oracle只支持两种事务隔级别,一个Serializable和 ReadCommited ,默认为Read Commited
4.数据库的并发策略?
一般采用三种方式来进行处理:乐观锁,悲观锁,时间戳。
乐观锁适用于写比较少的情况下(多读场景)
乐观锁实现的两种机制:
在数据库的表中加上version字段,表示数据库修改的次数,每修改一次加1。
CAS算法:(compare and swap)比较转换算法: 即不使用锁的情况下实现多线程同步。
5.JDBC操作数据库流程?
- 加载数据库驱动Class.forName();
- 获取连接DriverManager.getConnection()
- 根据Sql获取会话对象, 通过Statement和PrepareStatement.
- 获取结果集
- 关闭资源(先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.不适合索引使用的场景?
- 数据量较少
- 更新比较频繁
- 区分不明显的字段(如:性别)
8.limit 10000太慢怎么办?
1.建立跟业务的联系
2. order by +索引
3. 可以用延迟关联和子查询进行这个的相关的优化。
9. 并行和并发有什么区别?
并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
以上是关于面试题09的主要内容,如果未能解决你的问题,请参考以下文章
经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!
2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试