答案不一定正确
1,用最少的内存,对手机号进行排序
如果前缀一样用int数组对后面的数字直接Arrays.sort()
原地排序,使用Arrays.sort()
基数排序(从个位数开始排序,一直到最高位):
2.@Qualifier注解的作用
解决多个bean的注入冲突,指定注入bean的名字(配合@Autowried)
public interface Service {
void performService();
}
// 现在有两个服务都是基于用一个接口
@Service("serviceA")
public class ServiceA implements Service {
@Override
public void performService() {
System.out.println("Service A");
}
}
@Service("serviceB")
public class ServiceB implements Service {
@Override
public void performService() {
System.out.println("Service B");
}
}
在注入时需要用@Qualifier(name)来指定注入的bean
@Component
public class Client {
private final Service service;
@Autowired
public Client(@Qualifier("serviceB") Service service) {
this.service = service;
}
public void doWork() {
service.performService();
}
}
和@Primary的区别
优先注入: 当存在多个 Bean 实现了相同的接口或类时,可以使用 @Primary
注解来标记一个默认的 Bean。这样,当进行自动注入时,如果没有使用 @Qualifier
注解,Spring 会优先选择标记了 @Primary
的 Bean
@Service("serviceA")
@Primary
public class ServiceA implements Service {
@Override
public void performService() {
System.out.println("Service A");
}
}
这样子会默认注入serviceA
3.为什么会出现内存泄露,怎么排查的
内存泄露(oom):程序申请内存时没有可用内存供其使用
为什么会出现:
1.循环引用:程序中存在死循环或者产生重复的对象
2.静态集合:使用静态集合类存储对象没有在合适的时机进行清楚
3.内存泄露的第三方库:第三方库可能存在bug
4.长生命周期的对象持有短生命周期的引用,短生命周期的对象无法被回收
怎么排查:
1.使用jvm工具:如 jstat
、jmap
和 VisualVM
2.生成堆转储文件: 当怀疑存在内存泄露时,可以通过 jmap
命令生成堆转储文件(heap dump)
4.websocket使用的协议
TCP
5.Spring的四个核心特性
图片来源:Spring面试题 | 小林coding (xiaolincoding.com)
6.什么是Spring
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求
7.Redis的默认过期时间
默认是永不过期(不确定是不是这个意思)
8.Mybatisplus怎么做连表查询
1.使用xml配置sql语句
2.在mapper使用注解编写sql语句
9.easyexcel导出的步骤(不确定)
1.创建实体类,对应导出的字段
2.创建excel写入类
// 创建 ExcelWriterBuilder
ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName, User.class);
// 配置写入 Excel 的工作表
ExcelWriter excelWriter = writerBuilder.build();
// 写入数据到 Excel excelWriter.write(data, EasyExcel.writerSheet("Sheet1").build());
// 关闭 ExcelWriter
excelWriter.finish();
3.调用导出方法
10.索引的工作流程(不确定是不是这个题目,不明白)