- 博客(37)
- 收藏
- 关注
原创 java面试:@Resource和@Autowired的区别
我们知道Spring的IOC控制反转的具体实现是通过依赖注入DI来完成的,可以说IOC是思想,而DI是实现的手段,所以Spring的生态衍生出了两个实现着依赖注入功能的注解,那就是@Reasource和@Autowired,而这两个注解一定存在一定上功能的差异,今天小编就和大家把这个问题和大家进行一下分享,希望大家能有所收获。
2025-12-29 15:46:44
202
原创 Java面试:@Component和@Bean的区别是什么
在java当中,@Component注解和@Bean注解都能够帮助我们将对象注册到IOC的容器当中,但这两个注解的却有许多的不相同之处,这常常会作为考察面试者对Spring的IOC的理解程度而成为一道常见的面试考题,今天我们就将这两个注解的异同进行解释,希望大家都能有所收获。
2025-12-28 02:40:29
152
原创 java面试:知道java的反射机制吗
java的反射机制是java当中十分主流的技术,java的核心底层思想之一IOC就是基于反射技术实现的,正因如此,在面试当中反射常常作为一个常考的问题来考察面试者的素养,今天小编就来和大家分享这一方面的知识,希望大家都能有所收获。
2025-12-25 03:55:41
667
原创 java面试:可以详细讲一讲IOC和依赖注入吗?
IOC在Spring当中被称之为控制反转,可以说是java生态当中的一个非常重要的底层思维,而控制反转这一思想能大大帮助程序解耦,而依赖注入也就是DI是实现IOC的一种手段,帮助java完成这样的一套思维逻辑,因此这两点在面试当中不可谓不重要,今天小编就和大家来详细聊一聊这一块内容,希望大家能从中有所收获。
2025-12-17 05:48:12
505
原创 java面试:怎么保证消息队列当中的消息丢失、重复问题?
在面试的过程之中,假设你在简历当中填写了mq的相关技术,那面试官大概率会考察这方面的问题来看看你对mq相关知识的掌握程度,小编在这一块也被拷打过,今天就和大家一起来了解一下这方面的知识,希望大家都有所提升。
2025-12-11 05:23:10
1126
原创 java面试: Spring当中常见的事务传播行为有哪些?
在Spring当中,总会出现一个事务调用了另一个事务的场景,而在这种情况之下我们在不同的情形会需要不同的解决模式,而这就是事务的传播行为,在java面试当中被问到Spring相关的技术栈的时候,事务传播机制被提问到的概率是极大的,今天小编就来和大家分享一下这方面相关的知识。首先,Spring的事务传播行为一共被分为七种,分别是REQUIRED(默认),SIPPORTS,REQUIRES_NEW,NOT_SUPPORTED,NEVER,MANDATORY,NESTED。
2025-11-13 02:59:09
423
2
原创 java面试:有了解过消息队列RabbitMq吗?详细说一说
RabbitMq与RocketMq和kafka类似,都是消息队列的一类,相同的它们都是作为java当中的常见考点,来考察面试者对mq消息队列的实习程度,上两期我们讲解了RocketMq和kafka的底层原理,今天我们就对RabbitMq的知识进行一个分享,希望大家有所收获。
2025-11-05 23:15:36
777
3
原创 java面试:有了解过RocketMq架构么?详细讲解一下
RocketMq是一个消息队列的常见架构,负责对消息的传递和管理,进而来保证服务的上下游具有一个相对较好的性能,因此在java的面试当中,RocketMq常常会最为一个考察要点来判断面试者对mq消息队列的熟悉程度,因此今天我们就对RocketMq消息队列进行分享和讲解,希望大家能从中学习到知识,能够有所收获。
2025-11-03 21:52:30
775
1
原创 java面试:有了解过kafka架构吗,可以详细讲一讲吗
kafka是一个消息队列的常见架构,负责对消息的传递和管理,进而来保证服务的上下游具有一个相对较好的性能,因此在java的面试当中,kafka常常会最为一个考察要点来判断面试者对mq消息队列的熟悉程度,因此今天我们就对kafka消息队列进行分享和讲解,希望大家能从中学习到知识,能够有所收获。
2025-11-01 18:27:05
755
4
原创 java面试:有了解过消息队列mq吗,详细讲解一下
mq消息队列作为java面试当中常考的一个知识点,mq是有重大的意义的,而其基本设计思路和项目整体构成是具有许多的实际意义的,今天我们就着重从mq的具体实现意义和其设计实现的基本实现框架思路做一个讲解。
2025-10-24 22:04:25
993
1
原创 java面试:有了解过jvm的类加载器和双亲委派机制吗?
虽然双亲委派机制存在一定的问题,但是在大多数情况之下依旧时有效好用的,且在出现问题后,能及时给出补救的方案,这样对这套机制来说,也完成了它的使命了。今天的分享就到这里了,希望这篇博客能给你一些帮助,让你对关于jvm的类加载器和双亲委派机制的问题得到进一步的提升,在面试的时候能从容面对面试官。
2025-10-19 18:06:58
991
原创 java面试有了解过jvm类加载机制吗?
作为java程序员,我们的项目都是在jvm上运行的,因此jvm几乎是面试当中的必考题,而相对的,为了能够保证我们编写的java代码能在各式各样不同的操作系统当中运行起来,java代码是通过Javac编译成.class文件,此时的这种中间码被称之为字节码,而此时就会通过jvm进行对字节码的加载,就可以在程序运行时通过解释器和即时编译器将字节码转化为机械码来执行,以获得更高的执行效率。而这个jvm来加载字节码的过程,就是我们今天博客的主题jvm的类加载。
2025-10-16 19:09:23
1008
原创 java面试:有了解过jvm当中的GC垃圾回收机制吗?
我们知道堆区存储着大量的实例对象,当程序在不断运行的过程当中可能会不断的产生新的实例对象,但是堆的内存是有限的,因此为了防止内存泄漏,我们会通过一种方法去对堆区的无效对象进行清理,而这个方法就是我们今天要讲的垃圾回收机制也被称之为GC。而为了实现这样的一个机制,堆区的结构也相应的做出了一些配合,总的来说堆区中主要被划分为两个区域,分别是新生代和老年代。
2025-10-11 02:04:04
926
2
原创 java面试:可以讲一讲jvm的内存结构吗?
在java当中,jvm作为java的虚拟机,负责加载、验证、解释/编译并执行 Java 字节码,为了能完成java当中的许多指定功能,因此jvm将自己的内存结构分为了许多块,在面试当中也会常考这一部分的知识,今天我们就着重的对这个知识点进行详细的解析。:Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存,主要由新生代和老年代组成,GC的实现地址。:它是一块很小的内存空间,主要用来记录各个线程执行的字节码的地址,例如,分支、循环、线程恢复等都依赖于计数器。
2025-10-02 18:03:05
634
原创 java面试:死锁产生的条件是什么?我们又该如何去避免死锁呢?
死锁的定义是在两个或者两个以上的线程在执行过程当中去争夺同一个共享资源,从而导致的相互等待的情况,在这种情况发生时,假设没有任何外部干预,那就会导致线程一直处于阻塞的状,从而无法往下执行操作了,而这种一直处于阻塞等待状态下的线程,我们就称之为死锁线程。
2025-09-29 10:41:12
563
原创 java面试:可以讲一讲sychronized和ReentrantLock的异同点吗
在java面试当中sychronized与ReentrantLock都是用来实现Java当中的排他锁和互斥锁的,二者虽然有及其相同的用法,但是在许多的细节方面却有许多不同,今天我们就将这两个锁做一个细分,希望大家能有所收获。
2025-09-25 19:10:39
853
原创 java面试:你知道ArrayList和LinkedList的区别吗?详细讲一讲。
我们知道ArrayList和LinkedList是十分常用的两个存储数据的容器,二者在很多地方都有相似之处,同时也存在本质的差异,因此在面试当中这道题往往都是用于考验大家的基础底层,今天小编就为大家分享一下这一方面的知识点。
2025-09-23 10:15:14
906
原创 java面试:equals方法与==有什么区别?为什么说重写了equals方法就要重写hashcode方法?
= 运算符号,基本类型比字面值、引用类型比地址,equals 是 Object 方法,默认也比地址,重写后按业务字段比内容。一旦改写 equals 就必须同时改写 hashCode,确保“equals 为 true 时 hashCode 相同”,否则 HashMap/HashSet 等先按 hashCode 定位再按 equals 去重的机制会失效,导致查询丢失与重复元素。今天的分享就到这里了,希望这篇博客能给你一些帮助,让你对关于equals方法与==有什么区别?
2025-09-20 16:53:02
665
原创 java面试:对于HashMap,你了解多少?
就和开篇所讲述的一样,HashMap是java中的常用的键值对结构,键唯一,值可以重复,底层是基于哈希表来实现的,而由于底层是由hash实现的,可以通过键值秒杀的方法来直接获取到数据,因此其查询的复杂度为O(1)。
2025-09-18 17:21:58
736
2
原创 java面试:了解redis的集群么,怎么通过redis的集群来实现redis的高可用?
redis集群是 redis 官方提供的分布式解决方案,用于将数据自动分片到多个节点上,实现数据的拓展,同时提供高可用性,通过redis的集群可以帮助redis解决一些单点布置会发生的一系列故障问题。redis的集群主要是分主从集群,哨兵集群以及分片集群,当然还存在其他的为特殊需求所构建的集群,不过我们重点需要学习的就是这三种集群。
2025-09-16 13:52:10
1338
原创 除了缓存,我们还可以用redis做什么?
正常情况下,redis在我们眼中大多是用来做缓存缓解数据库的查询压力,甚至在许多公司当中使用redis也只是用来做缓存,今天我们就来讲解一下redis除了作为缓存来使用还可以通过五大结构来完成哪一些功能,在面试中可能会设计到诸如"你可以讲一讲如何用redis设计某某工具"等问题。
2025-09-14 16:51:34
947
原创 java面试:你知道一条sql在数据库当中的执行流程是怎么样的么?
接下来我们来对一条sql语句的执行流程做一个总结,首先我们需要通过连接器联系上数据库,使其能够接收到sql语句,之后数据库会优先查询缓存,查找缓存当中是否存在数据,假设缓存在,那就直接返回数据,不存在就继续执行sql语句,接下来sql会进入解析器,解析器会查看sql的语法以及提取出其关键词生成对应的语法树,在完成解析后,sql就会进入优化器阶段,优化器会对sql语句进行优化,来达到最好的执行效果,在完成优化后就会进入执行器来执行sql语句并返回执行结果。
2025-09-12 14:42:08
651
原创 java面试:mysql的三大日志了解过么,它们分别起到什么作用?
mysql的三大日志是用于用于保证数据的可回滚和持久化条件的日志,它们分别是用来记录更改数据的sql记录的binlog二进制日志,以及保证事务的持久性的redolog重做日志还有用于保证数据回滚的undolog回滚日志。从mysq的日志设计后我们发现,对于数据的持久化需要写对应的日志,而对应的日志最好加一个缓存,这样就可以通过日志去做备份恢复与主从同步,这与redis的持久化策略AOF和RDB的思想是异曲同工的。
2025-09-11 04:22:21
1475
原创 java面试:了解MVCC么,详细解释一下
MVCC的全称是Multi-Version Concurrency Control,中译是多版本并发控制是一种数据库管理系统中常用的并发控制机制,用于解决多个事务同时读写数据库时的冲突问题,用于提高并发性能。MVCC的核心思想是同时保存数据的多个版本,保证了不同的事务能读取到的数据版本是不同的,这样即使其他的事务在修改数据,也不影响事务读取事务,进而来解决脏读,不可重复读的问题。
2025-09-08 11:13:40
1246
1
原创 java面试:有了解过数据库事务吗,能详细讲一讲么
事务是数据库管理系统(DBMS)中的一个核心概念,它确保了一系列的数据库操作要么全部成功执行,要么全部不执行,从而维护数据的完整性和一致性,这里我会举一个例子,来对这个问题做详细的说明。假设一个用户来银行用账户A转账了1000给账户B,但这样一个转账操作当中是两步操作,第一就是账户A扣减1000的余额,而账户B在同时余额增加1000。但在这样的两步操作中,不论是余额扣减亦或是余额增加只要哪一步操作失败,假设另一个操作成功,都会导致A与B的账户的总余额的值是不一致的。
2025-09-05 11:45:43
768
原创 java面试:可以讲解一下mysql的索引吗
Mysql的索引是数据库优化当中一个非常核心的概念,同时索引的底层也是java面试当中常见的考点之一,因此今天小编就来和大家分享与索引相关的知识点。
2025-09-03 22:49:30
1796
原创 java面试:了解过JMM么?能详细讲一讲么?
JMM的全称是(java Memory model)是java的内存模型,其是JVM在java多线程环境之下所定义的一套对共享变量进行访问的规范,其是为了屏蔽在不同硬件环境下的差异(如多级缓存,指令重排等等),进而保证并发程序的可见性,有序性和原子性。JMM根据java多线程环境定义了一套对共享变量进行访问的规范,并将这些规范设计一系列并发工具类来解决有序性,可见性,原子性等并发问题,如(volatile(可见+有序),synchronized(可见+有序+原子),CAS(原子))等。
2025-09-01 12:00:27
1147
原创 java面试:有了解过线程池吗?讲讲线程池的核心参数有哪些。
线程池实际上是一种池化的资源管理技术,用来降低频繁创建、销毁线程带来的开销,同时通过控制并行度防止系统被海量任务压垮,通过创建少量的固定线程来完成异步任务。同时还有线程池的四大状态需要了解RUNNING:接收新任务,并处理队列任务;SHUTDOWN:不接收新任务,但处理完队列任务;STOP:不接收新任务,也不处理队列任务,中断正在执行的任务;TIDYING→TERMINATED:所有任务完成后,线程池终止。
2025-08-29 02:24:38
1419
1
原创 java面试:了解ThreadLocal吗?ThreadLocal的内存泄露问题发生的原因是什么?
ThreadLocal 是 Java 中一个特殊的类,它会为每个线程提供局部变量,这些变量与普通变量的区别在于,每个访问该变量的线程都有自己独立初始化的副本,互不干扰。通过设置独立变量这种方式来实现线程之间的数据隔离来保证互斥性。通过以上分析,我们得知了无论如何ThreadLocal都会造成内存泄漏的情况,key为强引用就会导致ThreadLocal的内存泄漏,而key为弱引用下会导致强引用的Value产生内存泄漏。
2025-08-27 01:14:18
1095
原创 java面试:你了解AQS吗,它是怎么实现的?
AQS是java并发包JUC下的一个抽象同步框架,是同步类Semaphore的底层实现基础,主要是用来管理线程阻塞和唤醒的。AQS 是 Java 并发包的基石,通过state + FIFO 队列实现高效的线程同步的,具有独占和共享两种模式,需要实现自定义锁时,可直接继承 AQS,同时由于不使用mutex的指令,所以高效迅捷。今天的分享就到这里了,希望这篇博客能给你一些帮助,让你对关于AQS的问题得到进一步的提升,在面试的时候能从容面对面试官。
2025-08-22 23:50:32
993
1
原创 java面试:可以讲一讲synchronized的锁升级过程么?
锁升级就是在不同的并发量的情况下,对锁的类型进行转换的一个方案。这里我们以当线程的竞争量不断攀升的情况来逐一对升级的锁进行讲解。接下来我们就对锁升级的过程进行一个梳理,方便大家进行理解。首先我们是无锁状态,而在第一个线程开始竞争锁的时候,我们们就会将锁升级为偏向锁,而在第二个线程进入时发现获取不到锁,那就说明偏向锁已被占有,我们就会将偏向锁升级为轻量级锁,而在某个线程长期竞争不到锁的情况下说明线程多或锁的占有时间长,我们就会升级轻量级锁为重量级锁。
2025-08-16 00:51:19
735
原创 java面试:可以详细聊一聊分布式锁么?
分布式锁也是redis的一个重要实现功能之一,它主要是保证在多个线程要执行写操作时,只有获取到锁的线程能够去执行这个操作,因此在面试的过程当中假设项目中有redis的内容,一般都会被问到这个问题,今天我们就来对这个知识点进行分享。
2025-08-12 23:03:07
852
原创 java面试:能详细讲讲redis的持久化策略么
本文介绍了Redis的两种持久化策略:RDB和AOF。RDB通过定时保存全量数据快照实现持久化,优点是恢复速度快但存在数据丢失风险;AOF通过记录每条写命令实现持久化,数据安全性更高但恢复速度较慢。文章详细讲解了RDB的save/bgsave命令、刷盘策略和copy-on-write技术,以及AOF的三种刷盘策略和重写机制。最后总结指出,RDB适合追求性能但可容忍少量数据丢失的场景,AOF则更注重数据安全。合理选择持久化策略对保障Redis数据可靠性至关重要。
2025-08-09 20:37:22
957
5
原创 java面试:典中典,如何解决缓存穿透,击穿,雪崩
面试经典缓存三问:穿透、击穿、雪崩解析 缓存穿透是指请求不存在的缓存和数据库数据,可通过缓存空值或布隆过滤器解决;缓存击穿是热点key失效导致大量请求直达数据库,可用互斥锁或逻辑过期方案处理;缓存雪崩分两种情况:大面积key同时失效需分散过期时间,Redis宕机需搭建高可用集群。这三种情况都会给数据库带来巨大压力,需针对性采取措施。
2025-08-07 21:09:42
876
原创 java面试:请问你是怎么保证缓存一致性的呢?
(1)基本概念 不书面的说,缓存其实就是我们程序和后端之间的一种高速的数据存储层,其存储的就是后端的数据,在我们进行数据查询时优先会先查询缓存,如果有则直接读取数据,没有再去读数据库,这样会更高效方便。
2025-08-05 20:27:30
1169
2
原创 JAVA面试:面向对象编程的三大特征
安全性:封装防止外部直接篡改数据,提高数据的内部安全,这点体现明显在访问控制级别private关键字的设置数据为私有属性的 功能上,同时四种访问控制级别public,procted,默认级别,private个具有不同的访问权限控制来适应不同的情况。封装是指将数据(属性)和操作数据的代码(方法)绑定为一个独立的单元(类/对象,并隐藏内部实现细节,仅暴露必要的接口。用父类/接口的单一引用,透明地调用不同子类的差异化行为,从而消除大量条件判断,让代码具备“开闭原则”的扩展能力。3.父类引用指向子类对象。
2025-08-02 18:03:55
580
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