時念
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • 后端笔记

    • Java
    • Spring
    • 算法
    • 高可用
    • 高并发
  • 工作问题

    • 问题记录
  • 各类工具使用
  • GitHub技巧
  • 博客搭建
  • 面试题库

    • 零碎
    • 面试常见题目汇总
  • 面试心得

    • 面试集锦
    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
  • 学习
  • 心情杂货
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub

時念

一个有梦想的后端小菜鸡(✪ω✪)
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
    • JavaScript 基础
  • 后端笔记

    • Java
    • Spring
    • 算法
    • 高可用
    • 高并发
  • 工作问题

    • 问题记录
  • 各类工具使用
  • GitHub技巧
  • 博客搭建
  • 面试题库

    • 零碎
    • 面试常见题目汇总
  • 面试心得

    • 面试集锦
    • 杂言碎语
  • 摘抄收录

    • ☆ 励志鸡汤
    • ❀ 人间烟火
    • ☣ 万物沦丧
    • ✌ 关掉烦恼
    • ✲ 小酒馆
  • 读书笔记

    • 《小狗钱钱》
    • 《穷爸爸富爸爸》
    • 《聪明人使用方格笔记本》
  • 学习
  • 心情杂货
  • 友情链接
关于
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub
  • java

    • java测试
  • spring

  • 问题记录

  • 算法

  • 高可用

  • 后端
時念
2024-03-26

mq-interview

# 消息队列面试场景

面试官:你好。

候选人:你好。

(面试官在你的简历上面看到了,呦,有个亮点,你在项目里用过 MQ ,比如说你用过 ActiveMQ )

面试官:你在系统里用过消息队列吗?(面试官在随和的语气中展开了面试)

候选人:用过的(此时感觉没啥)

面试官:那你说一下你们在项目里是怎么用消息队列的?

候选人:巴拉巴拉,“我们啥啥系统发送个啥啥消息到队列,别的系统来消费啥啥的。比如我们有个订单系统,订单系统每次下一个新的订单的时候,就会发送一条消息到 ActiveMQ 里面去,后台有个库存系统负责获取消息然后更新库存。”

(部分同学在这里会进入一个误区,就是你仅仅就是知道以及回答你们是怎么用这个消息队列的,用这个消息队列来干了个什么事情?)

面试官:那你们为什么使用消息队列啊?你的订单系统不发送消息到 MQ ,直接订单系统调用库存系统一个接口,咔嚓一下,直接就调用成功,库存不也就更新了。

候选人:额。。。(楞了一下,为什么?我没怎么仔细想过啊,老大让用就用了),硬着头皮胡言乱语了几句。

(面试官此时听你楞了一下,然后听你胡言乱语了几句,开始心里觉得有点儿那什么了,怀疑你之前就压根儿没思考过这问题)

面试官:那你说说用消息队列都有什么优点和缺点?

(面试官此时心里想的是,你的 MQ 在项目里为啥要用,你没怎么考虑过,那我稍微简单点儿,我问问你消息队列你之前有没有考虑过如果用的话,优点和缺点分别是啥?)

候选人:这个。。。(确实平时没怎么考虑过这个问题啊。。。胡言乱语了)

(面试官此时心里已经更觉得你这哥儿们不行,平时都没什么思考)

面试官: Kafka 、 ActiveMQ 、 RabbitMQ 、 RocketMQ 都有什么区别?

(面试官问你这个问题,就是说,绕过比较虚的话题,直接看看你对各种 MQ 中间件是否了解,是否做过功课,是否做过调研)

候选人:我们就用过 ActiveMQ ,所以别的没用过。。。区别,也不太清楚。。。

(面试官此时更是觉得你这哥儿们平时就是瞎用,根本就没什么思考,觉得不行)

面试官:那你们是如何保证消息队列的高可用啊?

候选人:这个。。。我平时就是简单走 API 调用一下,不太清楚消息队列怎么部署的。。。

面试官:如何保证消息不被重复消费啊?如何保证消费的时候是幂等的啊?

候选人:啥?( MQ 不就是写入&消费就可以了,哪来这么多问题)

面试官:如何保证消息的可靠性传输啊?要是消息丢失了怎么办啊?

候选人:我们没怎么丢过消息啊。。。

面试官:那如何保证消息的顺序性?

候选人:顺序性?什么意思?我为什么要保证消息的顺序性?它不是本来就有顺序吗?

面试官:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

候选人:不是,我这平时没遇到过这些问题啊,就是简单用用,知道 MQ 的一些功能。

面试官:如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。

候选人:。。。。。我还是走吧。。。。


这其实是面试官的一种面试风格,就是说面试官的问题不是发散的,而是从一个小点慢慢铺开。比如说面试官可能会跟你聊聊高并发话题,就这个话题里面跟你聊聊缓存、 MQ 等等东西,由浅入深,一步步深挖。

其实上面是一个非常典型的关于消息队列的技术考察过程,好的面试官一定是从你做过的某一个点切入,然后层层展开深入考察,一个接一个问,直到把这个技术点刨根问底,问到最底层。

编辑
上次更新: 2024/03/26, 9:03:00
最近更新
01
database-shard-dynamic-expand
03-26
02
README
03-26
03
database-shard-global-id-generate
03-26
更多文章>
Theme by Vdoing | Copyright © 2019-2024 時念 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式