后端面试题
文章平均质量分 73
后端面试题整理
程序员诚哥
开源项目ruoyi-wms、ruoyi-mall、ruoyi-fast-service作者
展开
-
mysql update语句的执行流程
update tb_student A set A.age=‘19’ where A.name=’ 张三 ';原创 2024-09-19 17:52:16 · 679 阅读 · 0 评论 -
简单说说MySQL中 SELECT 语句执行流程
MySQL 中SELECT用户向 MySQL 服务器发送SELECT查询语句。MySQL 收到 SQL 语句后,会将查询语句进行词法和语法分析。词法分析器,然后语法分析器根据 MySQL 语法规则。。这是 MySQL。优化器决定如何执行查询,。MySQL 的优化器会生成多个执行计划,选择成本最低的计划。执行器根据优化器生成的执行计划去执行查询语句。,按优化器的指示选择适当的访问方式,如是否使用索引,是否需要回表等。MySQL 是多存储引擎的系统。原创 2024-09-19 17:37:23 · 1137 阅读 · 0 评论 -
MyBatis常见面试题
MyBatis: 灵活、可控性强,适合对 SQL 有较高要求和复杂查询的项目。Hibernate: 自动化程度高、面向对象映射良好,适合 CRUD 操作较多且开发者希望避免直接与 SQL 打交道的场景。两者各有优缺点,选择使用哪一个框架需要根据项目需求、团队技能和对 SQL 控制的需求来权衡。SQL 注入(SQL Injection)是一种网络攻击技术,攻击者通过在输入字段中插入恶意的 SQL 代码,使应用程序生成恶意的 SQL 查询,从而操纵数据库的执行行为。原创 2024-09-06 14:40:54 · 1519 阅读 · 0 评论 -
面试时常会被问到的mysql问题:二
自动处理:依赖InnoDB的死锁检测和自动回滚机制。应用处理:捕获错误并重试事务。优化操作:减少锁持有时间、简化事务、遵循一致的锁顺序。使用工具:监控和分析死锁情况,优化数据库设计。通过应用这些策略,可以有效减少和解决MySQL中的死锁问题,提高数据库系统的稳定性和性能。:提供详细的死锁信息。错误日志:记录了死锁事件及其详细信息。:可以查询锁和锁等待信息。:帮助识别可能的锁竞争和长时间运行的事务。:开启死锁日志打印。通过这些方法,可以获取有关死锁的详细信息,从而帮助分析和解决死锁问题。原创 2024-08-31 08:05:14 · 1155 阅读 · 0 评论 -
面试时常会被问到的mysql问题:一
第一范式 (1NF)强调每一列都是原子性的,不可再分。第二范式 (2NF)强调所有非主属性必须完全依赖于主键,不能有部分依赖。第三范式 (3NF)强调所有非主属性不能依赖于其他非主属性,消除传递依赖。通过遵循这三个范式,可以使数据库设计更简洁、减少冗余、降低数据异常的风险,并提高数据的完整性和一致性。InnoDB是 MySQL 的默认存储引擎,适合大多数需要事务和数据完整性的应用。MyISAM适合只读或轻量级的应用,对事务和一致性要求不高。Memory引擎用于需要快速访问的临时数据存储。原创 2024-08-31 07:54:07 · 1602 阅读 · 0 评论 -
阿里开发规范禁止超过三张表 join,我们如何规避?
超过三张表的 JOIN 是否合适取决于具体的场景和需求。原创 2024-07-31 15:48:18 · 958 阅读 · 0 评论 -
时常在面试中被问到的JVM问题
类加载请求首先由当前类加载器接收。当前类加载器将请求委派给它的父类加载器。父类加载器再次将请求向上委派,直到达启动类加载器。启动类加载器尝试加载类,如果成功则返回类对象;如果失败则将控制权交还给子类加载器。子类加载器按此规则递归,直到找到可以加载该类的类加载器。这种机制确保了Java核心库的类不会被用户自定义的类加载器替代,保证了JVM的安全性和稳定性。原创 2024-07-31 13:47:40 · 1084 阅读 · 0 评论 -
时常在面试中被问到的多线程问题:下篇
你也可以实现自己的拒绝策略,通过实现接口并覆盖方法。// 自定义处理逻辑 System . out . println("Task " + r . toString() + " rejected from " + executor . toString());// 可以记录日志,或者执行其他处理措施 } }原创 2024-06-28 18:29:32 · 881 阅读 · 0 评论 -
时常在面试中被问到的多线程问题:上篇
进程:进程是一个程序在其自身的地址空间中运行的实例。每个进程都有自己的内存空间、数据段、代码段和系统资源(如文件描述符、设备等)。线程:线程是进程中的一个执行路径。一个进程可以包含多个线程,所有线程共享进程的资源(如内存、文件描述符等)。所属类Object类。用途:使当前线程等待,直到其他线程调用该对象的notify()或方法。锁机制:必须在同步块或同步方法中使用,即调用wait()方法的线程必须持有该对象的监视器锁。当调用wait()方法时,线程会释放锁并进入等待状态,直到被唤醒。所属类。原创 2024-06-28 18:29:11 · 1247 阅读 · 0 评论 -
Comparable 和 Comparator 有什么区别?
接口用于提供一种特定的比较规则,可以对不同类的对象进行排序。接口用于给定类的实例提供自然排序的方法,而。原创 2024-05-22 17:29:14 · 263 阅读 · 0 评论 -
java中Collection 和 Collections的区别
方法创建一个不可修改的集合,尝试修改这个不可修改的集合会抛出异常。是一个工具类,提供了对集合进行各种操作的静态方法。表示集合的抽象概念,定义了集合的基本行为,而。以下是一个简单的示例代码,演示了如何使用。集合,并向其中添加了几个整数。方法获取集合中的最大值。在这个示例中,首先创建了一个。方法对集合进行排序,并使用。原创 2024-05-22 17:26:55 · 607 阅读 · 0 评论 -
java中关于HashSet、HashMap 和 Hashtable的面试题总结
实现了高效的键值对存储和查找,平均情况下插入、删除和查找操作的时间复杂度为O(1)。方法),然后将元素存储在哈希表的对应位置上。如果该位置已经有元素存储,新增流程主要涉及计算哈希值、定位桶位置、插入节点等步骤。可以实现在常数时间复杂度内向哈希表中插入新的键值对。认为新元素重复,不会将新元素添加进去。方法来比较新元素和已存在元素是否相等。如果不需要考虑线程安全性,并且需要支持。会首先计算元素的哈希码(通过调用元素的。的使用已经不推荐,通常建议使用。需要注意的是,为了正确保证。无法正确判断元素是否重复。原创 2024-05-20 14:36:25 · 981 阅读 · 0 评论 -
面试官:BIO、NIO 和 AIO 有什么区别?
BIO适用于连接数较少的情况,NIO适用于连接数较多但连接活跃度不高的情况,而AIO适用于连接数较多且连接活跃度较高的情况。选择合适的I/O模型取决于具体的应用场景和性能要求。BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)是Java中用于处理I/O操作的三种不同的编程模型.BIO使用阻塞I/O模型,NIO使用非阻塞I/O模型,AIO使用异步I/O模型。以下是他们的各自介绍以及代码示例。原创 2024-05-11 16:42:54 · 271 阅读 · 0 评论 -
面试官:请把ArrayList与LinkedList、Vector、Array做个比较
如果在单线程环境下对性能要求不高,但是需要线程安全性,也可以使用。如果在单线程环境下,并且需要较好的性能,可以使用。如果在多线程环境下需要安全地操作集合,可以使用。是一种动态大小且可以存储不同类型元素的集合类。是一种固定大小且类型固定的数据结构,而。适用于插入和删除操作较多的场景。适用于随机访问较多的场景,而。都是Java中常用的集合类。接口的可变大小的数组。原创 2024-05-11 16:42:12 · 822 阅读 · 0 评论 -
java反射常被面试官问到的四个问题
反射机制是指在运行时,动态地获取类的信息(如类名、属性、方法等),并可以在运行时操作类或对象的属性、方法等。在Java中,反射主要通过包中的类来实现。原创 2024-05-07 16:19:07 · 1111 阅读 · 0 评论 -
final、finally 和 finalize 有什么区别?
【代码】final、finally 和 finalize 有什么区别?原创 2024-04-12 15:01:18 · 204 阅读 · 0 评论 -
面试官:关于int 和 Integer的面试题都在这里了!
这种情况下会出现不可靠的情况,是因为这种缓存机制并不是 Java 语言规范的一部分,而是某些 JVM 实现(比如 OpenJDK)的优化措施。类型的对象,会在编译期间对常量进行优化,将特定范围内的整数常量缓存起来以提高性能。对象的值在这个范围内,且是通过自动装箱创建的,那么它们可能会引用相同的对象,导致。,例如在集合类中,因为集合类不能直接存储基本数据类型,需要使用包装类。比较的是对象的引用是否相同,而不是对象的值是否相等。泛型不能直接使用基本数据类型,但可以使用对应的包装类。在使用时,可以直接使用。原创 2024-04-12 13:06:36 · 521 阅读 · 0 评论 -
为什么重写 equals 时,必须重写 hashCode?
方法返回的值)来确定元素在集合中的位置。当我们向哈希集合中添加元素时,集合会首先计算元素的哈希值,然后根据哈希值找到元素在集合中的位置。方法中使用的字段来生成哈希值。通常情况下,可以将对象中每个用于比较相等性的字段的哈希值合并起来生成一个新的哈希值。方法中被认为是相等的,则它们必须具有相同的哈希值,以确保它们能够被正确地处理。对象将具有相同的哈希值,因此被哈希集合视为同一个对象。)视为不同的对象,最终导致集合中包含了两个相等的对象。对象具有不同的哈希值,因此被哈希集合(方法,导致两个相等的。原创 2024-04-03 16:15:30 · 405 阅读 · 0 评论 -
java中 == 和 equals 有什么区别?
是一个操作符,用于比较两个对象的引用是否相同。如果两个对象引用同一个内存地址,则。是一个方法,用于比较两个对象的内容是否相等。通常情况下,如果类没有重写。的作用是相同的,即比较对象的引用是否相同。否则返回 false。在比较基本数据类型时,方法来改变比较的方式,使其比较对象的内容而不是引用。的默认实现就是比较对象的引用。比较的是它们的值是否相等。原创 2024-04-03 15:57:59 · 284 阅读 · 0 评论 -
介绍一下mysql有哪些索引类型
MySQL支持多种索引类型,每种类型都适用于不同的用途。以下是对不同类型的MySQL索引类型的详细介绍原创 2023-10-13 09:16:18 · 217 阅读 · 0 评论 -
SpringBoot 如何进行参数校验?
在Spring Boot中进行参数校验通常是使用JSR 303规范(也称为Bean Validation)的注解和Spring的Validation API来完成的。在你的应用中创建一个DTO类,该类用于接收和验证请求参数。在你的控制器中,使用上面创建的DTO类作为请求参数,Spring Boot将自动执行参数校验并将错误信息返回给客户端。异常,该异常会在参数校验失败时抛出,然后我们从异常中提取出错误信息并返回一个包含错误消息的。对象进行参数校验,如果校验失败,将会返回一个包含错误信息的响应。原创 2023-10-06 15:06:19 · 224 阅读 · 0 评论 -
讲讲springboot的@Async
Spring Boot的`@Async`注解用于表示一个方法是异步的,即该方法可以在一个独立的线程中执行,而不会阻塞当前线程。这对于处理一些耗时的操作非常有用,如发送电子邮件、生成报表、处理文件上传等。使用`@Async`注解可以提高应用程序的响应性和性能。原创 2023-10-06 14:54:31 · 259 阅读 · 0 评论 -
redis有哪些数据类型并用java代码实现一下
使用Jedis库(Redis的Java客户端)操作Redis中的不同数据类型。包括操作字符串、哈希表、列表、集合和有序集合。你可以根据自己的需求进一步扩展和调整这些示例。原创 2023-09-28 13:35:29 · 120 阅读 · 0 评论 -
linkedlist和arraylist的区别
`LinkedList`和`ArrayList`都是常见的数据结构,用于存储和操作集合元素,如果需要频繁进行插入和删除操作,`LinkedList`可能更适合。如果需要快速随机访问和较小的内存占用,`ArrayList`可能更合适。原创 2023-09-28 09:33:22 · 694 阅读 · 0 评论 -
@Autowired @Resource @Qualifier的区别
- `@Autowired` 主要用于基于类型的注入。- `@Resource` 用于基于名称的注入,不仅限于Spring。- `@Qualifier` 用于在存在多个相同类型的Bean可供注入时,指定Bean的名称或标识符,通常与 `@Autowired` 或 `@Resource` 结合使用来解决歧义问题。原创 2023-09-27 17:51:53 · 540 阅读 · 0 评论 -
介绍一下java的final关键字
在Java中,`final`是一个关键字,它可以用于修饰类、方法、变量以及实例。`final`关键字的主要作用是增加代码的可读性、可维护性和安全性。通过使用`final`,可以确保某些代码元素不会被意外修改,从而减少了潜在的错误和不必要的复杂性。原创 2023-09-28 09:42:55 · 102 阅读 · 0 评论 -
interceptor和filter的区别
`Filter`更通用,适用于所有Servlet应用,而`Interceptor`更专门用于Spring MVC应用,用于处理与控制器相关的任务。选择哪种方式取决于你的应用需求和架构。原创 2023-09-27 18:14:29 · 165 阅读 · 0 评论 -
面试官:讲讲@Configuration 和 @Component 的区别
@Configuration 用于定义配置类,其中包含了用 @Bean 注解定义的 bean 创建方法,用于配置 Spring 容器。@Component 用于标记普通的 Spring bean 类,它们可以是服务类、数据访问对象或其他组件,用于自动扫描和注册到 Spring 容器。原创 2023-09-13 16:23:39 · 244 阅读 · 0 评论 -
java中避免使用“isSuccess“作为变量名的原因和解决方法
通过抛出异常,可以更好地表达程序的意图和状态,同时也提供了更多的灵活性和可读性。异常可以提供更详细的错误信息,方便调试和处理错误,同时也避免了需要手动检查布尔字段的逻辑。通过抛出异常来指示错误,可以提高代码的清晰度和可维护性,并将错误处理逻辑集中在异常处理代码中。这样的命名更符合Java的命名习惯,提高了代码的可读性,并且更容易与其他开发人员共享代码。这样可以避免依赖一个布尔类型的字段来判断是否出现问题,而是通过异常来明确地表示错误的发生。原创 2023-06-20 17:27:25 · 605 阅读 · 0 评论 -
springboot源码解析:用@RestControllerAdvice和@ExceptionHandler处理全局异常
本文讨论 Spring Boot 中的注解及其作用。注解用于定义全局异常处理器和全局数据绑定设置。它标记的类可以处理全局范围内的异常,并根据定义的处理方法执行自定义逻辑。我们还探讨了 Spring 底层是如何实现和处理的。Spring Boot 使用基于注解的配置方式,通过扫描和初始化标记了注解的类来创建全局异常处理器。该类中的方法使用注解来标记,用于处理特定类型的异常。通过 AOP 和事件机制,Spring 在关键的处理流程中拦截、处理异常和数据绑定,并使用。原创 2023-05-17 14:22:54 · 1082 阅读 · 0 评论 -
面试官:java中Date与LocalDateTime的区别
本文探讨了Java中Date和两个日期和时间类的区别。Date是Java早期引入的日期和时间类,而是Java 8中引入的新日期和时间类。Date是可变类,容易引发线程安全问题,而是不可变类,更加可靠和可维护。Date考虑系统时区,而不带时区信息,如果需要处理时区,可以使用类。Date精确到毫秒级别,但设计存在问题,容易出错。提供了更好的精确度,可表示纳秒级别的时间。Date的API设计相对较旧,不够直观,部分方法已过时。的API设计更现代化、易于使用,并提供了方便的方法来处理日期和时间。原创 2023-05-16 10:59:29 · 3045 阅读 · 0 评论 -
HR:面试官最爱问的linux问题,看看你能答对多少
本文介绍了Linux系统的常见面试题,主要包括文件系统管理、环境配置、进程管理、系统资源使用情况、网络设置、任务调度器、软件包管理和系统日志查看,希望对你有所帮助。当然,在面试中,你可能会遇到更多针对具体工作和岗位的问题,要做好充分准备。祝你面试成功!原创 2023-04-16 13:25:40 · 1073 阅读 · 0 评论 -
HR:这些IntelliJ IDEA的面试题,请好好看看
本文将介绍一些常见的IntelliJ IDEA面试题。文章将涵盖使用内置的调试器进行 Java 应用程序调试、使用代码优化工具提高代码质量和性能、使用 Maven 构建项目自动管理依赖项和测试等方面。通过本文的指导,您将能够更加高效地使用 IntelliJ IDEA 进行 Java 开发,并提高代码的质量和性能。原创 2023-04-16 11:53:55 · 791 阅读 · 0 评论 -
HR:这些常问的git问题,你能回答出来吗?
Git 是一种强大的分布式版本控制系统,它提供了许多有用的功能来帮助开发人员管理代码。在这篇文章中,我们总结了 Git 的一些面试常问的问题,包括分支管理、代码冲突的解决和代码回滚。通过这些工具和命令,开发人员可以更轻松地管理代码的版本历史和分支,解决代码冲突,回滚代码等。原创 2023-04-16 11:31:54 · 918 阅读 · 0 评论 -
准备了一些面试官常问的springboot问题,快来看看吧
本文主要介绍了如何在 Spring Boot 中实现常用的 Web 开发功能,包括 RESTful 接口、缓存、文件上传下载、定时任务和跨域处理。通过本文的学习,读者可以了解到 Spring Boot 的基本用法以及如何使用 Spring Boot 开发 Web 应用。本文提供了清晰的代码示例和详细的操作步骤,希望能够帮助读者更好地使用 Spring Boot 进行 Web 开发。} }以上是处理异常的几种方式,具体使用哪种方式需要根据实际情况进行选择。原创 2023-04-15 23:01:13 · 842 阅读 · 0 评论 -
面试官:这是我准备的一些java后端maven面试题
Maven 坐标是用于唯一标识一个 Maven 项目或模块的字符串,通常被用于指定依赖关系。Maven 坐标由三个元素组成:groupId、artifactId 和 version。其中,groupId 用于标识项目组织或公司的名称,artifactId 用于标识项目或模块的名称,version 用于标识项目或模块的版本号。原创 2023-04-15 22:14:03 · 361 阅读 · 0 评论 -
面试官:如何提高MyBatis 进行批量插入的效率
可重复批量操作是一种特殊的批量操作模式,可以在多次执行相同 SQL 语句时,避免重复编译和解析 SQL 语句,从而提高效率。并且,查阅相关资料可知,values的增长与所需的解析时间,是呈指数型增长的。如果需要插入的数据量非常大,可以考虑使用多线程并发批量操作的方式,将数据分成多个批次进行插入。在进行批量插入时,建议使用 SQL 语句的 VALUES 关键字,将多个实体对象的值一次性插入到数据库中。可以考虑减少一条 insert 语句中 values 的个数,最好能达到上面曲线的最底部的值,使速度最快。原创 2023-03-12 13:20:28 · 1850 阅读 · 0 评论 -
面试官:Springboot中@Bean 与 @Component 的不同,以电商为例,说说他们的使用
Bean。原创 2023-03-13 17:02:22 · 569 阅读 · 0 评论 -
面试官:SpringBoot 在打包部署的时候打包成 jar 和 war 有什么不同?
在可执行jar中,Spring Boot会自动配置内嵌的Web服务器,将应用程序打包成一个独立的、可执行的jar文件,包含了应用程序及其所有依赖的库。war文件(Web Archive)是Web应用程序的打包格式,通常包含web.xml文件、JSP文件、Servlet类、HTML、JavaScript、CSS等文件和相关的配置文件和第三方库等。可执行JAR文件中的应用程序和内嵌的Web服务器共享同一个JVM进程,因此可以更好地控制应用程序的内存和CPU使用,从而获得更好的性能表现。原创 2023-03-12 13:44:38 · 1502 阅读 · 0 评论 -
面试官:用电商系统为例介绍一下领域驱动设计DDD
领域驱动设计(Domain-driven Design,DDD)是一种软件设计方法,该方法的核心思想是将业务领域作为设计和开发的中心,强调对业务领域的深入理解、业务语言的建模以及领域对象的设计和实现。这样可以更好地将软件设计和业务需求紧密结合起来,从而提高软件的可维护性、可扩展性和可重用性,使得软件更加贴近业务需求。原创 2023-03-12 14:29:31 · 1660 阅读 · 0 评论