• 秋招问题记录贴


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

    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. 使用两阶段提交的方式进行更新。
      在这里插入图片描述
  • 相关阅读:
    ElasticSearch
    天翎知识文档系统+群晖NAS,助力企业实现移动化学习
    MongoDB 批量插入或保存
    mac系统安装搭载Windows系统虚拟机方法教程
    一种tcp传输json包时出现包不完整、粘包的解决方案
    网络——局域网和广域网
    Gradle7.X /6.X 项目 转 maven工程-yellowcong
    简单来说,无人机单片机是如何控制电机的?
    斐波那契散列算法和hashMap实践
    PHP面试题
  • 原文地址:https://blog.csdn.net/qq_41291067/article/details/133357699