基础三
-
可以管理Spring Bean的生命周期的注解有:@PostContruct、@PreDestroy。
-
@EnableAutoConfiguration注解:
- 该注解由组合注解@SpringBootApplication引入
- 该注解作用是开启SpringBoot自动配置
- 该注解会扫描各个jar包下的spring.factories文件,并加载文件中注册的AutoCofiguration类等
- @EnableAutoConfiguration的关键功能是通过@Import注解导入的ImportSelector来完成的
-
String类能不能被继承?
不能,你查看源码会发现String类是被final修饰的类,final修饰过的类不能被继承,final修饰过的变量不能被修改。
-
Spring 如何结局循环依赖?(高端面试题)
spring只能通过提前暴露bean来解决setter注入的循环依赖,无法解决构造器注入的循环依赖
-
简述java的反射机制和使用场景
反射是java的一种机制,可以让我们在运行时获取类的信息,通过反射我们可以获取到类的所有信息,比如它的属性、构造器、方法、注解等(详细描述:https://blog.csdn.net/qq_33709582/article/details/113550163)
-
String str = new String(“abc”)到底new了几个对象?
两种情况:
- 一个:如果常量池中已经有“abc"这个字符串,也就是说你在前面已经new过一个值为”abc“的字符串,那虚拟机就只会在堆内存中new一个String对象,并将常量池中”abc“的地址指向你刚刚new的String对象。
- 两个:如果常量池里面没有”abc"这个字符串,那虚拟机就会在堆内存中new出一个String对象,还会在常量池中new一个abc字符串对象。
-
mysql深度分页查询如何写sql语句
如果某天的一张单表数据量达到500w条,且你需要的数据恰恰在最后10条,常规的分页非常慢,
//常规分页 SELECT * FROM table_name limit 1000000,10 //耗时3.968s //先查id ,写法很多,看个人习惯 SELECT * FROM table_name a,(SELECT id FROM table_name limit 1000000,10) b WHERE a.id = b.id //耗时1.568 //如果你的表有自增id(并且没断层),就这么写,效率直接起飞,真的是项目经理看了感动,架构师看了落泪 SELECT * FROM table_name WHERE id>1000000 LIMIT 10 //耗时0.572 //以上代码copy,没有实际在我自己的mysql中写过。
-
接口也能被继承,是被接口继承的接口。
-
java中的sleep和wait的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cp7d1fCZ-1675052532775)(C:\Users\30500\AppData\Roaming\Typora\typora-user-images\1669565012569.png)]
1.sleep是Thread的方法,wait是Object的方法
2.sleep方法没有释放锁,而wait方法释放了锁(上锁的方法没办法让多个线程同时操作一个数据,
3.wait,notify和notifAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
4.sleep必须获取异常,而wait,notify和notifyAll不需要捕获异常。
-
java如何进行高效的数组拷贝?
Arrays.copyOf或 System.arraycopy,是自己new数组, 然后for循环复制效率的两倍左右
Arrays.copyOf或 System.arraycopy,是自己new数组, 然后for循环复制效率的两倍左右
为什么快,因为它们是native方法;native是包装其它语言编写的源程序