自学内容网 自学内容网

spring 面试题

  1. Spring 是什么 

    1. 家族生态,比较常见的就是springboot ,springcloud等

    2. 是轻量级的,开源的framework 框架

    3. spring是一个IOC 和AOP 的容器框架

  2. spring的优缺点

    1. 优点:有IOC ,AOP,声明事务,集成的能力,spring是单例模式,如果想修改为多例,通过scope

      1. IOC:集中管理对象,对象和对象之间的耦合度降低

      2. AOP:不修改代码的情况下,对业务逻辑进行增强,减少重复代码

      3. 事务:提高开发效率,只需要一个简单的注解@Transactional

      4. 集成:集成了很多优秀的三方框架

      5. spring底层的实现,反射,设计模式都是值得我们学习的

    2. 缺点:因为大而全,上层越简单底层源码越复杂,扩展的越多;配置文件很复杂

  3. Spring IOC 容器,有什么作用?优点

    1. 控制反转,对象创建的控制权由开发人员转变为spring 的Ioc创建,如果需要使用呢,通过DI依赖注入@Autowired(自动注入),就可以使用bean。因为开发人员创建的对象耦合度高,维护成本高。

    2. 优点:集中管理对象,方便维护;降低耦合度。

  4. spring IOC的实现机制?(关键技术点 工厂的设计模式 + 反射)

    1. 简单工厂模式:BeanFactory的getBean()

    2. 反射:类的路径

  5. IOC 和 DI

    1. ioc 是一种思想的实现。将对象的创建权利交给了spring 容器,减少耦合

    2. DI是实现IOC的重要一环节,对象创建之后得引入呀,就是听过DI。

  6. 紧耦合 和 松耦合 

    1. 面向对象的三大特性,五大原则:单一职责,接口分离原则,依赖倒置原则

    2. 想几个例子,鼠标焊在主板上;鼠标的接口和键盘的接口,;

  7. BeanFactory 

    1. 是spring 的顶层的核心api接口

    2. 生产bean

    3. 实现了简单的工厂模式,通过调用getBean传入标识(入参),生产一个bean

    4. 是bean的容器

  8. BeanDefination

    1. 存储bean的定义信息,决定bean的生产方式,比如 scope = singlesingleton,lazy = false,后续BeanFactory根据这些信息生产bean

  9. BeanFactory 和ApplicationContext 

    1. BeanFactory 的 getBean 用于生产bean。

    2. ApplicationContext 实现了BeanFactory,他不生产bean,而是通过BeanFactory生产bean,getbean是一个门面方法 。会自动帮我们把我们配置的bean 注册进来,做的事情更多~(可以理解为4s店)

    3. 共同点:都可以作为容器,管理bean的生产周期

  10. Spring IOC容器的加载过程 (bean的创建过程)

    1. 创建一个上下文的时候就开始加载IOC :new ApplicationContext()

    2. 概念态:为bean配置,调用invokeBeanFactoryPostProcess(bean工厂的后置处理器),到达定义态

    3. 定义态:类配置的定义信息@component,读取到beanDefination对象 ,一个map结构

    4. 纯净态(还没有依赖注入DI):通过反射生产对象,生产之前要进行验证,不是懒加载,是单例,不是抽象,立马生产,(去容器中看看有没有生产过了,已经有了直接拿),实例化完成。不是完整的bean

    5. 成熟态:属性注入,DI

  11. Spring bean 和 对象的区别

    1. Spring bean:被spring IOC容器管理的对象就是bean。bean一定得是springIOC实例化的

    2. javabean对象:是自己实例出来的

  12. 配置bean有哪几种方式?

    1. Xml

    2. 注解 @component (controller,service,repostory)

    3. javaconfig的@bean

    4. @import

  13. bean的作用域?(5个)

    1. scope:单例singlelon(默认),多例protocle,request(必须是web应用) session(web应用),application

  14. 单例bean的优势

    1. 减少内存消耗,提升性能

    2. 减少jvm垃圾回收

  15. spring的bean的线程安全么

    1. 如果类中声明变量,有读写时,线程不安全,但是如果声明在方法中,无状态的又是线程安全的

    2. 当然很少对变量,又读又写

  16. spring 如何处理线程并发?

  17. 声明为多例

  18. 将成员变量放到ThreadLocal中

  19. 同步锁synchronized,会影响吞吐量

  20.   第一个是spring控制的,2,3,4 程序员控制更灵活

  21. 什么是bean装配,什么是bean自动装配(注入)

    1. 在实际的项目中很少使用自动装配功能

    2. 推荐手动装配@autowired,先根据类型再根据名字

  22. 自动装配的方式有几种?

    1. no,默认不进行自动装配,通过ref属性进行装配bean,或者通过@autowired 注解

    2. Byname

    3. byType


原文地址:https://blog.csdn.net/qq_35720068/article/details/142939636

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!