Java程序员面试必备的知识点,极其重要

开头

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作心目中最好的Java项目,没有之一。

**可以毫不夸张的说,Spring重新定义了Java,**所以这是重点也是难点,工作中必须会,面试时肯定考,不过很多人在面试的时候在简历上写着熟悉Spring,但也不过只是会用SSM,在这个基础上做crud罢了,对于Spring全家桶里面其他技术点真的有所掌握吗?

Spring系列包含非常多的项目,可以满足Java开发中的方方面面,先来看下常用框架的知识点汇总:

本文分享的内容是:阿里“重推”的Spring+Spring Boot+Spring Cloud Alibaba学习手册,如果你拿到这份宝典认真的看完后,那你对于Spring的掌握绝对不是“熟悉”的程度,接下来不多哔哔,直接上干货!(完整版内容请阅读至文末获取!)

1. 消息的可靠性投递

在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。

RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。

confirm 确认模式:当消息从 producer 发送到 exchange 则会执行 confirmCallback中的confirm方法。

return 退回模式:当消息发送给Exchange后, Exchange将消息路由到queue失败会执行ReturnCallBack。

确认模式会返回{1.相关配置信息, 2.交换机是否成功接收到消息 , true 成功 false失败 3.失败原因 }

回退模式会返回{1.消息对象,2.错误码,3.错误信息,4.交换机名称,5.路由键}

2.Consumer ACK(消费者 ACK)

ack指Acknowledge,确认。 表示消费端收到消息后的确认方式。

RabbitMQ提供三种确认方式:

自动确认: acknowledge=“none” 当消息一旦被Consumer接收到,则自动确认收到,并将相应 message 从 RabbitMQ 的消息缓存中移除。

手动确认: acknowledge=“manual” 如果出现异常,则调用channel.basicNack()方法,让其自动重新发送消息。

根据异常情况确认:acknowledge=“auto”。

3. 消息过期(TTL)

TTL 全称 Time To Live(存活时间/过期时间)。当消息到达存活时间后,还没有被消费,会被自动清除。

RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。

消息过期, 可以让队列统一过期, 也可以让它单独的消息过期。

4. 死信队列

死信队列,英文缩写:DLX 。Dead Letter Exchange(死信交换机),当消息成为Dead message (死信)后,可以被重新发送到另一个交换机,这个交换机就是DLX。

消息成为死信的三种情况:

1.队列消息长度到达限制;

2.消费者拒接消费消息,并且不把消息重新放入原目标队列;

3.原队列存在消息过期设置,消息到达超时时间未被消费;

死信队列和死信交换机:
死信队列和死信交换机与正常的队列和交换机一模一样, 没有任何区别 !! 

如何实现队列与死信交换机绑定 , 给队列设置如下参数:

  • x-dead-letter-exchange : 设置死信交换机

  • x-dead-letter-routing-key : 设置死信路由key

5. 延迟队列

消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费。 例如:

延迟队列是一个很强大的功能 , 但是在RabbitMQ中并没有提供延迟队列功能。

可以使用:TTL(消息过期)+死信队列组合实现延迟队列的效果。

实现流程图如下 :

6. 消费端限流

当系统峰值比较高的时候 , 我们我们可以使用RabbitMQ实现削峰填谷, 让我们系统处理的请求更加平稳

实现步骤

  1. 设置akc机制为手动确认

  2. 配置监听容器

7.RabbitMQ应用问题 (消息补偿机制)

我们通过之前的消息可靠性投递 , ACK 确认机制 , 以及死信队列 , 基本上已经能够保证消息投递成功了 !

为什么还要消息补偿机制呢? 难道消息还会丢失,没错,系统是在一个复杂的环境,不要想的太简单了,虽然以上的三种方案,基本可以保证消息的高可用不丢失的问题,但是作为有追求的程序员来讲,要绝对保证我的系统的稳定性,有一种危机意识。

比如:持久化的消息,保存到硬盘过程中,当前队列节点挂了,存储节点硬盘又坏了,消息丢了,怎么办?

产线网络环境太复杂,所以不知数太多,所以要做消息补偿机制 !

消息补偿机制需要建立在业务数据库和MQ数据库的基础之上 , 当我们发送消息时 , 需要同时将消息数据保存在数据库中, 两者的状态必须记录。 然后通过业务数据库和MQ数据库的对比检查消费是否成功,不成功,进行消息补偿措施,重新发送消息处理

最后

面试题文档来啦,内容很多,485页!

由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。有想获取完整版笔记的朋友,点赞后点击这里免费领取哦

1111道Java工程师必问面试题

MyBatis 27题 + ZooKeeper 25题 + Dubbo 30题:

Elasticsearch 24 题 +Memcached + Redis 40题:

Spring 26 题+ 微服务 27题+ Linux 45题:

Java面试题合集:

[外链图片转存中…(img-aBHQgp4u-1624598323562)]

Spring 26 题+ 微服务 27题+ Linux 45题:

[外链图片转存中…(img-0LDStpNe-1624598323562)]

Java面试题合集:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值