java架构师面试题—— MQ篇

Java面试篇【RabbitMQ】常见面试题(2024最新) 因为MQ可以异步处理,提高系统吞吐量。应用解耦,系统之间可以通过消息通信,不关心其他系统的处理。流量削峰,可以通过消息队列的长度,控制请求量。可以缓解短时间内的高并发请求。:A->BCD,但是如果E也想要这个数据,或者C不想要了。A就需要修改。与各种下游系统严重耦合。如果使用MQ,A系统产生一条消息,到MQ,哪个系统要消息就去消息系统里去消费。:A接收请求,在本地写库,在BCD三个系统分别要进行写库,本地很快,其它系统完成后传过来很慢,如果同步方式, 阅读详情

1、为什么要使用MQ

核心:解耦,异步,削峰

1)解耦:A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那

如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......A 系统跟其它各种乱七八糟的系统严重耦

合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。如果使用

MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。如果新

系统需要数据,直接从 MQ 里消费即可;如果某个系统不需要这条数据了,就取消对 MQ 消息的消

费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要

考虑人家是否调用成功、失败超时等情况。

就是一个系统或者一个模块,调用了多个系统或者模块,互相之间的调用很复杂,维护起来很麻

烦。但是其实这个调用是不需要直接同步调用接口的,如果用 MQ 给它异步化解耦。

(2)异步:A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地

写库要 3ms,BCD 三个系统分别写库要 300ms、450ms、200ms。最终请求总延时是 3 + 300 +

450 + 200 = 953ms,接近 1s,用户感觉搞个什么东西,慢死了慢死了。用户通过浏览器发起请

求。如果使用 MQ,那么 A 系统连续发送 3 条消息到 MQ 队列中,假如耗时 5ms,A 系统从接受一

个请求到返回响应给用户,总时长是 3 + 5 = 8ms。

(3)削峰:减少高峰时期对服务器压力。

欢迎关注微信公众号:Java后端技术全栈

2、MQ有什么优缺点

优点上面已经说了,就是在特殊场景下有其对应的好处,解耦、异步、削峰。

缺点有以下几个:

系统可用性降低 系统引入的外部依赖越多,越容易挂掉。万一 MQ 挂了,MQ 一挂,整套系统崩

溃,你不就完了?

系统复杂度提高 硬生生加个 MQ 进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?

怎么保证消息传递的顺序性?问题一大堆。

一致性问题 A 系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是

BCD 三个系统那里,BD 两个系统写库成功了,结果 C 系统写库失败了,咋整?你这数据就不一致

了。

3、Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区

别?

对于吞吐量来说kafka和RocketMQ支撑高吞吐,ActiveMQ和RabbitMQ比他们低一个数量级。对于

延迟量来说RabbitMQ是最低的。

1.从社区活跃度

按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三者中,综合来看,RabbitMQ 是首

选。

2.持久化消息比较

ActiveMq 和RabbitMq 都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了,消

息不会丢失的机制。

3.综合技术实现

可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件

系统等等。

RabbitMq / Kafka 最好,ActiveMq 次之,ZeroMq 最差。当然ZeroMq 也可以做到,不过自己必

须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用

性。

4.高并发

毋庸置疑,RabbitMQ 最高,原因是它的实现语言是天生具备高并发高可用的erlang 语言。

5.比较关注的比较, RabbitMQ 和 Kafka

RabbitMq 比Kafka 成熟,在可用性上,稳定性上,可靠性上, RabbitMq 胜于 Kafka (理论

上)。

另外,Kafka 的定位主要在日志等方面, 因为Kafka 设计的初衷就是处理日志的,可以看做是一个

日志(消息)系统一个重要组件,针对性很强,所以 如果业务方面还是建议选择 RabbitMq 。

还有就是,Kafka 的性能(吞吐量、TPS )比RabbitMq 要高出来很多。

4、如何保证高可用的?

RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用性的,我们就以 RabbitMQ

为例子讲解第一种 MQ 的高可用性怎么实现。RabbitMQ 有三种模式:单机模式、普通集群模式、

镜像集群模式。

单机模式,就是 Demo 级别的,一般就是你本地启动了玩玩儿的?,没人生产用单机模式

普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每个机器启动一个。你创建的

