面灵AI

广电数科 Java开发实习生面经

时间
2026-09
来源
牛客网

《面试题目》

  1. 在线教育助手从用户输入到模型回答的完整链路如何实现?
  2. 循环校对始终达不到阈值时应该怎么办?
  3. 知识库如何初始化,如何评估召回率?
  4. 大模型流式输出如何实现?
  5. 调用大模型 API 响应慢时如何处理?
  6. 用户重复预约或重复点赞如何避免?
  7. Redis 何时写入数据库,如何保证缓存与数据库一致?
  8. 如何让后端每 15 秒自动向前端推送信息?
  9. 对话轮次过多产生千万级数据量时如何处理?
  10. Java 高并发场景如何解决,线程池有哪些基本参数?
  11. 服务运行中突然卡顿、OOM 或频繁 GC 时如何排查?
  12. 如何设计 SQL 查询每个班级的学生数量?
  13. 策略模式在项目中如何使用?

《参考解析》

  1. 请求先经过鉴权、限流和参数校验,再检索权限范围内的知识片段,拼接上下文后调用模型;模型输出通过流式通道返回,工具调用和敏感操作还要经过服务端校验。
  2. 设置最大迭代次数和总耗时,记录每轮差异;达到上限仍不满足时返回当前最佳结果并标记需要人工复核,不能无限循环占用资源。
  3. 初始化时解析文档、切分并生成向量,写入向量库和元数据表。召回率应使用带标准答案的评测集计算,并持续观察不同切分和召回策略的变化。
  4. 使用支持流式响应的模型接口,在服务端按 token 或片段读取结果,通过 SSE 或 WebSocket 推送给前端;连接断开时要支持取消和资源回收。
  5. 设置超时、重试和熔断,优先采用流式返回降低首字节延迟;超时后记录完整错误并向用户返回可重试状态,不能无限重试。
  6. 预约和点赞请求使用业务唯一键做幂等约束,数据库唯一索引或 Redis 原子操作保证并发下只成功一次。
  7. 通常先提交数据库事务,再删除缓存;删除失败通过重试或消息补偿。对强一致要求的场景应直接读库或采用带版本的更新策略。
  8. 短轮询可按 15 秒请求一次;实时性要求更高时使用 SSE/WebSocket,并由服务端心跳、断线重连和连接上限保护稳定性。
  9. 历史消息按会话和时间分区,冷热分层并归档旧数据;查询只取必要窗口,摘要代替早期上下文,避免单表无限膨胀。
  10. 线程池核心参数包括核心线程数、最大线程数、阻塞队列、空闲存活时间和拒绝策略。CPU 密集与 IO 密集任务应分池,参数需结合监控压测调整。
  11. 先看监控确认 CPU、内存、GC 和线程数,再用线程栈、堆转储和 GC 日志定位热点;通过限流、修复泄漏、调整对象生命周期和线程池恢复服务。
  12. 使用 SELECT class, COUNT(*) FROM student GROUP BY class,若需按年级区分则把年级加入选择列和 GROUP BY
  13. 将稳定流程与可变算法拆开,为每种业务定义独立策略并通过工厂或注册表选择;新增策略无需修改原有分支,便于测试和灰度。