平常面试问题集锦

一、为什么选择使用rabbitmq作为消息中间件?

  1. 社区活跃度高,遇到问题容易解决
  2. 支持消息的持久化,Activemq也支持。
  3. 综合技术实现强,可靠性高、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统。
  4. 支持高并发,rabbitmq实现语言是天生具备高并发高可用的erlang 语言

        参考:https://blog.csdn.net/water_21215/article/details/80089663

 二、为什么哈希表、完全平衡二叉树、B树、B+树都可以优化查询,为何Mysql独独喜欢B+树?

  •  哈希表的特点:可以快速的精确查询,但是不支持范围查询。
  • 完全平衡二叉树:与B树相比,B树的一个节点可以存储多个元素,从而减少了从磁盘中读取数据的次数,提高了IO效率。
  • B树:与B+树相比,B+树中的非叶子节点会冗余一份在叶子节点中,并且叶子节点之间用指针相连。提高了范围查询的效率

       三种树的结构:

 参考:https://mp.weixin.qq.com/s/Qq2i0cAqkbSXm4fWg2oAaQ

三、分布式、高并发及多线程的区别?

     三者相辅相成,但是侧重点不同

  • 分布式:是从物理资源的角度去将不同的机器组成一个整体对外服务,技术范围非常广且难度非常大;
  • 高并发:是从业务角度去描述系统的能力,实现高并发的手段可以采用分布式,也可以采用诸如缓存、CDN等,当然也包括多线程;
  • 多线程聚焦于如何使用编程语言将CPU调度能力最大化。
原文地址:https://www.cnblogs.com/lu51211314/p/10430490.html