Java实习模拟面试|上海网* Java开发实习生面经:聚焦AI集成、Spring生态与国产数据库实战
关键词:Java后端实习|Spring Boot|大模型集成|Embedding|MyBatis-Plus|国产数据库|HR+技术双面
适合人群:准备投递政企类/转型AI方向企业的Java实习生,尤其关注AI + 后端融合开发的同学
前言
最近我参加了一场针对上海某知名政企软件公司(简称“上海网”)* 的 Java 开发实习生岗位的完整模拟面试,包含15分钟 HR 面 + 40分钟 技术面。整场面试风格务实,既考察基础工程能力,又高度聚焦AI 应用落地(如大模型调用、知识库构建、PDF 解析等),并透露出公司正在向智能政务系统转型的战略方向。
本文将严格按照“面试官提问 + 模拟回答(结合计科专业知识)+ 连环追问”的形式还原真实场景,帮助大家提前熟悉此类“传统软件企业 + AI 新兴方向”的复合型岗位要求。
一、HR 面环节(15分钟)
Q1:请说明您目前就读的学校和专业背景,以及入学方式。
我的回答:
我目前就读于 XX 大学计算机科学与技术专业,是通过普通高考统招录取的。我们学校属于省属重点高校,计算机专业为国家级一流本科专业建设点。
Q2:您是通过异地高考进入学校的吗?当时是以什么分数线录取的?
我的回答:
不是异地高考,我是本省考生。当年以超出一本线 65 分的成绩被录取,专业录取最低分为全省前 8%。
💡注:HR 关注生源稳定性与学习能力,如实回答即可。
Q3:您在校期间的专业排名情况如何?是否有参与社团或学生会组织?
我的回答:
目前 GPA 3.7/4.0,专业排名前 15%。大二起担任学院“智能软件开发社”技术部负责人,组织过多次编程 workshop 和 Hackathon 活动。
Q4-Q5:社团活动是否与专业相关?具体做了哪些开发工作?
我的回答:
高度相关!社团主要围绕AI 应用开发展开。我主导开发了两个项目:
- 一个基于 Flask 的校园问答机器人(集成本地 LLM);
- 一个使用 Spring Boot + Vue 的课程资源共享平台(含权限控制、文件上传解析)。
此外,我也喜欢研究开源项目,业余时间会复现一些 LangChain 的 Demo。
Q6-Q7:上一段实习经历的时间、内容与公司规模?
我的回答:
今年 6 月到 8 月,在一家 200 人左右的 SaaS 初创公司实习,担任后端开发助理。主要负责:
- 用户认证模块优化(JWT + Redis 缓存);
- 使用 Kafka 实现订单状态异步通知;
- 编写 MyBatis-Plus CRUD 接口并做单元测试。
Q8-Q10:职业规划、对公司业务的理解、转正与到岗意愿?
我的回答:
- 学业规划:明年毕业,计划边实习边完成毕业设计(方向为 RAG 系统优化);
- 职业规划:希望深耕 Java 后端,尤其在AI 工程化落地领域积累经验;
- 对公司了解:了解到贵司长期承接政府信息化项目,如智慧政务、数据中台等,近期也在探索 AI 赋能(如智能问述、知识库检索),这与我的兴趣高度契合;
- 到岗与转正:可保证每周 5 天全勤,最快下周即可到岗,非常期待转正机会。
Q11-Q13:通勤、到岗时间、试用期制度 & 反问
我的回答:
- 目前住在上海 XX 区,地铁通勤约 35 分钟;
- 对试用期考核制度理解清晰(通常为 2-3 个月,考核代码质量、任务完成度、协作能力);
- 反问环节:主动询问了 AI 应用的具体场景(见文末总结)。
✅HR 面核心逻辑:稳定性 + 匹配度 + 沟通意愿。政企类公司尤其看重能否长期投入、是否接受政府项目节奏。
二、技术面环节(40分钟)
项目深挖:在线考试系统 & 智能电子月报
Q1-Q2:考试系统是否独立完成?使用对象是谁?
我的回答:
是独立开发的课程设计项目,面向本校《软件工程》课程的学生,支持教师出题、学生在线答题、自动判分(选择题)和成绩导出。
Q3-Q5:Coze 平台的功能、知识库集成与权限管理?
📌 注:此处“Coze”应指字节跳动推出的 AI 应用开发平台(或类似低代码平台)
我的回答:
- 功能:用于快速搭建智能问答机器人,支持对话流编排、插件调用;
- 知识库:上传了课程 PDF 和 PPT,平台自动切片并生成 Embedding 向量;
- 集成方式:通过 Coze 提供的 API 将用户问题转发至后端,后端拼接上下文后调用其对话接口;
- 权限管理:基于角色(教师/学生)控制知识库访问范围,前端传 token,后端校验角色。
Q6:拦截器、过滤器、Spring AOP 的执行顺序?
我的回答(结合 Servlet 生命周期):
执行顺序为:
Filter(过滤器) → DispatcherServlet → Interceptor(拦截器) → Controller → AOP(环绕通知等)
- Filter:Servlet 容器级别,最早执行,常用于编码、安全头设置;
- Interceptor:Spring MVC 层,可访问 HandlerMethod,适合权限校验;
- AOP:方法调用层面,最晚介入,适合日志、事务、性能监控。
✅ 口诀:“滤器早,拦器中,AOP 最后才动工”。
AI 项目深度追问
Q7-Q9:智能月报是否用 Python?大模型与知识库?
我的回答:
- 核心后端用Spring Boot(Java),但 PDF 解析模块调用了 Python 脚本(通过 ProcessBuilder);
- 大模型使用Qwen-7B-Chat(通义千问开源版);
- 构建了两级知识库:原始 PDF → 文本块 → 向量库(ChromaDB)。
Q10-Q13:PDF 解析、MCP、数据存储与调用?
我的回答:
- PDF 解析:使用
Apache PDFBox提取文本,配合正则清洗格式; - 未使用 MCP(Model Context Protocol),但了解其用于工具调用标准化;
- 数据存储:解析后的文本块存入 MySQL,同时生成 Embedding 存入Chroma 向量数据库;
- 大模型调用:用户提问时,先用相同 Embedding 模型编码问题,在 Chroma 中做相似检索,将 top-3 结果作为上下文注入 prompt,再调用 LLM 生成答案。
Q14-Q20:课程、Java AI 体系、Embedding 模型与部署?
我的回答:
- 主修课程:数据结构、操作系统、计算机网络、数据库原理、软件工程;
- Java AI 熟悉度:熟悉 Spring AI(刚发布)、LangChain4j,能实现 RAG 流程;
- Embedding 技术:了解 Sentence-BERT、text2vec、OpenAI Embedding;
- 实际使用:采用BGE-small-zh-v1.5(中文效果好),通过 HuggingFace Transformers 加载;
- 部署方式:
- 大模型:GGUF 量化后运行在阿里云 ECS(8C32G)上,使用 llama.cpp;
- Embedding 模型:Flask 封装为 REST API,Java 后端 HTTP 调用;
- 向量库:Chroma 单机版,未来考虑 Milvus。
Java 基础 & 框架
Q21:数据来源?爬虫?
我的回答:
知识库数据来自内部文档(PDF/Word),未使用爬虫。若需外部数据,会走合规接口(如政府公开 API)。
Q22-Q24:Spring Boot 版本 & Java 集合框架?
我的回答:
- Spring Boot:3.2.5(支持 Jakarta EE 9+);
- Java 集合框架核心接口:
Collection→List/Set/QueueMap(虽不继承 Collection,但属集合体系)
- 主要实现类:
List:ArrayList(动态数组)、LinkedList(双向链表)→有序;Map:HashMap(无序)、LinkedHashMap(插入有序)、TreeMap(键自然排序)。
Q25-Q30:数据库经验 & MyBatis vs MyBatis-Plus
我的回答:
- 熟悉 MySQL、PostgreSQL,了解 Oracle;
- 项目中主要用 MySQL 8.0;
- MyBatis-Plus 优势:
- 内置 CRUD,减少 XML;
- 条件构造器(LambdaQueryWrapper)类型安全;
- 自动分页、逻辑删除;
- 缺点:复杂 SQL 仍需手写 XML,灵活性略降。
Q31:MyBatis-Plus 如何实现数据脱敏?
我的回答:
可通过自定义 TypeHandler或字段注解 + AOP实现。例如:
@TableName("user")publicclassUser{@TableField(value="phone",typeHandler=PhoneMaskHandler.class)privateStringphone;}或使用@JSONField(serializeUsing = MaskSerializer.class)配合 Jackson。
Web 开发 & Spring MVC
Q32-Q38:线程生命周期、RESTful 参数接收、注解区别
我的回答:
- 线程生命周期:NEW → RUNNABLE → BLOCKED/WAITING/TIMED_WAITING → TERMINATED;
- RESTful 参数接收:
- 路径参数:
@PathVariable - 查询参数:
@RequestParam - 请求体:
@RequestBody(JSON) - 请求头:
@RequestHeader
- 路径参数:
- @Controller vs @RestController:
@RestController = @Controller + @ResponseBody;- 前者返回视图名(需模板引擎),后者直接序列化为 JSON。
Q39:@Autowired 和 @Resource 的区别?
我的回答:
| 特性 | @Autowired(Spring) | @Resource(JSR-250) |
|---|---|---|
| 默认装配方式 | byType | byName |
| 来源 | Spring 框架 | Java 标准 |
| required | 可设为 false | 无此属性 |
| name 指定 | 需配合 @Qualifier | 直接@Resource(name="xxx") |
✅ 实践建议:团队统一风格,避免混用。
三、反问环节 & 公司方向确认
我问:
公司在 AI 开发方面的具体应用场景是什么?实习生是否会涉及前端?
面试官答:
- 公司正在从传统政务系统向AI 赋能转型,重点方向包括:
- 智能知识库检索(政策文件问答)
- 智能问述(用户自然语言生成结构化查询)
- MCP 工具调用(连接外部系统)
- 实习生工作:纯 Java 后端开发,负责接口实现、RAG 流程优化、数据处理,不涉及前端。
总结与建议
这场面试充分体现了“传统软件企业 + AI 新基建”的典型特征:
✅技术栈特点:
- 基础:扎实的 Java、Spring、MySQL;
- 新兴:RAG、Embedding、本地大模型部署;
- 国产化:倾向使用国产数据库(如达梦、OceanBase);
✅给求职者的建议:
- 项目要体现“AI 工程化”能力:不只是调 API,更要懂数据流、向量化、上下文拼接;
- 熟悉国产技术生态:政企项目对国产数据库、中间件兼容性要求高;
- 明确表达稳定性与匹配度:HR 非常看重“能否长期干、是否接受政府项目节奏”。
🌟最后提醒:即使公司当前 AI 应用尚在起步阶段,只要展现出“能快速落地 AI 功能”的工程能力,就是巨大加分项!