Java面试
文章平均质量分 95
JungleiRim
Stay hungry stay foolish.
展开
-
Java集合篇:ArrayList(源码分析,实现原理,扩容机制),散列表(哈希冲突,拉链法),HashMap(实现原理,jdk1.7和jdk1.8区别,put方法,扩容机制,寻址算法,多线程死循环)
①散列表(Hash Table)又名哈希表/Hash表②根据键(Key)直接访问在内存存储位置值(Value)的数据结构③由数组演化而来的,利用了数组支持按照下标进行随机访问数据。原创 2024-05-09 14:35:57 · 1413 阅读 · 0 评论 -
Java消息中间件篇:RabbitMQ(保证消息不丢失,重复消费问题,延迟队列,消息堆积,高可用机制),Kafka(保证消息不丢失,重复消费问题,消费的顺序性,高可用机制,数据清理机制,高性能设计)
在消费者出现异常时利用本地重试,设置重试次数,当次数达到了以后,如果消息依然失败,将消息投递到异常交换机,交由人工处理.抛出异常则返回nack。我们可以采用仲裁队列,与镜像队列一样,都是主从模式,支持主从数据同步,主从同步基于Raft协议,强一致。,副本存储在不同的broker中所有的分区副本的内容是都是相同的,如果leader发生故障时,一个topic的数据可能存储在不同的分区中,每个分区都有一个按照顺序的存储的偏移量,属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,而这个交换机称为。原创 2024-04-23 18:04:46 · 1232 阅读 · 0 评论 -
Java面试篇:SpringCloud常见组件,服务注册发现,负载均衡实现,服务雪崩,服务降级,服务熔断,服务监控,服务限流,CAP和BASE理论,分布式事物,接口幂等性设计,分布式任务调度
可以自己创建类实现IRule接口,然后再通过配置类或者配置文件配置即可,通过定义IRule实现可以修改负载均衡规则.服务雪崩:—个服务失败,导致整条链路的服务都失败的情形。原创 2024-04-22 17:11:26 · 1433 阅读 · 0 评论 -
Java面试篇:Spring框架( 单例bean线程安全问题,AOP的使用场景,事物操作,循环引用问题,SpringMVC执行流程,常见注解),Mybatis框架(执行流程,延迟加载,一二级缓存)
AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于A循环依赖在spring中是允许存在,spring框架依据三级缓存已经解决了大部分的循环依赖1.在Spring Boot项目中的引导类上有一个注解2.其中。原创 2024-04-18 22:39:02 · 1302 阅读 · 0 评论 -
Java面试篇:MySQL定位慢查询,SQL语句性能分析,索引(B+树,聚合索引,回表查询,覆盖索引,创建原则,失效情况),SQL优化,事物(ACID,并发问题,隔离级别,MVCC),分库分表问题
索引(index)是帮助MysQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。索引 (index)是帮助MySQL高效获取数据的数据结构(有序)提高数据检索的效率,降低数据库的IO成本(不需要全表扫描)通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。原创 2024-04-07 22:01:20 · 1351 阅读 · 0 评论 -
Java面试篇:Redis分布式锁(执行流程,主从一致性,是否可重入),Redis集群方案(主从复制,哨兵模式,分片集群),Redis单线程性能分析(IO多路复用模型,Redis网络模型)
需要注意的是,Redis的分布式锁并不是严格意义上的互斥锁,因为Redis的单个命令是原子性的,但是在多个命令之间无法保证原子性。,这样会导致客户端还在老的主节点那里写入数据,新节点无法同步数据,当网络恢复后,sentinel会将老的主节点降为从节点,这时再从新master同步数据,就会导致数据丢失。在获取锁时,使用Redis的set命令设置锁的键值对,并通过设置过期时间参数来指定锁的有效时长。单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,原创 2024-03-27 17:52:18 · 863 阅读 · 0 评论 -
Java面试篇:Redis使用场景问题(缓存穿透,缓存击穿,缓存雪崩,双写一致性,Redis持久化,数据过期策略,数据淘汰策略)
Redis Sentinel 是 Redis 自带的高可用性解决方案,可以监控主节点和从节点的状态,并在主节点故障时自动选举新的主节点。③然而,如果频繁请求一个不存在于缓存中的数据,每次请求都会直接访问底层存储系统,无法从缓存中获取数据,导致缓存系统无法发挥作用。:通过配置 Redis 主从复制,可以将主节点的数据同步到多个从节点,实现数据的备份和故障恢复。当MySQL中的数据发生变化时,将变化的数据作为消息发布到消息队列中,然后Redis作为消费者从消息队列中获取消息并将数据同步到Redis中。原创 2024-03-25 23:31:51 · 1434 阅读 · 2 评论