玩吧面经

1.自我介绍

2.技术栈都有哪些

3.mysql的数据索引结构

4.B+tree与Btree的区别是什么

5.B+tree使用的指针链表是单向还是双向? https://blog.csdn.net/hao65103940/article/details/89032538

6.b+树跟b树有啥区别

  1. 非叶子节点只存储键值信息。

  2. 所有叶子节点之间都有一个链指针。

  3. 数据记录都存放在叶子节点中。

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. 有看书吗?看过哪些书

你可能感兴趣的:(面试)