面试踩坑总结一

JVM中两个对象互相引用会被回收吗?
不会,强引用的对象不会回收

hashMap为什么要重写hashcode和.equals方法?
应该是静态内部类Node重写了,为了比较key,value决定是替换还是以链表形式追加

rabbitmq消息监听发生异常重新回到队列一直这样一直阻塞怎么办?
重新归队被其他消费者消费

@Controller注解返回什么?
返回模板引擎视图名称

@Component注解标在接口或抽象类上能创建注入bean吗?
不能,接口不能实例化

spring如何注入mybatis的mapper接口?
mybatis有个MapperFactoryBean类实现了spring的FactoryBean接口实现了它的getObject方法,
实现了FactoryBean接口的bean是一个工厂bean,工厂bean实现的getObject方法返回的对象可以被Autowired和Resource注入

mysql主键索引和普通索引有什么区别?
聚簇索引和普通索引,聚簇索引位于B+树的叶子节点,普通索引位于B+树的非叶子节点
1, 主键索引索引着数据,然后普通索引索引着主键ID值(这是在innodb中,但是如果是myisam中,主键索引和普通索引是没有区别的都是直接索引着数据)
2,当你查询用的是where id=x 时,那只需要扫描一遍主键索引,然后拿到相应数据
但是如果是查询的普通索引的话,那么会先扫描一次普通索引,拿到主键值,然后再去扫主键索引,拿到所需要的数据,这个过程叫做回表

spring声明式事务什么情况下会失效?
@Transactional 应用在非 public 修饰的方法上
@Transactional 注解属性 propagation 设置错误
@Transactional 注解属性 rollbackFor 设置错误
同一个类中方法调用,导致@Transactional失效(比如有一个类Test,它的一个方法A,A再调用本类的方法B(不论方法B是用public还是private修饰),但方法A没有声明注解事务,而B方法有。则外部调用方法A之后,方法B的事务是不会起作用的。)
程序中try/catch处理了异常
数据库引擎不支持事务

spring除了三级缓存还有没有其他解决循环依赖的方式?

RPC和RMI的区别?
RPC是远程过程调用,RMI是不同JVM之间对象共享

spring bean生命周期
spring bean 容器的生命周期流程如下:
1、Spring 容器根据配置中的 bean 定义中实例化 bean。
2、Spring 使用依赖注入填充所有属性,如 bean 中所定义的配置。
3、如果 bean 实现BeanNameAware 接口,则工厂通过传递 bean 的 ID 来调用setBeanName()。
4、如果 bean 实现 BeanFactoryAware 接口,工厂通过传递自身的实例来调用 setBeanFactory()。
5、如果存在与 bean 关联的任何BeanPostProcessors,则调用 preProcessBeforeInitialization() 方法。
6、如果为 bean 指定了 init 方法( 的 init-method 属性),那么将调用它。
7、最后,如果存在与 bean 关联的任何 BeanPostProcessors,则将调用 postProcessAfterInitialization() 方法。
8、如果 bean 实现DisposableBean 接口,当 spring 容器关闭时,会调用 destory()。
9、如果为bean 指定了 destroy 方法( 的 destroy-method 属性),那么将调用它

mysql怎么开启慢查询?
slow_query_log 慢查询开启状态
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time 查询超过多少秒才记录

过滤器的拦截器的区别?
底层实现原理不同,过滤器是基于函数回调的,而拦截器是动态代理实现的。
过滤器 实现的是 javax.servlet.Filter 接口,而这个接口是在Servlet规范中定义的,过滤器依赖servlet,也就是说过滤器Filter 的使用要依赖于Tomcat等容器,导致它只能在web程序中使用。
而拦截器是spring的一个组件。
过滤器Filter是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后。
拦截器 Interceptor 是在请求进入servlet后,在进入Controller之前进行预处理的。
过滤器用@Order注解控制执行顺序,通过@Order控制过滤器的级别,值越小级别越高越先执行。
当配置自定义Filter时,如果不指定order(不指定时默认为Integer.MIN_VALUE),init()执行顺序随机,但doFilter()按filter名称的字典序执行;
拦截器默认的执行顺序,就是它的注册顺序,也可以通过.order()方法手动设置控制,值越小越先执行。

mysql哪些情况不会命中索引?
索引规范不合理,sql解析器不命中索引.
表中索引是以表中数据量字段最多的建立的索引,sql解析器不命中索引。(实际就是索引没用,最后全局查找了)
bool的字段做索引,sql选择器不命中索引.
模糊查询 %like
索引列参与计算,使用了函数
非最左前缀顺序
where对null判断
where不等于
or操作有至少一个字段没有索引
需要回表的查询结果集过大(超过配置的范围)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值