Spring / SpringMVC / Mybatis / SpringBoot / Maven 基础面试题 续 + 闲聊题

目录

一.Spring

1.浅谈Spring

2.浅谈IOC

3.浅谈DI

4.浅谈AOP

5.Spring中单例bean的线程安全问题

6.Spring中bean的生命周期

7.浅谈Spring事务

二.SpringMVC

1.SpringMVC常用注解

2.拦截器与过滤器的区别

3.如何统一异常处理

4.SpringMVC执行流程

三.Mybatis

1.MybatisPlus标准常用开发接口

2.条件构造器&条件查询方法

3.兼容性处理

4.DML(Data Manipulation Language)

四.SpringBoot

1.SpringBoot提供的核心功能

2.SpringBoot核心注解以及由哪几个核心注解组成?

3.SpringBoot支持的配置文件以及读取方式

五.Maven

1.Maven分模块开发的意义

2.可选依赖和排除依赖的区别

3.聚合工程和继承工程

4.私服

六.非技术性问题

1.你们平时的工作流程是什么样的?

2.你们团队规模有多大?

3.平时写接口文档吗?


一.Spring

1.浅谈Spring

Spring是一个开源的轻量级Java企业应用框架,它提供了一系列的工具和框架,用于简化企业级应用的开发。Spring框架的核心是IoC(Inverse of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)两个特性。

2.浅谈IOC

IOC:称为控制反转 

        将对象的创建权交给Spring容器管理,当我们需要使用该对象时,从Spring容器中直接获取即可。

        优点:降低了类与类之间的解耦,类与接口之间的解耦

3.浅谈DI

DI:称为依赖注入

        思想为:将组件之间的依赖关系从组件内部转移到组件之间或者外部容器中。

    降低组件之间的耦合度:组件之间不再需要知道其依赖对象的具体实现方式,只需要依赖对象的接口或者抽象类即可,这样可以降低组件之间的耦合度,使得组件更加独立和灵活。

4.浅谈AOP

AOP:称为面向切面编程,底层基于动态代理的方式实现

核心思想为:在不改变源码的基础上对代码进行功能性的增强。

作用:降低业务之间的耦合度。

        AOP的两种动态代理方式:

                JDK动态代理:要求目标类必须至少实现一个接口

                CGLab动态代理:要求目标类不能为最终类

5.Spring中单例bean的线程安全问题

在Spring中创建的Bean默认是单例的,在多线程环境下,如果这个单例Bean被共享,就会导致出现线程安全问题。

解决方案:

        1.避免在单例bean中使用可变对象

        2.使用ThreadLocal

        3.使用synchronized关键字

        4.使用Lock接口

6.Spring中bean的生命周期

Bean的生命周期分为四大阶段:

        实例化:

                解析类得到BeanDefinition对象

                如果该Bean有多个构造方法,则要推断出构造方法

        属性填充:

                对类中使用@Autowired注解的属性进行属性填充

                判断对象是否实现了Aware接口,实现了执行Aware实现类的逻辑

        初始化:

                判断对象是否实现了BeanPostProcessor前置处理方法

                调用初始化方法InitializingBean接口方法

                判断是否实现了BeanPostProcessor后置处理方法

        Bean创建完毕,进行使用

        销毁:

                使用完毕,判断是否实现了DisposableBean接口的方法,如果实现,执行销毁前方法,销毁Bean对象。

7.浅谈Spring事务

Spring事务:可以帮助我们管理和控制数据库中操作的事务。

声明式事务:通过在配置文件中配置事务管理器和事务通知器来实现声明式事务管理。

编程式事务:通过编写Java代码来实现编程式事务管理。可以使用TransactionTemplate类或者PlatformTransactionManager接口来实现编程式事务管理。

(常用)注解式事务:通过在业务方法上添加@Transactional注解来实现注解式事务管理。可以使用注解来定义事务传播属性、异常回滚属性等。

二.SpringMVC

1.SpringMVC常用注解

2.拦截器与过滤器的区别

3.如何统一异常处理

4.SpringMVC执行流程

三.Mybatis

1.MybatisPlus标准常用开发接口

2.条件构造器&条件查询方法

3.兼容性处理

4.DML(Data Manipulation Language)

四.SpringBoot

1.SpringBoot提供的核心功能

2.SpringBoot核心注解以及由哪几个核心注解组成?

3.SpringBoot支持的配置文件以及读取方式

五.Maven

1.Maven分模块开发的意义

2.可选依赖和排除依赖的区别

3.聚合工程和继承工程

4.私服

六.非技术性问题

1.你们平时的工作流程是什么样的?

2.你们团队规模有多大?

3.平时写接口文档吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值