以下为自己亲历面试题,记下来以便自己复习;
1、servlet生命周期
启动→初始化(init())→请求处理(doGet()、doPost())→服务终止(destory())
2、spring特性
ioc:将初始化对象的创建交由框架处理;
aop实现方法:静态代理、动态代理、cglib代理、aspectj
3、集合collection与map
collection集合实现:list、set,queue
list实现:arrayList、linkedList、vector
collection有一个工具类collections
map集合实现:hashmap、hashtable、concurrentHashMap
4、事物的传播、隔离级别
spring声明式事物,transaction。事物依赖于所使用数据库
传播性:required、requires_new
隔离级别:Serializable(未提交时,不能读取数据),repeatable(mysql默认级别),read committed(读取已提交数据、oracle默认级别),read uncommitted
5、微服务框架,经常使用的插件
springcloud、dubbo,springcloud短连接(阻塞IO),dubbo长连接(NIO)。spring cloud alibaba升级特性,使用springcloud生态,同时使用长连接注册。
6、多线程实现方法,线程池
线程生命周期
runnable、callable、thread
ThrealLocal、volatile(轻量级锁)
线程池创建:创建核心线程,等待任务,执行任务,ThreadPoolExecutor.execute(),ThreadPoolExecutor.submit()
锁的级别:无锁、偏向锁、轻量级锁、重量级锁
7、同步锁,重量级别
synchronized,reentrantlock,
reentrantlock.lock(),reentrantlock.unlock(),reentrantlock.trylock(),reentrantlock(true)公平锁
8、mysql数据库索引优化
B+ tree
innodb:行级锁,适用索引,修改多
MyISAM:表级锁,适用索引,修改少,查询居多
innodb、MylSAM索引文件与数据文件存放方式
9、分布式事务
redis分布锁,watch(),unwatch()
异常传递(巧妙利用数据库事务),解决分布式事物
10、中间件redis、mq
redis:缓存,redis锁
mq:rabbitmq、kafka
mq适用目的:异步、削峰
mq信息丢失:生产端处理,mq中间件处理,客户端处理
11、设计模式
单例、普通工厂、静态工厂、动态工厂、外观、静态代理、动态代理(handler、cglib)、命令、适配器、模板、策略、装饰者、观察者、状态
12、<? extend A>与<? super B>
上界限符、下界限符;
保存数据的区别,传递数据的区别