queue,只会放在一个 RabbitMQ 实例上,但是每个实例都同步 queue 的元数据(元数据可以认

为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。你消费的时候,实际上

如果连接到了另外一个实例,那么那个实例会从 queue 所在实例上拉取数据过来。这方案主要是提

高吞吐量的,就是说让集群中多个节点来服务某个 queue 的读写操作。

镜像集群模式:这种模式,才是所谓的 RabbitMQ 的高可用模式。跟普通集群模式不一样的是,在

镜像集群模式下,你创建的 queue,无论元数据还是 queue 里的消息都会存在于多个实例上,就

是说,每个 RabbitMQ 节点都有这个 queue 的一个完整镜像,包含 queue 的全部数据的意思。然

后每次你写消息到 queue 的时候,都会自动把消息同步到多个实例的 queue 上。RabbitMQ 有很

好的管理控制台,就是在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候是可以

要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这

个策略,就会自动将数据同步到其他的节点上去了。这样的话,好处在于,你任何一个机器宕机

了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它

节点上去消费数据。坏处在于,第一,这个性能开销也太大了吧,消息需要同步到所有机器上,导

致网络带宽压力和消耗很重!RabbitMQ 一个 queue 的数据都是放在一个节点里的,镜像集群下,

也是每个节点都放这个 queue 的完整数据。

Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点;你创建一个

topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个

partition 就放一部分数据。这就是天然的分布式消息队列,就是说一个 topic 的数据,是分散放在

多个机器上的,每个机器就放一部分数据。Kafka 0.8 以后,提供了 HA 机制,就是 replica(复制

品) 副本机制。每个 partition 的数据都会同步到其它机器上,形成自己的多个 replica 副本。所有

replica 会选举一个 leader 出来,那么生产和消费都跟这个 leader 打交道,然后其他 replica 就是

follower。写的时候,leader 会负责把数据同步到所有 follower 上去,读的时候就直接读 leader

上的数据即可。只能读写 leader?很简单,要是你可以随意读写每个 follower,那么就要 care 数

据一致性的问题,系统复杂度太高,很容易出问题。Kafka 会均匀地将一个 partition 的所有

replica 分布在不同的机器上,这样才可以提高容错性。因为如果某个 broker 宕机了,没事儿,那

个 broker上面的 partition 在其他机器上都有副本的,如果这上面有某个 partition 的 leader,那

么此时会从 follower 中重新选举一个新的 leader 出来,大家继续读写那个新的 leader 即可。这就

有所谓的高可用性了。写数据的时候,生产者就写 leader,然后 leader 将数据落地写本地磁盘,

接着其他 follower 自己主动从 leader 来 pull 数据。一旦所有 follower 同步好数据了,就会发送

ack 给 leader,leader 收到所有 follower 的 ack 之后,就会返回写成功的消息给生产者。(当

然,这只是其中一种模式,还可以适当调整这个行为)消费的时候,只会从 leader 去读,但是只有

当一个消息已经被所有 follower 都同步成功返回 ack 的时候,这个消息才会被消费者读到。

5、如何保证消息的可靠传输?如果消息丢了怎么办

数据的丢失问题,可能出现在生产者、MQ、消费者中

生产者丢失:生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题

啥的,都有可能。此时可以选择用 RabbitMQ 提供的事务功能,就是生产者发送数据之前开启

RabbitMQ 事务channel.txSelect,然后发送消息,如果消息没有成功被 RabbitMQ 接收到,那么

生产者会收到异常报错,此时就可以回滚事务channel.txRollback,然后重试发送消息;如果收到

了消息,那么可以提交事务channel.txCommit。吞吐量会下来,因为太耗性能。所以一般来说,如

果你要确保说写 RabbitMQ 的消息别丢,可以开启confirm模式,在生产者那里设置开启confirm模

式之后,你每次写的消息都会分配一个唯一的 id,然后如果写入了 RabbitMQ 中,RabbitMQ 会给

你回传一个ack消息,告诉你说这个消息 ok 了。如果 RabbitMQ 没能处理这个消息,会回调你一个

nack接口,告诉你这个消息接收失败,你可以重试。而且你可以结合这个机制自己在内存里维护每

个消息 id 的状态,如果超过一定时间还没接收到这个消息的回调,那么你可以重发。事务机制和

cnofirm机制最大的不同在于,事务机制是同步的,你提交一个事务之后会阻塞在那儿,但是

confirm机制是异步的,你发送个消息之后就可以发送下一个消息,然后那个消息RabbitMQ 接收

了之后会异步回调你一个接口通知你这个消息接收到了。所以一般在生产者这块避免数据丢失,都

是用confirm机制的。

MQ中丢失:就是 RabbitMQ 自己弄丢了数据,这个你必须开启 RabbitMQ 的持久化,就是消息写

入之后会持久化到磁盘,哪怕是 RabbitMQ 自己挂了,恢复之后会自动读取之前存储的数据,一般

数据不会丢。设置持久化有两个步骤:创建 queue 的时候将其设置为持久化,这样就可以保证

RabbitMQ 持久化 queue 的元数据,但是不会持久化 queue 里的数据。第二个是发送消息的时候

将消息的 deliveryMode 设置为 2,就是将消息设置为持久化的,此时 RabbitMQ 就会将消息持久

化到磁盘上去。必须要同时设置这两个持久化才行,RabbitMQ 哪怕是挂了,再次重启,也会从磁

盘上重启恢复 queue,恢复这个 queue 里的数据。持久化可以跟生产者那边的confirm机制配合起

来,只有消息被持久化到磁盘之后,才会通知生产者ack了,所以哪怕是在持久化到磁盘之前,

RabbitMQ 挂了,数据丢了,生产者收不到ack,你也是可以自己重发的。注意,哪怕是你给

RabbitMQ 开启了持久化机制,也有一种可能,就是这个消息写到了 RabbitMQ 中,但是还没来得

及持久化到磁盘上,结果不巧,此时 RabbitMQ 挂了,就会导致内存里的一点点数据丢失。

消费端丢失:你消费的时候,刚消费到,还没处理,结果进程挂了,比如重启了,那么就尴尬了,

RabbitMQ 认为你都消费了,这数据就丢了。这个时候得用 RabbitMQ 提供的ack机制,简单来

说,就是你关闭 RabbitMQ 的自动ack,可以通过一个 api 来调用就行,然后每次你自己代码里确

保处理完的时候,再在程序里ack一把。这样的话,如果你还没处理完,不就没有ack?那

RabbitMQ 就认为你还没处理完,这个时候 RabbitMQ 会把这个消费分配给别的 consumer 去处

理,消息是不会丢的。

6、如何保证消息的顺序性

先看看顺序会错乱的场景:RabbitMQ:一个 queue,多个 consumer,这不明显乱了;

解决:

7、 如何解决消息队列的延时以及过期失效问题?消息队列满了以

后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

消息积压处理办法:临时紧急扩容:

先修复 consumer 的问题,确保其恢复消费速度,然后将现有 cnosumer 都停掉。 新建一个

topic,partition 是原来的 10 倍,临时建立好原先 10 倍的 queue 数量。 然后写一个临时的分发

数据的 consumer 程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀

轮询写入临时建立好的 10 倍数量的 queue。 接着临时征用 10 倍的机器来部署 consumer,每一

批 consumer 消费一个临时 queue 的数据。这种做法相当于是临时将 queue 资源和 consumer 资

源扩大 10 倍,以正常的 10 倍速度来消费数据。 等快速消费完积压数据之后,得恢复原先部署的

架构,重新用原先的 consumer 机器来消费消息。 MQ中消息失效:假设你用的是 RabbitMQ,

RabbtiMQ 是可以设置过期时间的,也就是 TTL。如果消息在 queue 中积压超过一定的时间就会被

RabbitMQ 给清理掉,这个数据就没了。那这就是第二个坑了。这就不是说数据会大量积压在 mq

里,而是大量的数据会直接搞丢。我们可以采取一个方案,就是批量重导,这个我们之前线上也有

类似的场景干过。就是大量积压的时候,我们当时就直接丢弃数据了,然后等过了高峰期以后,比

如大家一起喝咖啡熬夜到晚上12点以后,用户都睡觉了。这个时候我们就开始写程序,将丢失的那

批数据,写个临时程序,一点一点的查出来,然后重新灌入 mq 里面去,把白天丢的数据给他补回

来。也只能是这样了。假设 1 万个订单积压在 mq 里面,没有处理,其中 1000 个订单都丢了,你

只能手动写程序把那 1000 个订单给查出来,手动发到 mq 里去再补一次。

mq消息队列块满了:如果消息积压在 mq 里,你很长时间都没有处理掉,此时导致 mq 都快写满

了,咋办?这个还有别的办法吗?没有,谁让你第一个方案执行的太慢了,你临时写程序,接入数

据来消费,消费一个丢弃一个,都不要了,快速消费掉所有的消息。然后走第二个方案,到了晚上

再补数据吧。

8、让你来设计一个消息队列,你会怎么设计

比如说这个消息队列系统,我们从以下几个角度来考虑一下:

首先这个 mq 得支持可伸缩性吧,就是需要的时候快速扩容,就可以增加吞吐量和容量,那怎么

搞?设计个分布式的系统呗,参照一下 kafka 的设计理念,broker -> topic -> partition,每个

partition 放一个机器,就存一部分数据。如果现在资源不够了,简单啊,给 topic 增加 partition,

然后做数据迁移,增加机器,不就可以存放更多数据,提供更高的吞吐量了?

其次你得考虑一下这个 mq 的数据要不要落地磁盘吧?那肯定要了,落磁盘才能保证别进程挂了数

据就丢了。那落磁盘的时候怎么落啊?顺序写,这样就没有磁盘随机读写的寻址开销,磁盘顺序读

写的性能是很高的,这就是 kafka 的思路。

其次你考虑一下你的 mq 的可用性啊?这个事儿,具体参考之前可用性那个环节讲解的 kafka 的高

可用保障机制。多副本 -> leader & follower -> broker 挂了重新选举 leader 即可对外服务。

能不能支持数据 0 丢失啊?可以的,参考我们之前说的那个 kafka 数据零丢失方案。

RabbitMQ相关问题 死信队列即DLX,全称为,翻译为:死信交换机。当一个消息在队列中变成死信 (dead message) 之后,它能被重新发送到另外一个交换机中,这个交换机就是DLX,绑定到DLX的队列就称为死信队列;死信队列本身也是一个普通的消息队列,可以通过设置一些参数将其设置为死信队列;死信队列是一个用于存放无法被消费的消息的队列,这些消息被称为死信,死信队列可以避免消息一直被消费却无法消费成功的情况;延迟队列是用来存放“延迟消息”的队列; 阅读详情

相关推荐

2023年JAVA面试题【MQ】

RabbitMQ是一款开源的,Erlang编写的,消息中间件;最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦 可以用它来:解耦、异步、削峰。Kafka 起初是由 Linkedin 公司采用 Scala 语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现己被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。

a88137的博客 685

Java——《面试题——MQ篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java——《面试题——Dobbo篇》 Java——《面试题——Nginx篇》 目录 前文 ​​1、为什么要使用MQ(Message Queue, 消息队列)

行秋的博客 3840

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

MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

sinat_53467514的博客 1905

9 道 MQ 高频面试题总结

现在面试中 MQ 的问题也是必问,下面汇总了一些问题与答案。

主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。 5321

1000+道 互联网Java架构师面试题

这套 1000+ 道的 Java 面试手册我整理了足足 1 个月,上传到 GitHub 上目前 star 数达到了 30K+ 。2022 年的互联网行业竞争越来越严峻,面试也是越来越难,一直以来我都想整理一套完美的面试宝典,直到现在刚弄好。

平凡的树叶,记录我程序生涯的成长 2737

Java架构师全路线总结+高频面试题(2021年最新版)

本篇文章是我们整理的一份架构师的成长路线,包括了并发编程、设计模式、常用框架、中间件、微服务与分布式、常用工具、JVM、MySQL、数据结构与算法,还有架构师精选视频、架构师成长路线高清大图。 又是新的一年,每一年都会有人在成为架构师的路上或者已经成为自己心中理想的架构师,但更多的人是在程序员的这条路上缓慢成长甚至迷茫。 然后会有一部分人中途放弃而后转行,有一部分人最后停滞在了那个“舒服”的状态,最终成为架构师的人少之又少。 在高薪行业这个背景的庇护下,程序员不用成为架构师就可以拥有比较舒适的生活条件

qq_42986622的博客 1342

一个十年Java架构师的成长之路分享

前言 我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但好在现在也已经成家立业, 小日子过的还算滋润, 起码顶得住一月近万元的吃喝拉撒玩各种贷款信用卡 不为金钱过于发愁了。 我特别感谢当初贴吧遇见的那位大神, 虽然每个月也就聊那么几句, 但是他总能在我不知道该学啥, 该怎么走的时候, 给我方向, 毫不夸张的说,我现在的衣食...

Java__xiaoze的博客 3979

Linux Component概述和高通component的使用

为了让subsystem按照一定顺序初始化设备才提出来的。subsystem中由很多设备模块,内核加载这些模块的时间不确定。子系统内有些模块是需要依赖其它模块先初始化才能进行自己初始化工作(例如v4l2 subdev和v4l2 video device),这时就要用到component框架。例如v4l2 subdev和v4l2 video device中,谁依赖谁先创建?

lz_1990的专栏 1610

可能是最全的java架构师面试题

java基础 java进阶面试题 java面试进阶篇及答案1 java面试进阶篇及答案2 java面试进阶篇及答案3 java面试进阶篇及答案4 java面试进阶篇及答案5 HashSet的实现原理 JVM java 虚拟机面试题全面解答 JVM相关面试题及答案 JVM 常见面试题进阶 JVM 常见面试题指南助你横扫BAT! jvm虚拟机 BAT面试题系列 Java架构师面试题——JVM性能调优 JVM笔记10-性能优化之高级特性 阿里的性能优化面试题到底有多难?这四大问题你能答出多少! 【转载】深入理解J

fwdwqdwq的博客 1671

PCB作为智能小车底盘的设计方法与工程实践

PCB底盘是一种将机械结构与电子设计深度融合的嵌入式系统集成方案,其本质是利用印制电路板的高精度制造能力(±0.05mm孔位公差)和FR-4材料的结构强度(弯曲强度345MPa),替代传统亚克力或铝合金底盘。该方案通过封装库驱动的正向设计、机械层语义化定义及机电协同布局,实现安装基准统一、共地平面优化与RF天线集成等技术价值。广泛应用于教育机器人、AGV小车、模块化开发平台等对空间紧凑性、量产一致性与电磁兼容性有严苛要求的移动嵌入式场景,尤其适合具备EDA工具使用能力的电子工程师主导的跨学科开发流程。

weixin_36064575的博客 130

手把手讲解RTX5操作系统在GD32F407上的移植

然后将GD32F4xx_Demo_Suites_V2.6.4\GD32407V_START_Demo_Suites\Projects\01_GPIO_Running_LED下面的main函数复制到我们的项目文件夹中;打开对应GD32407V_START_Demo_Suites的文件夹下面的Utilities,复制gd32f407v_start.c和gd32f407v_start.h文件到一开始项目保存的文件夹下面;为了验证我们的操作系统是否被正确添加,是否能够正确运行,我们需要添加示例文件;

Praguejing的博客 1865

3000+ 道 Java 面试题,刷完吊打架构师面试官

总结了这份 3000+面试题(含答案),这套面试题直接可以让你从零基础的小白一直面试到 Java 研发岗,所以你不管你现在处于哪个技术阶段,这套面试题都是可以满足你,去挑你薄弱点去刷题就可以,最适合的才是最对的!这套面试题内容很多,有些地方就不为大家详细地展开去展示了,如果略有不足,还请大家海涵!太过基础的的面试题就不为大家详细展开了,给大家截图个大概内容,哪里掌握得不好,自己去刷题即可!内容实在太多,里面跳过详细的知识点就不为大家展开了!内容还有很多,实在为大家截图不出来了,见谅!需要领取这 3000+道

java_dazhuzhu的博客 2780

mot_challenge官方评估代码

mot_challenge官方代码使用介绍 评估mot17验证集:每个视频序列的后一半帧作为验证集 下载源码:git clone https://hub.fastgit.org/JonathonLuiten/TrackEval.git 官网上下载data样例,放在TrackEval/下,结构如下: data |-- gt | |-- bdd100k | |-- davis | |-- kitti | |-- mot_challenge | | |-- MOT15-train |

qq_37866436的博客 4896

2025 最新一线大厂 Java 高级架构师面试题总结

本篇主要给大家分享的是 2025 年最新(整合的是金三银四和最近两个月的)一线大厂 Java 基础到高级架构师全栈面试题总结(含答案)。这份小册共涵盖了以下几个大的部分:Java 基础、进阶、字符串、集合等等基础内容Java 并发编程JVM 面试题数据结构与算法网络协议面试题数据库框架相关面试题微服务中间件相关Linux其中数据库部分中有:MySQL、Redis、MongoDB。

m0_50180963的博客 492

多周期路径约束(set_multicycle_path )

1.由慢到快的多周期约束 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成...

Arist. 5509

8.9华为OD机试真题 新系统 - 查找最佳充电策略 (Java/Py/C/C++/Js/Go)

8.9华为OD机试真题 新系统 - 查找最佳充电策略 (Java/Py/C/C++/Js/Go)

算法大师! 1172

2026版Java架构师面试题及答案整理汇总

这套面试题可以说是你面试必备的题库,由于篇幅限制,笔记无法全部为大家展示出来,就以截图主要内容的形式让大家参考啦,需要完整版的小伙伴可以点击下方名片获取。

m0_69632475的博客 1017

Ubuntu22.04如何安装cuDNN8.9.7

本文详细介绍了在Ubuntu 22.04系统上为CUDA 12.2安装适配cuDNN 8.9.7的完整流程,特别针对RTX A6000显卡。主要内容包括:1)选择与CUDA 12.2兼容的cuDNN版本;2)使用deb包方式的安装步骤(添加仓库、导入密钥、安装组件);3)通过MNIST示例验证安装;4)版本锁定、卸载旧版等补充说明;5)性能测试方法。文中强调了版本匹配的重要性,并提供了多卡配置建议,为搭建深度学习开发环境提供完整指导。

