面灵AI

招银云创后端一面:文件存储、事务与 Redis 持久化

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 简历项目主要使用 Python,你是否用过 Java?
  2. 项目为什么选择 Spring AI,主要难点是什么?
  3. 项目接入了什么大模型?
  4. 用户上传的文件怎样保存,分析失败后怎样处理原文件?
  5. 是否了解文件存储服务器?
  6. Java 面向对象的三大特性是什么?
  7. 重写与重载有什么区别?
  8. JVM 内存区域怎样划分,哪些变量位于栈中,栈上的变量或方法一定线程安全吗?
  9. MySQL 常用存储引擎有哪些,各有什么特点?
  10. 事务的四大特性是什么?
  11. 编写 MySQL 语句需要注意哪些问题?
  12. SQL 查询的逻辑处理顺序是什么?
  13. Redis 有哪些持久化方式,各有什么优缺点,生产环境怎样选择?
  14. 你了解哪些消息队列?
  15. 研发、产品和测试对同一个问题理解不一致时,你会怎么处理?
  16. 未来一到三年的职业规划是什么?

《参考解析》

文件保存与分析任务分开讲

原始文件、解析结果和任务状态分别保存。上传成功后记录文件标识与所属用户,后续分析通过任务引用原文件。失败时留下错误和可重试状态,按约定的保留期限处理原文件;不能把“分析报错”直接等同于“上传文件无效”。读取和下载也要检查访问权限。

局部引用不等于对象私有

方法内的局部变量随线程栈帧保存,但引用指向的对象仍可能被多个线程共享。判断线程安全要追到对象是否逃逸、是否存在并发修改,以及用了什么同步手段。只回答“放在栈里,所以安全”会漏掉共享对象。

SQL 逻辑顺序与实际执行计划要区分

理解查询可以从 FROM 和 JOIN 开始,接着看 WHERE、GROUP BY、HAVING、SELECT、ORDER BY、LIMIT。数据库优化器会选择实际访问路径,不能把这套逻辑顺序当成逐行执行的物理步骤。聚合前的过滤与聚合后的过滤不同,WHERE 和 HAVING 的职责也因此不同。

RDB 与 AOF 的取舍

RDB 保存某个时刻的数据快照,AOF 记录写操作以便重放。比较时要同时看可接受的数据丢失窗口、恢复耗时、磁盘与重写开销。持久化不能替代备份;是否能恢复,还要靠实际恢复演练确认。