spring面试相关

bean的创建过程
IoC容器的初始化
1、解析XML或其他注解定义是bean配置,获取bean的BeanDefinition信息
2、创建一个 BeanFactory,这里使用 DefaultListableBeanFactory。
3、创建一个载入 BeanDefinition 的解读器来载入 BeanDefinition,通过一个回调配置给 BeanFactory。
4、第一次向容器getBean操作会触发Bean的创建过程,实列化一个Bean时 ,根据BeanDefinition中类信息等实列化Bean。
5、将实列化的Bean放到单列Bean缓存内。
6、此后再次获取向容器getBean就会从缓存中获取。

具体过程:
在这里插入图片描述

什么是循环依赖:
循环依赖只有在单例模式下才可以解决,原型模式只能抛出异常

单利模式循环依赖解决方法:
解决方案很简单,去掉有参构造器,只保留setter

原型模式循环依赖解决:
无法解决抛出异常
原型模式中因为spring不会缓存bean,所以无法做到提前暴露,也因此无法解决循环依赖

Spring MVC 原理
在这里插入图片描述

流程说明(重要):

客户端(浏览器)发送请求,直接请求到 DispatcherServlet。
DispatcherServlet 根据请求信息调用 HandlerMapping,解析请求对应的 Handler。
解析到对应的 Handler(也就是我们平常说的 Controller 控制器)后,开始由 HandlerAdapter 适配器处理。
HandlerAdapter 会根据 Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。
处理器处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是个逻辑上的 View。
ViewResolver 会根据逻辑 View 查找实际的 View。
DispaterServlet 把返回的 Model 传给 View(视图渲染)。
把 View 返回给请求者(浏览器)

spring
1、spring如何管理事物,spring事物相关
2、对ioc和aop的理解
3、2中代理区别,什么情况下使用cglib代理,cglib如何实现代理
4、spring有哪些设计模式,单例bean是线程安全的吗
5、怎么执行事物的,是什么过程。
6、spring有哪些注解,@service与@comp区别
7、spring bean生命周期,spring中有很多对bean的处理,实现单例方式有哪些

java
1、string Stringbuffer stringbuilder区别
2、抽象类和接口区别
3、spring AOP实现原理
4、java反射机制和作用
5、hashmap数据结构
6、多线程实现方式,什么是线程安全,
7、线程池工作原理
8、线程池大小如何设置
9、使用线程池导致的线上故障
10、最近有没有出一些线上故障,大致介绍一下线上故障
11、用什么工具排查jvm故障
12、OOM发生在哪些区域上,什么情况下会发生这些异常,堆里面OOM怎么排查,拿到了dump后,怎么去看oom或者内存泄露。
13、新生代和老年代的回收算法,为什么老年代是标记整理
14、fullGC频繁会对程序有什么影响
15、fullGC频繁怎么排查解决
16、创建线程方式
17、furteTask怎么获取结果的,内部通过什么方式阻塞等待获取结果的
18、做线程同步会用到哪些方法(主程序想拿到多个线程返回值,还有什么方式)
19、valite底层实现
20、单例模式怎么实现,静态内部类初始化在什么时候,这个单例是放在什么地方的
21、可重入锁的实现方式,怎么实现可重入的
22、并行和并发的区别
23、线程池实现带优先级的线程执行
24、jvm怎么定义大对象,有一个配置参数
25、AQS:实现原理
26、可重入锁的公平与非公平实现
27、线程池怎么创建使用
28、用的上面阻塞队列
29、synQueqe是什么
30、hashmap解决和避免hash冲突的方法,hash函数怎么实现,为什么使用红黑树而不是其他查询数,1.7为什么发生死循环、1.8怎么避免、那个步骤触发死循环(扩容?)
31、使用的那种垃圾回收器
32、没有使用CMS和G1吗,cms有了解吗
33、方法区的元空间与永久的的优缺点
34、什么是Klass
35、INteger分配多少内存,int与Integer各多少字节,4,16

数据库mysql
1、如果查询效率低的sql怎么排查*
2、复合索引的时候,查询的时候是b在前,a在后,索引是否生效。
3、自己对数据库方式有没有做一些优化。
4、主键索引和其他索引区别,实现上有什么区别(存储数据结构、查询方式)
5、为什么使用B+树
6、表里面创建多少索引,索引创建的规则
7、mysql单表多少可以设计分库分表了
8、事物的各个特性怎么实现的(ACID)
9、怎么解决幻读问题、什么隔离级别可以解决幻读
10、聚集索引与非聚集索引区别,

其他:
1、有10亿数据,找到最大的1000个,有哪些方式实现
2、统计文本中词频出现最高的10个词(一般都是先hash到不同的机器,在进行词频统计topK,再topK)

redis
1、常用数据结构
2、分布式锁,做幂等,短时间相同结果不拒绝,而是返回相同的结果,怎么处理,
3、分布式id怎么生产出来
4、为什么使用redis缓存,服务器本身也有内存为什么不使用。
5、z_set的数据结构,有的场景下,多字段排序 怎么用z_set实现

算法题目:
1、从一个数组中,找到三个数,使三个数之后等于目标数,如果不存在就返回最接近的三个数
2、括号生成个数,n对括号的组合。
3、二分查找的递归和非递归实现。
4、字符串转int(主要考察超出int范围处理)

mq kafka:
1、消费顺序怎么保证,比如订单状态,怎么保证消费的顺序
2、怎么保证消息不丢失(至少发成功一次)我们和消息系统交互怎么保证一致(比如至少发成功一次),消息系统和数据库怎么保证一致,怎么至少发一次消息成功。
3、对kafka的了解:背后高吞吐是用什么技术做支撑的
4、使用kafka有没有什么瓶颈,有没有遇到什么问题。
5、kafka怎么做到高性能的。
6、什么情况下会丢失消息
7、消费端什么时候会丢失消息,什么场景会重复消费。

mybatis
1、插件机制:分页插件、监控插件
2、mybatis怎么执行事物的,大概怎么个过程

ES
1、es内部实现
2、es什么场景下使用 为什么不用mysql搜索
3、es去搜索的原理
4、倒排索引能介绍一下吗

项目:
在项目中,实现上的一些亮点、设计上的亮点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值