2024Java高频面试题之MQ消息中间件,面试都问些什么?(附详细答案)

news2024/9/19 17:01:10

最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴 可以关注我
公众号:“ Tom聊架构 ”, 回复暗号:“ 578”即可获取

一、MQ 简介

MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。

消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

二、面试常见问题

问题一:为什么使用消息队列?

面试官对于这个问题的期望回答可能是:“你们公司有什么业务场景,这个业务场景有什么技术挑战,如果不用MQ可能会很麻烦,但是再用了之后带来了很多好处。”

消息队列的常见使用场景有很多但是核心的有三个:解耦、异步、削峰

1、解耦

(1)场景描述

A系统发送一个数据到BCD三个系统,接口调用发送,这时候如果E系统也要这个数据,C系统现在不需要了,A系统又要发送第二种数据,而且A系统还要时时刻刻考虑BCDE四个系统如果挂了怎么办?要不要重发?要不要把消息存起来?

(2)使用了MQ之后的解耦场景

(3)面试技巧

你需要考虑,你负责的系统中是否有类似的场景,就是一个系统或者一个模块,调用了多个系统或者模块,相互之间的调用很复杂,维护起来很麻烦。但是其实这个调用是不需要直接同步调用接口的,如果想要通过MQ给它异步化解耦,你就需要去考虑在你的项目里是不是可以运用这个MQ去进行系统解耦 。

2、异步

(1)场景描述

系统A接受一个请求,需要在自己本地写库,还需要在系统BCD三个系统写库,自己本地写库需要3ms。BCD分别需要300ms、450ms、200ms。最终总耗时长:953ms,接近1s。给用户的体验感觉一点也不好。

(2)不用MQ的同步高延时请求场景

(3)使用MQ异步化之后的接口性能优化

3、削峰

(1)场景描述

每天0点到11点,系统A风平浪静,每秒并发请求数量100个。结果每到11点至13点,每秒并发请求数量就会暴增大1万条 。但是系统最大的处理能力就只能每秒钟处理1000个请求。

(2)没有用MQ的时候高峰期系统被打死的场景

(3)使用MQ来进行削峰的场景

问题二:消息队列的优点和缺点?

1、优点

特殊场景下解耦、异步、削峰。

2、缺点

(1)系统可用性降低

系统引入的外部依赖越多,越容易挂掉。本来你就是A系统调用BCD三个系统的接口就好了,ABCD四个系统运行起来没什么问题,但你偏加个MQ进来,万一MQ挂了,整套系统也就崩溃了。

(2)系统复杂性提高

硬生生加个MQ进来,无法保证消息没有重复消费、无法保证消息传递的顺序性,也很难处理消息丢失的情况。

(3)一致性问题

系统A处理完了直接返回成功了,人家都认为你这个请求成功了;但问题是,要是BCD三个系统中BD系统成功了,结果C系统写库失败了,那数据就不一致了。

所以消息队列是一种非常复杂的架构,引入它有很多好处,但是也得针对他带来的坏处做各种额外的技术方案和架构来规避掉。做好之后你会发现系统复杂度提升了一个数量积,但是关键时刻还是要用的。

问题三:kafka、activemq、rabbitmq、rocketmq都有什么优缺点?

三、2024最新Java高频面试题 (金三银四面试必备!!!)

视频链接如下🢃🢃🢃点击即可观看

https://gupaoedu-tom.blog.csdn.net/article/details/135596985?ydreferer=aHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9ibG9nL21hbmFnZS9hcnRpY2xlP3NwbT0xMDExLjIxMjQuMzAwMS41Mjk4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1398975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏开发中的噪声算法

一、噪声 噪声是游戏编程的常见技术,广泛应用于地形生成,图形学等多方面。 那么为什么要引入噪声这个概念呢?在程序中,我们经常使用直接使用最简单的rand()生成随机值,但它的问题在于生成的随机值太“随机”了&#xf…

轻松一刻 浅休息下哈

yum -y install epel-release yum install -y linux_logo cal 此命令以日历表的方式显示日期 curl http://wttr.in 此网站进行在屏幕上面显示天气情况 vim /etc/motd 修改这个文件可以让你刚登录linux 系统显示图形效果 \ ------------ / …

SQL Server Management Studio创建数据表

文章目录 一、建表注意事项1.1 数据类型1.2 建立数据表的基本SQL语法 二、实例说明2.1 创建数据表2.2 实例2 三、标识列和主键示例: 一、建表注意事项 1.1 数据类型 可以看这个去了解数据类型: 1.2 建立数据表的基本SQL语法 建立数据表的基本 SQL 语…

LabVIEW振动数据采集与分析系统

在这个项目中, LabVIEW软件配合精确的硬件组件,以实现高效的振动数据采集和复杂信号分析。硬件方面,系统采用了PCB振动加速度传感器的高灵敏度传感器,以及NI9234型号的数据采集卡,确保了数据采集的高精度和可靠性。软件…

单表查询 -- MySQL(3)

目录 题目: 创建表: 问题(17个): 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工…

等离子环制作