2501_93651177的博客 1845

Java架构师全路线总结+高频面试题(2021年最新版),快手三面面试真题

======= 并发编程进阶 (并发工具类实战+CAS+显示锁解析+线程池内部机制+性能优化) JVM深度剖析 (理解运行时数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC算法和垃圾回收器+类加载机制等) MySQL深度进阶 深入Tomcat底层 (线程模型+性能调优) 3-5年资深: ======= 数据库(调优+事务+锁+集群+主从+缓存等) Linux(命令+生产环境+日志等) 中间件&分布式 (dubbo+MQ/kafka、Elasti

m0_63174420的博客 1681

Python进阶005:修改Jupyter Notebook的工作路径

1、Jupyter Notebook简介 2、修改Jupyter Notebook的工作路径 如下三个步骤: 一、安装notebook 在CMD命令行中输入: pip install notebook 二、启动notebook jupyter notebook 启动后发现是在你的用户目录下,如下图所示,但是该目录下有很多的其他文件或文件夹,因此我想把这个环境切换到我单门创建的一个文件夹中。 三、创建notebook的配置文件 在CMD命令行中执行: jupyter notebook --genera

若北辰 1388

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java 架构师面试题解析(2025 年版)

本文整理了2024年Java架构师常见面试题及解析,涵盖基础、JVM、设计模式、数据库、分布式和微服务六大核心领域。重点包括面向对象特性、垃圾回收机制、JVM内存结构、设计模式应用场景、数据库索引优化、分布式事务解决方案及微服务架构特点等关键技术点。内容从理论到实践,既包含概念解析又提供典型示例,为Java架构师面试提供全面指导。此外还提供了完整的面试笔记资源获取方式,帮助开发者系统性地准备架构师岗位的技术考察。

2401_89221445的博客 884

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

掌握这些高级MQ技巧,你的架构才会更牛

作为一名Java架构师,熟练掌握MQ技术无疑是职业技能树中的重要一环。本文将总结几个Java架构师在使用MQ时必不可少的高级技能点。

赵KK的博客 420

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2023 最新一线大厂 Java 高级架构师面试题总结

本篇主要给大家分享的是 2021 年最新(整合的是金三银四和最近两个月的)一线大厂 Java 基础到高级架构师全栈面试题总结(含答案)。这份小册共涵盖了以下几个大的部分:Java 基础、进阶、字符串、集合等等基础内容Java 并发编程JVM 面试题数据结构与算法网络协议面试题数据库框架相关面试题微服务中间件相关Linux其中数据库部分中有:MySQL、Redis、MongoDB。

m0_50180963的博客 264

2020 Java 架构师修炼手册(深夜更新)!

从延期复工到缩招裁员,就业现状的确是有些雪上加霜。不过庆幸的是,无论什么时候,高手永远是稀缺的。虽然今年跳槽成功的难度明显更大些,但毕竟阿里、腾讯、字节跳动的高价 Offer 依旧值得大...

java思维导图 1263
上一篇: java架构师面试题—— Nginx篇
下一篇: java架构师面试题——Redis篇
杜引强
博客等级 码龄13年 806粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值