栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

个人面试合集

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

个人面试合集

一、Java基础 1.==号和equals的区别

==:java的值传递
【1】如果比较的对象是基本数据类型,则比较数值是否相等;
【2】如果比较的是引用数据类型,则比较的是对象的内存地址是否相等
equals():
用来比较两个对象的内容是否相等

个人基本使用:
比较基本数据类型:==号就可以
比较引用类型用equals

2.Java中基本数据类型和包装类型的区别

Java设计中一个核心的原则,即万物皆对象,基本数据类型不是对象。可以把基本数据类型包装成一个对象,以面向对象的思想去使用这些类型。

基本数据类型包装的形式,让功能更加健壮

1、例如: Integer默认不是int的 0 而是 null ,那么比起基本数据类型,包装类对象它就多了一个状态。
2、还有一个比较直观的,就是包装类给我们提供了很多方法可以使用,例如:数据以转二进制,查看最大值最小值等等。
3、除了上面还有一个要点: 集合中不能存放基本数据类型,只能存放对象,所以当使用集合时,我们的就需要使用到包装类对象。

3.char和varchar的区别

char是固定长度的–查询效率高点-最大255
varchar不是固定长度-最大65535字节

二、数据库 1、哪些场景下索引会失效?(实质导致全表扫描)
	1-模糊查询的时候,like左模糊 "%A" 或者全模糊
	2-对索引的列使用了表达式或者函数
	3-where子句中or条件有一个不是索引列
	4-联合索引要遵寻最左匹配原则
三、Spring 1、谈谈spring的ioc和aop

​ (1)IOC:控制反转,把创建好的对象给Spring进行管理

​ (2)AOP:面向切面编程,不修改源代码的情况下进行功能增强 。

四、Springboot 五、MQ 一、Redis 1、数据类型

string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)
list:可以重复
set:不可以重复
zset:不可以重复且有序(可用于排行榜)

2、优点和缺点

优点
1、操作内存,支持持久化和事务,支持主从复制
2、采用单线程,避免了不必要的上下文切换
3、多路 I/O 复用模型,非阻塞 IO
缺点
受物理内存限制,适合小数据

3、两种持久化(AOF/RDB)

RDB性能好,更新频率低—间隔一段时间持久化,如果持久化间 redis 发生故障,会发生数据丢失。

AOF安全高,更新频率高—执行的每次写命令在单独的日志文件中,重启redis 会去恢复。

4、Redis的过期键的删除策略和内存淘汰策略

定时清理和请求清理—定期过期:每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key
淘汰策略
随机key,最近最少使用,报错

5、Redis的事务

事务:ACID
原子性、一致性、隔离性、持久性
Redi支持一致性和隔离性,单线程下,他没有回滚,不具备原子性

6、Redis的缓存雪崩、击穿、穿透

穿透: 没这个Redis key
解决方案:接口用布隆过滤器控制

雪崩:请求太多了,redis宕机
解决方案:redis集群+缓存预热+不设置相同的过期时间

击穿: key同时过期了,都去查数据库
解决方案:不设置相同的过期时间+加分布式锁

二、RabbitMQ(解耦、异步、削峰) 1、基本结构


Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue
Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的
Producer:消息生产者,即生产方客户端,生产方客户端将消息发送
Consumer:消息消费者,即消费方客户端,接收MQ转发的消息

2、消息模型

直连模式 work queues

直连模式–多个消费者work queues

订阅模式 publish/subscribe fanout

路由模式 direct

高级路由模式 topic

思考:
publish/subscribe与work queues有什么区别。
区别:
1)work queues不用定义交换机,而publish/subscribe需要定义交换机。

2)publish/subscribe的生产方是面向交换机发送消息,work queues的生产方是面向队列发送消息(底层使用默认交换机)。

相同点:

所以两者实现的发布/订阅的效果是一样的,多个消费端监听同一个队列不会重复消费消息。

2、实际工作用 publish/subscribe还是work queues。

建议使用 publish/subscribe,发布订阅模式比工作队列模式更强大(也可以做到同一队列竞争),并且发布订阅模式可以指定自己专用的交换机

3、消息丢失问题

生产者丢失:开启事务(不推荐,性能耗损),开启confirm 模式 异步的

消费者丢失:用 RabbitMQ 提供的ack机制,简单来说,就是你关闭 RabbitMQ 的自动ack

MQ丢失:消息持久化,开启 RabbitMQ 的持久化,就是消息写入之后会持久化到磁盘当然前提是队列必须持久化

4、重复消费问题(幂等性)

在写入消息队列的数据做唯一标示,消费消息时,根据唯一标识判断是否消费过;

六、SpringCloud 七、运维
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号