
面试每日一练
文章平均质量分 53
针对面试,每日一练
影子落人间
机会是给有准备的人
展开
-
JAVA单例模式面试题
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这个模式的主要目的是控制某个类的实例化过程,确保在应用程序的生命周期中,该类的实例只有一个,从而避免由于多个实例导致的资源消耗和数据不一致等问题。私有构造方法:为了防止外部代码通过new关键字创建类的实例,单例类的构造方法通常被声明为private。静态变量:在单例类中,通常使用一个静态变量来保存该类的唯一实例。这个变量在类加载时或第一次被访问时被初始化。静态工厂方法:单例类提供一个静态工厂方法(通常是public。原创 2024-11-20 09:57:16 · 1017 阅读 · 0 评论 -
JVM面试题-什么是类加载器,类加载器有哪些
类加载器是Java中用于动态加载类文件的机制。它负责在运行时将类的字节码加载到JVM中,并转换为Java类对象。类加载器主要有以下四种:类加载器(Class Loader)是Java虚拟机(JVM)的一个重要组成部分,它负责将Java类的二进制代码加载到内存中,并转换为可执行的Java字节码。这是Java语言动态性和灵活性的重要特性之一,为Java应用程序提供了动态加载和运行时扩展的能力。类加载器的主要职责是根据类的全限定名(Fully Qualified Name)在运行时定位并读取类的字节码。它执行以下原创 2024-10-29 17:29:34 · 462 阅读 · 0 评论 -
并发面试题-什么叫做阻塞队列的有界和无界
有界阻塞队列是指队列的容量是有限制的,即在创建队列时指定了一个最大容量限制。原创 2024-10-23 17:27:37 · 226 阅读 · 0 评论 -
并发面试题-谈谈你对AQS的理解
AQS(AbstractQueuedSynchronizer抽象队列同步器)是Java并发包中的一个核心组件,它提供了一个框架用于实现基于FIFO等待队列的阻塞锁和同步器。AQS通过管理一个同步状态和一个等待队列来控制多线程对共享资源的访问。它定义了一系列模板方法,如tryAcquire、tryRelease等,供子类实现具体的同步机制。AQS使用CAS操作来确保同步状态的原子性,并通过双向链表实现等待队列来管理处于等待状态的线程。它支持独占模式和共享模式,可以方便地实现互斥锁、读写锁、信号量等同步机制。原创 2024-10-23 15:46:23 · 844 阅读 · 0 评论 -
MySQL面试题-为什么用了索引就会加快查询
而有了索引,MySQL可以迅速定位到索引中满足条件的记录位置,然后直接访问这些记录,从而大大减少了需要扫描的行数。例如,如果有一个索引覆盖了查询所需的所有列,MySQL可以直接从索引中读取数据,而无需访问表的数据行(覆盖索引)。这意味着使用索引时,MySQL可以减少对磁盘的访问次数,因为索引项(而不是整个数据行)被加载到内存中,并且查询可以在内存中快速完成。在并发环境中,索引还可以减少锁争用的情况。因为索引允许MySQL更精确地定位到需要修改的数据行,从而减少了锁定的范围和时间,提高了系统的并发性能。原创 2024-10-15 15:27:45 · 382 阅读 · 0 评论 -
SpringCloud面试题-SpringCloud主要的组件有哪些
Eureka是Netflix开源的服务发现组件,它提供了客户服务注册与发现的功能。原创 2024-10-08 20:55:42 · 587 阅读 · 0 评论 -
Spring面试题-哪些情况事务会回滚
1、异常情况未捕获的RuntimeException及其子类异常:这些异常通常被认为是未检查异常(unchecked exceptions)。如果在事务的执行过程中抛出了这类异常,并且没有被捕获处理,事务管理器会自动触发事务的回滚。 显式地捕获并处理但指定回滚的受检查异常(Checked Exception):虽然受检查异常本身不会导致事务自动回滚,但如果在捕获这类异常后,通过编程方式(如手动调用rollback方法)或配置事务管理器(如使用Spring的@Transactional注解并指定r原创 2024-09-29 10:22:57 · 357 阅读 · 0 评论 -
Spring面试题-声明式事务和编程式事务的区别
基于AOP(面向切面编程)实现,通过配置或注解的方式将事务管理逻辑与业务代码分离。Spring通过代理机制在方法执行前后自动添加事务的开始和结束逻辑,无需在业务代码中显式编写事务管理代码。通过编写具体代码实现事务管理,通常需要使用Spring提供的事务管理API(如或)来显式地控制事务的开始、提交和回滚。原创 2024-09-27 14:58:08 · 344 阅读 · 0 评论 -
Spring面试题-@Autowired注解和@Resource注解的区别
Autowired@Autowired是Spring框架提供的注解,主要用于自动装配Spring容器中的Beans。通过@Autowired,Spring会根据类型(Type)来自动查找适合的Bean并注入。@Resource@Resource注解来自Java标准规范(JSR-250),是Java EE(Enterprise Edition)的一部分。它允许Java EE容器管理Beans的依赖关系,支持按名称(Name)和类型(Type)进行注入。原创 2024-09-27 14:00:55 · 852 阅读 · 0 评论 -
并发面试题-sleep和wait的区别
Sleepsleep是一个系统调用,允许当前线程暂停执行特定的时间段。在线程被挂起的这段时间内,它不会做任何事情,线程状态为“休眠”。这个时候,CPU时间片会分配给其他可运行的线程。Wait: wait通常与线程的同步和协调有关。调用wait的线程会暂停,直到其他线程发出特定的信号(如notify或notifyAll)。在这个过程中,wait操作会自动释放当前线程持有的锁,以便其他线程能够执行。原创 2024-09-26 14:01:47 · 955 阅读 · 0 评论 -
并发面试题-synchronized的作用
在Java编程语言中,synchronized关键字是一种内置的锁机制,用于控制多线程对共享资源的访问。它主要用于实现线程安全,确保在任何时刻只有一个线程可以执行某个特定的代码块或方法。如果不需要同步整个方法,可以使用同步代码块来锁定一段具体的代码,这样可以提高程序的并发性能。通常情况下,这个对象可以是任何一个对象,但最好是私有的,以避免其他部分的代码意外地获取到相同的锁。时,意味着该方法在同一时间只能被一个线程访问。对于实例方法,这个锁是对象实例级别的;对于静态方法,锁是类级别的。原创 2024-09-26 11:12:03 · 259 阅读 · 0 评论 -
Spring面试题-如何在Spring中为@Value注解设置默认值
在Spring开发中,我们经常会遇到需要从配置文件中读取属性的情况。@Value注解是Spring提供的一种便捷方式,能够让我们轻松地将配置文件中的属性注入到Spring Bean中。但是,在某些场景下,可能会出现配置文件中未定义某个属性,或者由于其他原因无法获取到属性值的情况,Spring将会抛出一个IllegalArgumentException。设置默认值非常简单。你只需要在属性名称后面加上一个冒号。上面的代码表示,如果配置文件中没有定义。异常,这往往不是我们希望的结果。,并跟上默认值即可。原创 2024-09-25 20:34:19 · 477 阅读 · 0 评论 -
MySQL面试题-表被锁住怎么办
当MySQL中的表被锁住时,解决的方法取决于锁的类型(表锁、行锁等)和导致锁的原因(如长事务、死锁、大量并发请求等)。原创 2024-09-25 19:06:58 · 606 阅读 · 0 评论 -
微服务面试-修改nacos配置,不重启服务怎生效
是Spring Cloud提供的一种属性刷新机制,它可以应用于需要动态刷新的配置类或方法上。当Nacos上的属性值发生变化时,通过调用/actuator/refresh端点(如果Spring Boot Actuator已集成到项目中)来刷新被。Nacos 提供了动态配置管理的功能,这意味着在不重启应用的情况下,可以实时更新配置。要实现这一点,需要确保你的微服务项目正确地集成了 Nacos 客户端,并且配置了监听机制。这样,应用就能获取到最新的配置信息,而无需重启服务。原创 2024-09-24 23:46:30 · 957 阅读 · 0 评论 -
JAVA基础面试题-反射的机制
反射是Java语言的一种机制,它允许程序在运行时获取对象的类型信息、访问对象的属性和方法,并调用对象的方法。反射机制使得程序可以在运行时动态地创建对象、调用方法、访问属性等,而不需要在编译时确定这些信息。原创 2024-09-24 23:43:33 · 726 阅读 · 0 评论 -
JAVA异常面试题-异常的机制
Java 允许开发者根据需要创建自定义异常。自定义异常通常继承自Exception或。自定义异常有助于提高代码的可读性和维护性,使得错误类型更加具体明确。原创 2024-09-23 19:53:14 · 1182 阅读 · 0 评论 -
JAVA基础面试题-JDK1.8特有的工具类包有哪些?
JDK 1.8(也称为Java 8)引入了许多新的特性和改进,其中一些新加入的工具类和功能增强容易被问道。原创 2024-09-23 17:37:25 · 393 阅读 · 0 评论 -
并发面试题-创建线程有几种方式
Thread。原创 2024-09-21 21:49:06 · 271 阅读 · 0 评论 -
JVM面试题-说一下JVM主要组成部分及其作用
栈和程序计数器的运行是线程私有的内存区域,运行时数据区域就是我们常说的JVM的内存。总体来说,方法区和堆是所有线程共享的内存区域;原创 2024-09-21 12:22:37 · 389 阅读 · 0 评论 -
Linux面试题-日志量很大,怎么查看到目标日志
grepgrep。原创 2024-09-21 11:44:20 · 563 阅读 · 0 评论 -
Spring面试题-Spring有哪些不同类型的依赖注入实现方式?
使用@Autowired或@Resource注解来自动装配指定的bean,在使用@Autowired或@Resource注解之前需要在Spring配置文件进行配置<context:annotation-config />。在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource时,就会在IoC容器自动查找需要的bean并装配给该对象的属性。原创 2024-09-20 15:39:34 · 418 阅读 · 0 评论 -
Redis面试题-如何保持缓存一致性
延迟双删策略是一种用于解决缓存与数据库之间数据一致性问题的方法。其基本思想是在更新数据库时,通过两次删除缓存的操作来尽可能地保证数据的一致性。具体步骤包括:首先,在更新数据库之前删除缓存;然后,执行数据库更新操作;最后,在延迟一段时间后再次删除缓存。延迟双删策略可以在一定程度上保证Redis缓存与数据库之间的一致性,但它并不能完全保证在所有情况下的一致性,属于弱一致性。原创 2024-09-20 14:13:33 · 662 阅读 · 0 评论 -
Spring面试题-Spring是怎么解决循环依赖的?
Spring 使用了三级缓存来解决单例模式下的 setter 循环依赖问题。:用于存放完全初始化好的单例 Bean。:用于存放部分初始化完成的单例 Bean,这些 Bean 已经完成了实例化但尚未完成属性填充和初始化。这个缓存主要用于解决循环依赖问题。:用于存放 Bean 工厂,这些工厂能够在需要时生成 Bean 实例。当 Spring 检测到循环依赖时,它会将尚未初始化的 Bean 的工厂放入三级缓存中,并在需要时通过该工厂创建 Bean 实例。原创 2024-09-19 15:00:30 · 731 阅读 · 0 评论 -
数据库面试题-MySQL索引在哪些情况下会失效
当对索引列应用函数(如UPPER()、LOWER()等)或表达式时,索引通常会失效,因为MySQL需要先计算表达式的值,然后再进行比较。如果索引列的数据类型与查询条件中提供的值的数据类型不匹配,MySQL可能会执行隐式类型转换,这可能导致索引失效。在索引列上使用了IS NULL或IS NOT NULL操作符,导致无法使用索引。索引失效是在面试中经常出现的问题,以下是一些常见的索引失效的情况。在索引列上使用了加减乘除运算符,导致无法使用索引。使用OR操作符连接多列查询条件,导致索引失效。原创 2024-09-19 14:19:57 · 381 阅读 · 0 评论