emmm 一面挂,话不多说,看下问题吧
集度一面:
1.主从同步机制原理,主库索引倾斜但是从库没有这是为什么?
2.项目还用到了哪些技术?
3.mysql用了哪种存储引擎?
4.innodb出了支持事务还有别的特性吗?或者说你觉得它哪些特性做得比较好
5.什么时候会触发行锁?(这也是innodb特有的)加索引就会触发行锁
答:(InnoDB行锁是通过索引上的索引项来实现的,这一点MySQL与Oracle不同,后者是通过在数据中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味者:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁)
6.间隙锁有了解过吗?间隙锁还解决过什么问题吗?可重复读和读已提交是通过什么来解决?
7.刚刚说的innodb说一个支持事务一个支持表锁,行锁,另外一个是日志方面它有binlog,但是其他存储引擎也是有这些的 但是innodb它有一些独有的特性吗?
8.有一个场景,数据库表中有个字段要加索引,这个字段在业务上是唯一的,也就意味着这个字段可以见唯一索引,但是并不一定要通过建唯一索引来解决,可以通过建普通索引+代码逻辑中去维护唯一性,那么哪些场景适合建唯一索引,哪些场景适合建普通索引(提示:唯一索引和普通索引在查询还有修改/插入的区别去考虑,)
9.b+树的数据结构?
10.b+树的有序性怎么保证(通过链表去保证有序性)
11.redis哪些场景会用的比较多?有使用setnx吗?为什么不用setnx? setnx+设置过期时间是原子吗?(存疑)redisson redis的客户端
12.有用到缓存吗?本地缓存和redis缓存有什么区别?
答:本地缓存轻量且快速,生命周期随着jvm的销毁而结束,在多实例情况下,需要保存多份缓存,不具备一致性,而redis属于分布式缓存,多实例情况下共用一份缓存数据,缓存具有一致性,不过需要保持其高可用,整个程序架构上较为复杂
13.redis了解他的基本数据结构吗?看过底层实现吗?redis用的什么部署模式?
14.jvm用的什么垃圾收集器?cms有什么优缺点吗?
15.消息中间件用的什么?有了解过吗
16.多线程的流程大概讲一下吧,比如建立线程池,有几个重要参数可以讲一下。那核心线程数创建以后会不会销毁?换个问法比如现在有10个核心线程,目前只有一个线程池只有一个线程,并且是空闲的,那如果再进来一个线程的话,那这个线程池是怎么处理的?是直接拿已有的线程去用还是创建新的线程?目前线程池有10个线程,但是需要执行的任务只有2到3个了 那这个时候线程池会不会去回收多余线程呢?AQS了解过吗?源码看过吗?还记得线程抢占是怎么实现的吗?非公平和公平是怎么实现?如果是非公平的,来了一个线程去抢占锁,如果抢占不成功怎么处理啊?