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