1.自我介绍
2.技术栈都有哪些
3.mysql的数据索引结构
4.B+tree与Btree的区别是什么
5.B+tree使用的指针链表是单向还是双向? https://blog.csdn.net/hao65103940/article/details/89032538
6.b+树跟b树有啥区别
-
非叶子节点只存储键值信息。
-
所有叶子节点之间都有一个链指针。
-
数据记录都存放在叶子节点中。
7.数据库分表策略是怎么做的?
8.Mysql默认的事务隔离级别是什么,有什么缺点
可重复读(Repeatable read),
(1)这是MySQL的默认事务隔离级别
(2)它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行
(3)此级别可能出现的问题——幻读(Phantom Read):当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行
(4)InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题
9.什么是幻读
幻读指的是一个事务在进行一次查询之后发现某个记录不存在,然后会根据这个结果进行下一步操作,此时如果另一个事务成功插入了该记录,那么对于第一个事务而言,其进行下一步操作(比如插入该记录)的时候很可能会报错。从事务使用的角度来看,在检查一条记录不存在之后,其进行插入应该完全没问题的,但是这里却抛出主键冲突的异常。
10.怎么解决幻读
a.隔离升级-串行化:
-
事务在读操作时,先加表级别的共享锁,直到事务结束才释放
-
事务在写操作时,先加表级别的排它锁,直到事务结束才释放
串行化锁定了整张表,幻读不存在的!!!
b.多版本并发MVCC:
InnoDB 的 MVCC, 是 通过 在 每 行 记录 后面 保存 两个 隐藏 的 列 来 实现 的。 这 两个 列, 一个 保存 了 行的 创建 时间, 一个 保存 行的 过期 时间( 或 删除 时间)。 当然 存储 的 并不是 实际 的 时间 值, 而是 系统 版 本号( system version number)。 每 开始 一个 新的 事务, 系统 版本 号 都会 自动 递增。 事务 开始时 刻 的 系统 版 本号 会 作为 事务 的 版 本号, 用来 和 查询 到 的 每 行 记录 的 版本 号 进行 比较。
11.分布式锁有了解吗
12.分布式锁的加锁底层命令以及解锁的命令
13.redis解锁时可以直接删除key么?
14.redis的持久化有几种方案以及特性
15.spring的IOC和AOP的实现圆脸
16.动态代理有几种实现方式
17.JDK与Cglib的区别
18.cglib可以代理所有的方法么
19.cglib怎么实现的代理
20.IOC的循环依赖是怎么解决的
21.解决循环依赖为什么需要用到三级缓存
22.线程池有用到过么?怎么创建的线程池
23.线程池的几个主要参数
24.线程池从初始状态一直添加线程,线程池是怎么处理
25.拒绝策略都有哪些?
26.空闲线程的回收机制(多一个知识点就是,核心线程也是有配置是否可以回收的)
27.有边界的线程池,如何做生产者、消费者模式
28.Sync自带的锁,工作中是否有用到
29.Volatile解决了什么问题,工作用在哪里
30.sync一般加载哪里?有什么区别
类对象锁、实例对象所
31.sync锁的升级膨胀过程
32.有一个转盘,分1、2、3等奖,中奖概率分别为10%、20%、70%,怎么实现
分10块,映射1等奖(1)2等奖(2,3)3等奖(4,5,6,7,8,9,10)。求10中间随机数
39.视频回放功能设计
39. 做个朋友圈,需要注意哪些点
40. 有看书吗?看过哪些书