面灵AI

上海星丰雨 Java 开发秋招一面:数据同步与 AI 编程实操

轮次
一面
结果
通过
时间
2026-09
来源
牛客网

《面试题目》

  1. 在用友做的 SAP 与采购商城跨系统数据同步,具体是怎么实现的?
  2. 同步过程中遇到接口超时,你是怎么处理的?
  3. 土地交易项目里把一个查询从 800ms 降到 100ms,具体怎么做的?
  4. 有前端开发经验吗,不是写页面、而是偏逻辑的那种?
  5. 报表页面用户修改了数据并点击保存,但数据没有变化,一般怎么排查?
  6. AI 编程方面你主要用 Claude Code、Trae、Cursor 吗?
  7. 使用 AI 时提示词、规则、上下文和 skill 是自己编写的吗?拿到一个需求你会怎么用 AI?
  8. AI 交付代码之后,是你人工验收测试,还是让 AI 自己验收测试?
  9. 反问:一共几轮面试?
  10. 反问:公司业务是什么?
  11. 反问:面试评价如何?

《参考解析》

接口超时不能当成”没发生过”

超时只是本地等待结束,下游很可能已经执行成功。所以同步链路上的写操作必须先有幂等键(业务单号加唯一索引)兜底,重试要带退避和次数上限,每次尝试的状态要落表,失败进重试队列或补偿任务。最忌讳的是 catch 住超时异常直接跳过——上游以为失败、下游实际成功,两边数据就此分叉。跨系统同步的常见做法是用本地消息表或事务发件箱记录待发事件,再由后台任务投递并对账。

查询从 800ms 到 100ms,要能说清改了什么

先看执行计划和慢日志,判断瓶颈是扫描行数过多、回表、排序还是 N+1 调用。常见手段是补联合索引让 where + order by 走同一个索引、做成覆盖索引消除回表、把多次单条查询合并成批量查询、去掉 select *,数据量和并发再上来才考虑缓存或预聚合。回答时最好带上改造前后扫描行数与执行计划的变化,否则只是背结论。

“保存了但数据没变”按链路逐层收敛

先确认请求有没有发出去、响应码和响应体是什么;再看接口是否真的执行了更新、affected rows 是不是 0;接着查事务有没有回滚、条件是否被过滤(where 不匹配会导致更新 0 行)、是不是多数据源或读写分离把写和读分到了不同库;最后看前端是否用了缓存数据、保存后有没有重新取数。顺序就是:请求到没到、SQL 执行没执行、事务提交没提交、页面有没有重新拉取。

AI 交付的代码必须人工验收

让 AI 自己验收,等于用同一套可能出错的判断去检查它自己的产出。至少要做到:逐行看 diff、跑通关键路径、核对边界条件和异常分支。提示词、规则和上下文也不该每次口述,应该沉淀成仓库里的约定——编码规范、上下文文件、可复用的 skill——这样 AI 的输出才稳定、可评审。面试里被追问这一串,考察的其实是你有没有把 AI 用成流程的一部分,而不是一个随用随走的对话框。