MQ消息中间件,面试能问些什么?
★★★建议星标我们★★★
文章插图
文章插图
2020年Java原创面试题库连载中
【000期】Java最全面试题库思维导图
【020期】JavaSE系列面试题汇总(共18篇)
【028期】JavaWeb系列面试题汇总(共10篇)
【042期】JavaEE系列面试题汇总(共13篇)
【049期】数据库系列面试题汇总(共6篇)
【053期】中间件系列面试题汇总(共3篇)
【065期】数据结构与算法面试题汇总(共11篇)
【076期】分布式面试题汇总(共10篇)
【077期】综合面试题系列(一)
【078期】综合面试题系列(二)
【079期】综合面试题系列(三)
【080期】综合面试题系列(四)
【081期】综合面试题系列(五)
【082期】综合面试题系列(六)
【083期】综合面试题系列(七)
【084期】综合面试题系列(八)
【085期】综合面试题系列(九)
【086期】综合面试题系列(十)
【087期】综合面试题系列(十一)
【088期】综合面试题系列(十二)
【089期】综合面试题系列(十三)
更多内容 , 点击上面蓝字查看
文章插图
为什么使用消息队列?消息队列的优点和缺点?kafka、activemq、rabbitmq、rocketmq都有什么优缺点?
面试官角度分析:
(1)你知不知道你们系统里为什么要用消息队列这个东西?
(2)既然用了消息队列这个东西 , 你知不知道用了有什么好处?
(3)既然你用了MQ , 那么当时为什么选用这一款MQ?
1. 为什么使用消息队列? 面试官问这个问题的期望之一的回答是 , 你们公司有什么业务场景 , 这个业务场景有什么技术挑战 , 如果不用MQ可能会很麻烦 , 但是再用了之后带来了很多好处 。
消息队列的常见使用场景有很多但是核心的有三个:解耦、异步、削峰
解耦场景描述:A系统发送个数据到BCD三个系统 , 接口调用发送 , 那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人崩溃中...再来点崩溃的事儿 , A系统要时时刻刻考虑BCDE四个系统如果挂了怎么办?那我要不要重发?我要不要把消息存起来?头发都白了啊...
文章插图
使用了MQ之后的解耦场景
文章插图
面试技巧:你需要考虑下 , 你负责的系统中是否有类似的场景 , 就是一个系统或者一个模块 , 调用了多个系统或者模块 , 相互之间的调用很复杂 , 维护起来很麻烦 。 但是其实这个调用是不需要直接同步调用接口的 , 如果MQ给他异步化解耦也是可以的 , 你就需要去考虑在你的项目里是不是可以运用这个MQ去进行系统解耦。
异步场景描述:系统A接受一个请求 , 需要在自己本地写库 , 还需要在系统BCD三个系统写库 , 自己本地写库需要3ms 。 BCD分别需要300ms、450ms、200ms 。 最终总好时长:953ms , 接近1s 。 给用户的体验感觉一点也不好 。
不用MQ的同步高延时请求场景
文章插图
使用MQ异步化之后的接口性能优化
文章插图
削峰场景描述:每天 0 点到 11 点 , 系统A风平浪静 , 每秒并发请求数量就 100 个 。 结果每一一到11点到1点 , 每秒并发请求数量就会暴增大1万条。 但是系统最大的处理能力就只能每秒钟处理1000个请求 。 往期面试题汇总:001期~150期汇总
没有用MQ的时候高峰期系统被打死的场景
文章插图
使用MQ来进行削峰的场景
文章插图
2. 消息队列的有点和缺点? 优点:特殊场景下解耦、异步、削峰 。
缺点:
系统可用性降低:系统引入的外部依赖越多 , 越容易挂掉 , 本来你就是A系统调用BCD三个系统的接口就好了 , 人ABCD四个系统好好的没什么问题 , 你偏加个MQ进来 , 万一MQ挂了怎么办 , 整套系统崩溃了 , 就完蛋了
系统复杂性提高:硬生生加个MQ进来 , 你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?
- 采用|消息称一加9系列将推出三款新机,新增一加9E
- 机器人|网络里面的假消息忽悠了非常多的小喷子和小机器人
- 好消息|好消息!双十二实体店消费券已经开领
- 出炉|三星S11最新消息出炉,S10沦为百元机,星粉:服了
- 网络|最新消息!2020年后Flash Player搭载重橙网络继续运营
- 人工智能|最新消息,人工智能解决了长达50年的生物学难题,一个巨大的突破
- 深圳市智信|消息称华为员工进驻新荣耀没有 1.7 倍收入补偿
- 追踪|消息称三星正研发名为“Galaxy Smart Tag”的物体追踪器
- 玻璃|消息称三星Galaxy Z Fold3定价与三星Z Fold2相同,或将配备UTG超薄玻璃
- 三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经