上海星丰雨 Java 开发秋招一面:数据同步与 AI 编程实操
- 轮次
- 一面
- 结果
- 通过
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 在用友做的 SAP 与采购商城跨系统数据同步,具体是怎么实现的?
- 同步过程中遇到接口超时,你是怎么处理的?
- 土地交易项目里把一个查询从 800ms 降到 100ms,具体怎么做的?
- 有前端开发经验吗,不是写页面、而是偏逻辑的那种?
- 报表页面用户修改了数据并点击保存,但数据没有变化,一般怎么排查?
- AI 编程方面你主要用 Claude Code、Trae、Cursor 吗?
- 使用 AI 时提示词、规则、上下文和 skill 是自己编写的吗?拿到一个需求你会怎么用 AI?
- AI 交付代码之后,是你人工验收测试,还是让 AI 自己验收测试?
- 反问:一共几轮面试?
- 反问:公司业务是什么?
- 反问:面试评价如何?
《参考解析》
接口超时不能当成”没发生过”
超时只是本地等待结束,下游很可能已经执行成功。所以同步链路上的写操作必须先有幂等键(业务单号加唯一索引)兜底,重试要带退避和次数上限,每次尝试的状态要落表,失败进重试队列或补偿任务。最忌讳的是 catch 住超时异常直接跳过——上游以为失败、下游实际成功,两边数据就此分叉。跨系统同步的常见做法是用本地消息表或事务发件箱记录待发事件,再由后台任务投递并对账。
查询从 800ms 到 100ms,要能说清改了什么
先看执行计划和慢日志,判断瓶颈是扫描行数过多、回表、排序还是 N+1 调用。常见手段是补联合索引让 where + order by 走同一个索引、做成覆盖索引消除回表、把多次单条查询合并成批量查询、去掉 select *,数据量和并发再上来才考虑缓存或预聚合。回答时最好带上改造前后扫描行数与执行计划的变化,否则只是背结论。
“保存了但数据没变”按链路逐层收敛
先确认请求有没有发出去、响应码和响应体是什么;再看接口是否真的执行了更新、affected rows 是不是 0;接着查事务有没有回滚、条件是否被过滤(where 不匹配会导致更新 0 行)、是不是多数据源或读写分离把写和读分到了不同库;最后看前端是否用了缓存数据、保存后有没有重新取数。顺序就是:请求到没到、SQL 执行没执行、事务提交没提交、页面有没有重新拉取。
AI 交付的代码必须人工验收
让 AI 自己验收,等于用同一套可能出错的判断去检查它自己的产出。至少要做到:逐行看 diff、跑通关键路径、核对边界条件和异常分支。提示词、规则和上下文也不该每次口述,应该沉淀成仓库里的约定——编码规范、上下文文件、可复用的 skill——这样 AI 的输出才稳定、可评审。面试里被追问这一串,考察的其实是你有没有把 AI 用成流程的一部分,而不是一个随用随走的对话框。