免责声明 在您参考该博客制作等离子环前,请仔细阅读以下重要安全警告和免责说明。使用本文档即表示您已充分了解并同意以下条款: 等离子环的危险性:等离子环在运行时玻璃瓶身会产生高温,存在低温烧伤风险。任何时候都不建议用手…

浅谈安科瑞Acrel-2000MG微电网能量管理系统的设计与应用-安科瑞 蒋静

Acrel-2000MG是安科瑞结合当前新型电力系统下微电网的发展与需求研发的一款微电网能量管理系统。通过采集微电网内部源、网、荷、储的实时状态并根据天气预报信息对新能源发电与用电负荷进行预测,利用可控资源和分布式资源分析计算最优调度运行策略,在条…

操作教程|JumpServer堡垒机结合Ansible进行批量系统初始化

运维人员常常需要对资产进行系统初始化的操作,而初始化服务器又是一项繁琐的工作,需要花费运维人员大量的时间和精力。为了提高效率,许多组织会使用自动化工具和脚本来简化这些任务。自动化工具的运用可以大幅降低运维人员的工作量&#xff0…

一次TCP TIME_WAIT连接数过多告警处理

一次TCP TIME_WAIT连接数过多告警处理 1、前言2、问题回顾3、解决方案 更多技术文章,快来关注微信公众号“运维之美”,不定期更新领取IT学习资料 1、前言 客户环境上在业务高峰期的时候,突然收到主机的TCP time_wait连接数告警过多的告警。运…

Spring第六天(注解开发第三方Bean)

注解开发管理第三方Bean 显然,我们无法在第三方Bean中写入诸如service这样的注解,所以,Spring为我们提供了Bean这一注解来让我们通过注解管理第三方Bean 第二种导入方式由于可读性太低,故只介绍第一种导入方式,这里我…

项目过程管理(禅道)

文章目录 1、禅道的简介2、禅道的安装3、禅道的使用3.1、超级管理员使用操作3.2、产品经理使用操作3.3、项目经理使用操作3.4、测试主管使用操作3.5、项目经理(新建一个项目)3.6、测试主管(对项目发布的第一个版本进行一个测试)3.…

Java 面向对象基础 (二)

Java 面向对象基础 (二) 文章目录 Java 面向对象基础 (二)面向对象三大特征封装继承多态 接口和抽象类有什么共同点和区别?深拷贝和浅拷贝区别了解吗?什么是引用拷贝?浅拷贝深拷贝 文章来自Java Guide 用于学习如有侵权,立即删除 …

(2)(2.1) Andruav Android Cellular(一)

文章目录 前言 1 Andruav 是什么? 2 Andruav入门 3 Andruav FPV 4 Andruav GCS App​​​​​​​ 前言 Andruav 是一个基于安卓的互联系统,它将安卓手机作为公司计算机,为你的无人机和遥控车增添先进功能。 1 Andruav 是什么&#xff…

【Linux】相关背景及环境搭建

前言: 认识 Linux, 了解 Linux 的相关背景,学会如何使用云服务器,掌握使用远程终端工具 xshell 登陆 Linux 服务器 文章目录 一、Linux介绍1.1 关于UNIX1.2 Linux的诞生及发展历程1.3 Linux开源1.4 Linux在各个行业的现状1.5 发行版本 二、Li…

黑色金属厂房3d数据可视化综合平台进一步保障生产效率

在当今的数字化时代,钢铁厂面临着降本增效、绿色环保、安全第一等发展问题,亟需寻找更有效的解决方案,数字孪生公司深圳华锐视点利用先进的数字孪生可视化、web3D开发和VR虚拟仿真技术制作数字孪生钢铁厂可视化管控平台,实现对钢铁…

SCI 2区论文:医疗保健中心训练有素的脑膜瘤分割模型的性能测试-基于四个回顾性多中心数据集的二次分析

基本信息 标题:Performance Test of a Well-Trained Model for Meningioma Segmentation in Health Care Centers: Secondary Analysis Based on Four Retrospective Multicenter Data Sets中文标题:医疗保健中心训练有素的脑膜瘤分割模型的性能测试&am…

Prompt高级技巧:Few-Shots、COT、SC、TOT、Step-Back

CRISPE框架 如图所示。所谓CRISPE框架,指的是: CR:Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。I:Insight(洞察),背景信息和上下文。S:&#xff08…

记一次幸运的cnvd证书获取过程

漏洞描述: 如XX后台管理系统V2.0存在水平越权,由于应用系统中Id参数可控并未经校验导致信息被越权修改,攻击者可通过遍历Id参数批量更改其他用户数据及个人信息。 起因: 一天下午某师傅星球中发了一篇文章分享,描述该系统存在弱…

Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

写本章前想起题主初学Labview时面对一个位移台程序,傻傻搞不清局部变量和属性节点值有什么区别,概念很模糊。所以更新这篇文章让大家更具象和深刻的去理解这几个概念,看完记得点赞加关注喔~ 本文程序源代码附在后面,大家可以自行下…

解决 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错

在使用POI导出Excel表格的时候&#xff0c;本地运行导出没问题&#xff0c;但是发布到服务器后提示 “java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader” 下面是pom.xml中的配置 <dependency><groupId>org.apache.poi</groupId><art…