golang面试归纳总结 - MySQL篇(持续更新)

292 阅读4分钟

mysql.webp

MySQL篇

1.mysql四大特性是什么?他们是怎么保证的?
2.知道脏读吗?怎么避免脏读,如果要做到脏读,怎么做?
3.哪些情况会不命中索引?怎么解决?
  1. like '%xx'
    select * from tb1 where name like='%cn';
  2. 使用函数
    select * from tb1 where reverse(name) = 'giao';
  3. or
    select * from tb1 where nid = 1 or email = 'seven@live.com';
    --特别的:当or条件中有未建立索引的列才失效
    --以下会走索引
    select * from tb1 where nid = 1 or name = 'seven'; --nid和name都是索引
    select * from tb1 where nid = 1 or email = 'seven@live.com' and name= 'alex'
    --nid和name是索引,email不是,也会走索引
  4. 类型不一致
    如果列是字符串类型,传入的条件是必须是字符串,不然无法命中索引
    select * from tb1 where name = 999; --这里传的条件是整型,无法命中索引
  5. !=
    select * from tb1 where name != 'alex'
    --特别的:如果是主键,则还是会走索引
    select * from tb1 where nid != 123
  6. >
    select * from tb1 where name > 'alex'
    --特别的:如果是主键或索引是整数类型,则还是会走索引
    select * from tb1 where nid > 123
    select * from tb1 where num > 123
  7. order by
    select email from tb1 order by name desc;
    --当根据索引排序时候,选择的映射如果不是索引,则不走索引
    --特别的:如果对主键排序,则还是走索引:select * from tb1 order by nid desc;
  8. 组合索引最左前缀
    如果组合索引为:(name,email)
    name and email -- 使用索引
    name` -- 使用索引
    条件只有email -- 不使用索引
4.执行完selecet后锁会发生什么?
5. 什么是B树?什么是B+树?为什么选B+树作为MySql的存储结构?
6. B+树的叶子结点的链表有什么作用?为什么层数是3左右呢?
7. b+树分库分表高并发除了加锁还有什么解决方案?
8. mysql有哪些锁,怎么实现事务隔离的?

mvcc

9. 什么是mvcc?
10. mysql深翻页有什么解决方法?
11. mysql的锁有哪些?用过哪些锁?
12. 什么是公平锁什么是非公平锁,两者有什么区别?
13. MySQL存储引擎介绍一下。
14. MySQL的事物隔离级别简单说说。
15. 慢查询索引失效怎么办?
16. 查询接口调优,不能用缓存,要求实时性,怎么调优?
17. 大数据集情况下有什么优化策略
18. 什么是OLAP?什么是OLTP?
19. 介绍下数据库查询优化具体怎么优化的?
20. 现在用户要查询一张表,当流控降级时,兜底方案应该是怎么样的?
21. 用户下订单,订单按什么字段分表?分表之后,如果想按照某个时问段查询指定时间段内的所有用户的订单怎么办?
22. 有一张学生表,表中有name、age字段, 统计每个年龄段学生的数量,如10-20岁之间有多少学生,20-30有多少学生......一直到90-100岁
23. update set id=21 where name =3,讲下这个sql到mysql执行层面有哪些操作?
24. select xxx from table where b=xxx and c= aaa or a = xxx; sql执行效率,存在什么问题
25. 有一张2000w的表,已经明显的慢查,现在考虑分表,如何在不影响业务的情况下进行分表。
26. 你说先写binlog,看你用过canal,那canal也是把自己伪装成slave,那此时是不是可以把binlog传入canal,如果此时在slave执行完了,假设redo log写失败了,binlog流到从库,这时候发现主从数据不一致,这个可以接受的吗?
27. 再举个例子,redolog写失败了,下游slave能收到标志位,把update写进去了,这种怎么解决?
28. 在失败情况下commit失败,读master读不到,读从读不到,如何解决?
29. mysql一主两从,假设主库挂了, 如何判断主库挂了,从库上线?如何判断主节点宕掉了?
30. 如果判断出来主节点挂掉了,直接写从,你感觉有问题吗?
31. 如何判断主节点是挂了还是主从连接不上?
32. 什么是刷脏页,你有用过吗?
33. 怎么表达滑动窗口限流?
34. 有做过数据埋点吗,怎么做的?
35. 讲下可重复读在一个事务里面的一致性读是怎么实现的?

其他篇

1. 什么是ES,假如要查询2个字,但不是一个词,如何查出如ab、c,查出来abc,es如何做分词?
2. MongoDB有了解吗?介绍下?
3. 如何确保mysql 和es数据一致性?
4. hive同步到mysql,你会把哪些数据同步到postgresql?介绍下hive和postgresql区别和架构
5. 介绍下greenplum的基础架构。
6. hive数据你怎么同步到greenplum实现的,数据是一条条查出写入的吗,数据同步流程介绍下,上游数据如果非常多,写入很慢,你怎么解决?
7. 遇到greenplum写入性能CPU占用100%,你如何解决这块的性能?
8. 什么是mybatis?说说它的缓存。