1. 你对Spring的理解?Spring是一个开源的轻量级框架,为解决软件开发的复杂性而生,基于核心的IoC和 AOP思想实现项目开发的模块化,贯穿项目的表现层、逻辑层及持久层,减低项目模块之间的耦合度,提高复用率。
  2. 你对ioc的理解?项目中哪里用到ioc了?解耦,控制反转
    ioc给设计好对象交给容器管理,IoC容器具有依赖注入的功能,它可以创建对象,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖关系。 通常来说,在传统的Java SE程序设计中,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由IoC容器来控制对象的创建。
    正常情况下我们使用一个对象时都是需要new Object() 的。而ioc是把需要使用的对象提前创建好,放到spring的容器里面。需要使用的时候直接使用就行,而且可以设置单例或多例,非常灵活。
    我们在service层想调用另外一个service的方法,不需要去new了,直接把它交给spring管理,然后用注解的方式引入就能使用。
  3. 你对aop的理解?项目中哪里用到aop了?AOP:面向切面编程。
    开闭原则
    AOP可以用来对业务逻辑的各个部分进行隔离,降低业务逻辑各部分之间的耦合度,提高程序的可重用性,同时提高开发效率。在运行期间,Spring通过动态代理技术动态生成代理对象,代理对象方法执行时进行增强功能的介入,再去调用目标对象的方法,从而完成功能的增强。AOP可以实现如性能统计、安全控制、事务处理、日志记录等功能。
    比方说我现在要弄一个日志,记录某些个接口调用的方法时间。使用Aop我可以在这个接口前插入一段代码去记录开始时间,在这个接口后面去插入一段代码记录结束时间。
  4. Spring中的bean是单例的吗? scpoe="prototype"确保在应用程序范围内仅创建一个 bean 实例,这减少了内存消耗和对象创建的开销,提高了系统的性能和资源利用率
    解决Bean的多例问题
  5. 如何制作一个切面类,代码具体怎么写的?
    @Aspect
    @Component
    public class LoggingAspect {
    // 切点定义,匹配所有以"execute"开头的方法
    @Pointcut("execution(* com.example.service.*.execute*(..))")
    public void executeMethods() {
    }

    // 前置通知,在目标方法执行前打印日志
    @Before("executeMethods()")
    public void beforeExecute(JoinPoint joinPoint) {
    System.out.println("Before method: " + joinPoint.getSignature().getName());
    }

    // 后置通知,在目标方法执行后打印日志
    @After("executeMethods()")
    public void afterExecute(JoinPoint joinPoint) {
    System.out.println("After method: " + joinPoint.getSignature().getName());
    }

    // 也可以定义其他类型的通知,如环绕通知(@Around)、异常通知(@AfterThrowing)等
    }
  6. aop的底层原理? AOP 底层使用动态代理。
    (1)第一种 有接口情况,使用 JDK 动态代理。

    (2)第二种 没有接口情况,使用 cglib动态代理。
  7. 在同一个类中,方法嵌套调用,切面切不到被调用的方法,如何解决?@EnableAspectJAutoProxy(exposeProxy = true)
    AnswerService answerService = (AnswerService) AopContext.currentProxy();
    rows += answerService.save(answer);
  8. ioc源码看过吗?如果看过,大概介绍一下
  9. Spring创建bean的方法?
  10. BeanFactory和FactoryBean的区别?
  11. 常用的FactoryBean的实现类有哪些?
  12. Aop中用到什么设计模式了?
  13. 利用Aop进行开发日志功能,是怎么实现的,具体讲讲?
  14. Spring中依赖注入的方式有哪些?
  15. BeanFactory和ApplicationContext的区别?
  16. Spring bean的作用域?
  17. Spring Bean的生命周期?生命周期中各种Aware的作用?
  18. @PostConstruct注解的作用?
  19. Spring是如何解决Bean的循环依赖的?
  20. jdk动态代理和cglib的区别?
  21. @Autowired和@Reources的区别?
  22. Spring事务的传播行为?
  23. Spring默认的事务传播行为?
  24. 在同一个类中,Spring事务传播行为失效的问题?
  25. 程序中哪里用到事务了?怎么用的?
  26. Spring事务在什么情况下会失效?
  27. SpringMVC工作流程?
  28. SpringMVC的常用注解有哪些?
  29. 你知道的SpringMVC的注解?
  30. 你对restful的理解?
  31. @RequestBody 和 @ResponseBody 的区别?
  32. @RestController和@Controller的区别?
  33. SpringMVC和SpringBoot的区别?
  34. SpringBoot的自动配置原理?
  35. SpringBoot的启动过程?
  36. 自己写过starter吗?
  37. SpringBoot的常用注解有哪些?
  38. SpringBoot的配置文件都有哪些形式?
  39. SpringBoot如何读取配置文件中的配置?
  40. SpringBoot的配置类具体怎么写的?
  41. SpringBoot如何解决跨域问题的?
  42. springboot设置不同的开发环境的配置是什么?
  43. springboot中配置数据源用什么方式?
  44. springboot配置文件的形式有哪些?
  45. springboot开发环境有没有自己搭过?怎么搭的?
  46. springboot中日志框架是什么?
  47. 有没有在springboot项目中做过单元测试?
  48. SpringBoot配置多数据源做过吗?
  49. SpringBoot的启动类放在哪里?
  50. SpringMVC中的拦截器和Spring中的Aop有什么区别?
  51. @Transactional注解中都有哪些属性,分别有什么作用?
  52. SpringCloud组件有哪些?你对Nacos的理解?
  53. 微服务汇总日志,要怎么做?
  54. SpringBoot启动突然中断,无任何报错信息,你如何排查错误?
  55. 微服务的优势?
  56. SSO的流程?