跳转至

2025年9月2日

面试题


1. 数据库表关系

简答版

  • 一对一:外键唯一约束。
  • 一对多:在“多”的表加外键。
  • 多对多:中间表。

扩展版 数据库关系主要有三种:

  1. 一对一:如“用户-身份证”,通过唯一外键或共享主键实现。
  2. 一对多:如“部门-员工”,在员工表加部门 ID 外键。
  3. 多对多:如“学生-课程”,建立中间表(student_course)。 维护多表关系时要注意:外键约束、索引优化、以及事务一致性。

2. Maven 继承与聚合

简答版

  • 继承:共享配置。
  • 聚合:统一构建。

扩展版

  • 继承:子 POM 通过 parent 继承父 POM,继承依赖、插件等配置。
  • 聚合:父 POM 使用 <modules> 聚合多个子模块,一次构建全部模块。 区别:继承是纵向复用配置,聚合是横向组织模块

3. <dependencies> vs <dependencyManagement>

简答版

  • <dependencies>:直接生效。
  • <dependencyManagement>:只定义版本,子模块需手动引用。

扩展版

  • <dependencies>:声明依赖立刻生效。
  • <dependencyManagement>:用于集中管理依赖版本,避免版本冲突。子模块必须 <dependency> 才会真正引入。 常用于大型项目,统一依赖版本,减少重复配置。

4. Spring 中的 @Bean 和 @Component

简答版

  • @Component:类上标注,自动扫描。
  • @Bean:方法上标注,返回对象注册到容器。

扩展版

  • @Component:常用于自己写的类,Spring 自动扫描并注入。
  • @Bean:用于方法上,返回值作为 Bean 注册。常用于第三方类或需要复杂初始化的对象。 使用场景:
  • 普通组件 → @Component
  • 第三方对象/需手动控制创建逻辑 → @Bean

5. application.yml 注入配置

简答版

  • @Value("${xxx}"):注入单个属性。
  • @ConfigurationProperties(prefix="xxx"):批量注入到对象。

扩展版

  • @Value:简单,适合少量配置。例:@Value("${app.name}")
  • @ConfigurationProperties:将配置文件的整个前缀绑定到 Java Bean,适合复杂对象配置,支持类型安全。 场景:
  • 零散参数@Value
  • 成组配置@ConfigurationProperties

✅ 这样记:

  • 数据库:一对一、一对多、多对多。
  • Maven:继承=配置共享,聚合=统一构建。
  • 依赖管理:dependencies=直接用,dependencyManagement=版本声明。
  • Spring Bean:Component=类,Bean=方法。
  • 配置注入:Value=单个,ConfigurationProperties=批量。