全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页

钩子函数与回调机制专题测试

17 题 35 分钟 难度:

考察知识点

  • BeforeSave/AfterSave 生命周期钩子
  • BeforeCreate/AfterCreate 创建钩子
  • BeforeUpdate/AfterUpdate 更新钩子
  • 回调注册与执行顺序
1
单选题

GORM 的 BeforeCreate 钩子在什么时候被调用?

A

在记录插入数据库之前

B

在记录插入数据库之后

C

在记录更新之前

D

在记录删除之前

2
多选题

以下哪些场景适合使用 BeforeCreate 钩子?

A

为新用户生成默认头像 URL

B

对密码字段进行加密

C

发送注册成功邮件

D

校验用户名长度

3
填空题

定义 GORM 钩子的方法是实现________________________方法,如果返回错误则会______插入操作。

4
单选题

BeforeUpdate 钩子适合用于以下哪个场景?

A

记录更新前的数据到审计日志

B

设置创建时间

C

删除关联数据

D

初始化默认值

5
多选题

以下关于更新钩子的描述,哪些是正确的?

A

BeforeUpdate 在 Updates 和 Save 方法时都会调用

B

钩子中可以修改字段值

C

如果钩子返回错误,更新会被中止

D

AfterUpdate 无法修改字段值

6
单选题

BeforeDelete 钩子在什么情况下会被调用?

A

执行软删除时

B

执行硬删除时

C

软删除和硬删除都会

D

只有使用 Unscoped 时

7
多选题

以下哪些场景适合使用删除钩子?

A

删除用户时级联删除关联的订单数据

B

记录删除操作到审计日志

C

释放用户占用的资源

D

在软删除时备份数据

8
单选题

GORM 的 AfterFind 钩子在什么时候被调用?

A

在执行查询 SQL 之前

B

在数据从数据库加载后,映射到结构体之前

C

在数据从数据库加载后,映射到结构体之后

D

在查询完成后返回结果前

9
多选题

以下哪些场景适合使用 AfterFind 钩子?

A

对加密字段进行解密

B

计算并填充派生字段

C

加载关联数据

D

校验查询结果

10
填空题

GORM 的钩子执行顺序为:______钩子 -> 执行SQL -> ______钩子。如果 Before 钩子返回错误,则不会执行 SQL 和 After 钩子。

11
单选题

BeforeUpdate 钩子在什么时候被调用?

A

在 Save 方法执行前

B

在 Update/Updates 方法执行前

C

在数据库事务提交前

D

A 和 B 都正确

12
多选题

在 AfterUpdate 钩子中可以执行数据库操作吗?

A

可以,使用 tx 参数

B

可以,但不能影响主事务

C

不可以,会死锁

D

可以,但需要小心避免递归

13
单选题

BeforeDelete 钩子的主要用途是什么?

A

在删除前执行清理逻辑,如删除关联文件

B

阻止删除操作

C

记录删除日志

D

A 和 C 都可以

14
判断题

db.Unscoped().Delete(&user) 也会触发 BeforeDelete 和 AfterDelete 钩子。

A

B

15
单选题

AfterFind 钩子的主要用途是什么?

A

在查询后修改返回的数据

B

在查询前添加过滤条件

C

预加载关联数据

D

记录查询日志

16
多选题

以下哪些场景适合使用 AfterFind 钩子?

A

将数据库中的 JSON 字符串解析为 Go 结构体

B

对密码字段进行脱敏处理

C

在查询前添加 WHERE 条件

D

加载额外的关联数据

17
填空题

GORM 钩子方法的标准签名为 func (m *Model) _________(tx *_______) error。

← 上一个试卷 软删除机制专题测试
下一个试卷 → 错误处理与日志专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库