面试题:
- 先自我介绍一下?
- 说说数据库左连接和右连接的区别?
- mysql 的事务说一下?
- Spring 原理?
- IoC(控制反转)和 DI(依赖注入):
- IoC(Inversion of Control):IoC 是一种设计思想,它将程序的控制权交给容器或框架,由容器来负责对象的创建和管理。Spring 的 IoC 容器,即 ApplicationContext,负责管理 Bean 的生命周期。
- DI(Dependency Injection):DI 是 IoC 的一种实现方式,它通过注入的方式将一个对象的依赖关系交给容器管理,而不是在对象内部直接创建依赖对象。这样做提高了组件的可重用性和可测试性。
- AOP(面向切面编程):
- AOP(Aspect-Oriented Programming):AOP 是一种编程范式,它允许将横切关注点(如日志、安全、事务管理等)从业务逻辑中剥离出来,使得系统关注点的变化不影响业务逻辑。在 Spring 中,AOP 通过代理机制实现,常见的代理方式有基于 JDK 动态代理和基于 CGLIB 的代理。
- Bean 的生命周期和作用域:
- Bean 的生命周期:Bean 的生命周期包括实例化、初始化、使用和销毁四个阶段。Spring 容器负责 Bean 的实例化和初始化,而销毁阶段则由容器负责。你可以提及
InitializingBean
和DisposableBean
接口以及@PostConstruct
和@PreDestroy
注解来控制 Bean 的初始化和销毁操作。 - Bean 的作用域:Spring 定义了多种 Bean 的作用域,包括 singleton(单例,默认)、prototype(原型)、request(每个 HTTP 请求一个实例)、session(每个 HTTP Session 一个实例)和 global session(全局 HTTP Session 一个实例)等。
- Bean 的生命周期:Bean 的生命周期包括实例化、初始化、使用和销毁四个阶段。Spring 容器负责 Bean 的实例化和初始化,而销毁阶段则由容器负责。你可以提及
- Spring 的事务管理:
- 声明式事务管理:通过使用
@Transactional
注解或 XML 配置来声明事务,使得事务的控制更加方便。Spring 提供了对编程式事务管理的支持,可以通过PlatformTransactionManager
接口进行编程式事务控制。
- 声明式事务管理:通过使用
- Spring 的数据访问与集成:
- 数据访问:Spring 提供了 JdbcTemplate 等模板类,简化了 JDBC 的操作,同时支持 ORM 框架(如 Hibernate、MyBatis)的集成,提供了对持久层的支持。
- 集成其他技术:Spring 能够与其他技术(如消息队列、缓存、搜索引擎等)进行集成,提供了丰富的集成方案。
- Spring 框架的核心组件:
- ApplicationContext:Spring 的 IoC 容器,负责管理 Bean 的生命周期。
- BeanFactory:是 IoC 容器的基础接口,提供了基本的 IoC 功能。
- BeanPostProcessor:在 Bean 初始化前后执行一些操作。
- BeanDefinition:定义了 Bean 的配置信息。
- IoC(控制反转)和 DI(依赖注入):
- Rest 的请求有哪些?
- 空窗期的安排?
失败原因:
- 准备不充足
- 嘴笨,下意识逃避
- 没有吸取教训,依然把自己劣势暴露出来。
- 压根不重视面试。
- 坏习惯依旧不改。
解决方案:
- 空出时间在面试前准备模拟面试
- 提前准备好自我介绍
- 适当改正回答时的下意识逃避行为(这点尤为重要)
- 需要调整好作息,不能再休息不好去面试。
初级考察范围:
- Java 基础。
- SQL 语句
- MySql 索引、事务
- 框架原理
- 项目?