面试题day19
华为
7.28一面
-
线程的创建方式
继承thread、实现runnable、实现callable
-
创建一个线程一般用哪种方式
callable
-
线程池用过哪些
固定线程池、单线程池 队列太长
定时线程池、缓存线程池 核心线程多
-
线程池的七大参数
核心线程数、最大线程数、阻塞队列、线程存活时间、存活时间单位、线程工厂、拒绝策略
-
线程池的工作流程
核心线程数>阻塞队列>最大线程数>拒绝策略
-
sleep和wait的区别
调用时机、所属类、是否释放锁
-
spring的IOC和AOP的理解
- Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。 IOC 容器负责创建对象,将对象连接在一起,配置这些对象,并从创建中处理这些对象的整个生命周期,直到它们被完全销毁。
- Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理。
-
spring中的bean的单例和多例,以及为什么用多例,什么情况下使用多例
多例保证线程安全
-
单例模式怎么保证线程安全,volatile是防止指令重排
双重校验锁
-
MySQL一条语句查询慢是什么原因以及如何排查,他想问explain
-
发现慢SQL
show processlist
查询当前慢sql的语句- 开启慢日志
set global slow_query_log=1;
-
优化慢SQL
-
explain sql语句
的方式查看慢sql的执行计划 -
分析该SQL语句索引使用情况,全表扫描情况
-
-
8.10 二面
-
spring和springboot区别
自动配置
-
mybatis的取参方式,传参方式
匿名(传参顺序)、@param指定、map、实体
{}、${}
-
bean的注入方式
set方法注入、构造器注入、静态工厂注入、实例工厂注入
-
spring 的两大思想IOC和AOP,AOP实现方式
-
spring mvc的执行流程
- 请求传入dispatcherservlet
- 传入处理器映射器,转换为controller,返回执行链
- 传入处理器适配器,调用底层的方法,返回ModelAndView
- 传入视图解析器,返回View
- 解析View,返回响应
-
序列化和反射是什么,序列化接口实现
反射是把java类中各个成分映射成一个个java对象也就是Class类对象;对象转换为字节序列的过程称为对象的序列化、字节序列恢复为对象的过程称为对象的反序列化
Serializable、Externalizable
-
三大特性
封装继承多态
-
list set map区别
list 有顺序可重复
set 无序不重复
map 键值对
-
接口和抽象类区别,JDK1.7和1.8接口的改变
默认方法
-
redis的五大基本数据类型
string 缓存 session共享 分布式锁
list 消息队列
hash 存储对象
set 集合
zset 排行榜
-
redis的两种持久化方式,redis的默认持久化方式
aof 命令
rdb 快照 默认
-
redis中的删除策略
定时删除、惰性删除、定期删除
-
ACID四大特性
一致性、原子性、隔离性、持久性
-
四个隔离级别,mysql的默认隔离级别
ru、rc、rr、s
-
聚簇索引和非聚簇索引区别
数据存储方式、二级索引查询
-
left join和inner join
对左表记录不做要求、对双表记录都有要求
-
线程和进程的区别
进程是操作系统分配资源的单位
线程是调度的基本单位,线程之间共享进程资源
-
线程的几种状态
创建、死亡、运行、就绪、阻塞
-
线程池的实现方式
- 通过 ThreadPoolExecutor 手动创建线程池。
- 定长线程池、单线程池、定时线程池、缓存线程池
- 通过 Executors 执行器自动创建线程池。
- 自定义线程池
- 通过 ThreadPoolExecutor 手动创建线程池。
-
线程池的拒绝处理策略
直接抛出、最早抛出、抛出异常、发起者执行
-
MQ了解吗
-
linux了解吗
chmod 授权
ps -ef | grep 查看进程
kill -9 杀死进程
tail -f 实时读取日志
netstat -anp | grep 查看端口号
ping 测试地址
mkdir rmdir touch rm mv cp cat