秋招问题记录贴

最近面试有点多,没来的及写面经,就单独开个帖子记录一下碰到的一些不懂的技术问题:

  1. AQS中两个队列如何工作,这个结合os中阻塞和就绪两种情况讲
  2. 分布式的理解,这个问的频率很高
  3. nacos怎么进行服务注册和发现的
  4. mysql什么情况会发生死锁,如何加表锁,什么情况使用垂直分表,什么情况使用水平分表
  5. jdbc为什么要使用反射加载驱动
  6. docker如何实现容器的隔离的,dockfile记录了什么信息
  7. 最左匹配原则的索引结构是什么样的
  8. 消息中间件如何保证消息不丢失,ACK=0,-1,1表示啥,消息中间件挂了那客户端的消息怎么办,如何保证消费者能最快的速度进行消费。
  9. uml有哪几种图,写代码前会画uml图吗
  10. 软件开发的模式
  11. Threadlocal中value为什么是强引用
  12. Redis中zset为什么用跳表而不用b+树,Redis的延时双删
  13. RBAC 0,1,2,以及部门考虑过没有(这个是项目相关)
  14. 反向代理的时候
  15. 说说epoll
  16. 了解新版jdk的新特性吗,了解golong吗,了解k8s吗
  17. Leader选举策略有哪些
  18. CAP,现在有什么方法解决了AP和CP不相容的问题
  19. Spring中如何创建一个事务,事务的传播级别
  20. AOP除了实现日志还能实现什么功能
  21. JVM发生OOM的集中情况,如何分析解决,为什么会频繁出现YoungGC和FulGC
  22. 使用过哪些网络分析工具或者抓包工具
    算法题:kmp,链表有环如何判断,给一个ipv4的地址返回一个int类型的数据(直接使用int会溢出),在服务器上找到cpu占用率top90的进程。

MySQL

使用limit查询慢的原因?

MySQL通过 limit 实现分页查询。limit 接收一个或两个整数型参数。如果是两个参数,第一个指定返回记录行的偏移量,第二个指定返回记录行的最大数目。初始记录行的偏移量是 0。对于小的偏移量,直接用 limit 查询没有什么问题。随着数据量的增大,越往后分页,limit 语句的偏移量越大,速度也会明显变慢。

limit 90000,10的意思扫描满足条件的90010行,扔掉前面的90000行,返回最后的10行,问题就在这里,如果是limit 100000,100,需要扫描100100行,在一个高并发的应用里,每次查询需要扫描超过10W行,性能肯定大打折扣。文中还提到limit n性能是没问题的,因为只扫描n行。

优化limit查询?

  1. 使用主键索引(使用子查询或者连接查询查询id)优化,比如加上where id>1000 limit X,X,从而加速查询
  2. 使用 between and 语句分页效率快N倍
  3. 分表存储

更新语句的执行流程

参考链接:https://blog.csdn.net/weixin_51626435/article/details/123411484

正常语句的执行流程:
在这里插入图片描述
更新语句的执行流程:

  1. 连接器、分析器、优化器、执行器
  2. 使用两阶段提交的方式进行更新。
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值