那些年,我没答出来的面试题

JAVA基础

Spring框架

1、什么情况下@TranSaction注解会失效?什么情况下Spring事务不会回滚?

  1. spring事务默认情况下只会回滚RuntimeException(运行时异常)和Error(错误),对于普通的Exception(非运行时异常)不会回滚

解决办法:rollbackFor = Exception.class

  1. 开发人员手动抛了或捕获处理了异常,事务同样不会回滚
  2. 如果在同一个类内部直接调用被注解的方法,事务注解将不会生效,因为不是通过代理对象调用的方法

如果确实想调用另一个方法,在Service类中注入自己,或AopContext.currentProxy()获取代理对象

  1. spring通过数据库连接来实现事务。用在多线程场景中,不同的线程数据库连接不一样
  2. 注解作用的方法不是公有的
  3. 方法被final修饰
  4. 数据库引擎如果是MyISAM,不支持事务

手动实现的AOP切面方法报错了,会影响业务接口吗

答:会。不管是切面方法出现异常还是业务方法出现异常,都会抛异常。所以要视业务场景考虑捕获异常还是抛出异常。

数据库

1、count(*)、count(1) 和 count(字段)有什么区别?

  • count(*)和count(1) 会对结果集中的每一行进行计数,包括重复的行和含有 NULL 值的行。count(1)是一种常见的优化写法,它与 count(*) 的功能相同,但是在计算行数时使用了一个常量值1,而不是对每一行进行解析和计数。因为只是统计行数而不需要具体的列数据,使用 count(1) 可以提高性能。但count(*) 和 count(1) 通常在实际应用中没有明显的性能差异,因为现代数据库管理系统对它们进行了优化,实际执行时的差异很小。
  • count(字段) 用于计算指定字段中的非 NULL 值的行数。它会对指定的字段进行非 NULL 值的计数,忽略 NULL 值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值