2024面试题

消息队列

什么是消息队列:

消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个消息队列可以被一个也可以被多个消费者消费,包含以下 3 元素:

  • Producer:消息生产者,负责产生和发送消息到 Broker;

  • Broker:消息处理中心,负责消息存储、确认、重试等,一般其中会包含多个 Queue;

  • Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理。 

消息队列的作用(应用场景)

主要用于应用解耦、异步处理、流量削锋、日志处理、消息通讯、消息广播

  • 应用解耦:消息队列减少了服务之间的耦合性,不同的服务可以通过消息队列进行通信,而不用关心彼此的实现细节。

  • 异步处理:消息队列本身是异步的,它允许接收者在消息发送很长时间后再取回消息。

  • 流量削锋:当上下游系统处理能力存在差距的时候,利用消息队列做一个通用的”载体”,在下游有能力处理的时候,再进行分发与处理。

  • 日志处理:日志处理是指将消息队列用在日志处理中,比如 Kafka 的应用,解决大量日志传输的问题。

  • 消息通讯:消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯,比如实现点对点消息队列,或者聊天室等。

  • 消息广播:如果没有消息队列,每当一个新的业务方接入,我们都要接入一次新接口。有了消息队列,我们只需要关心消息是否送达了队列,至于谁希望订阅,是下游的事情,无疑极大地减少了开发和联调的工作量。

4 种消息队列icon-default.png?t=N7T8https://mp.weixin.qq.com/s/DRmQcc98QzBXS5xY7OY0gg消息中间件:简述消息队列(MessageQueue)_消息中间件中的消息是生产者产生的吗-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_29229567/article/details/86490519

sql优化

通过加索引

create index on "talbeName" (columnName)

避免使用一些影响索引的操作符

比如避免使用not in 、or 、null的判断 where条件后 “=”左边使用表达式或者函数操作

查询条件不要用<> !=

  1. 不要查一些没用的字段
  2. 连表时尽量通过小表驱动大表的方式
  3. 添加合适索引
  4. 在where经常用的筛选条件,group by后的分组字段,order by后面的排序字段
  5. 多表连接的字段上需要建立索引 这样可以极大的提高表连接的效率
  6. where条件字段上需要建立索引
  7. 排序字段上需要建立索引
  8. 分组字段上需要建立索引
  9. Where条件上不要使用运算函数,以免索引失效

你可能感兴趣的:(面试题,面试题,MySQL,java)