实习生面试记录
一、基本信息
| 项目 | 内容 |
|---|---|
| 候选人姓名 | 郑** |
| 面试岗位 | 后端开发工程师(实习生) |
| 面试时间 | 2026年7月21日 09:58-10:30 |
| 面试时长 | 约32分钟 |
| 面试形式 | 线上一对一视频面试 |
二、面试问题与回答记录
(一)Python 基础知识
问题1:请解释 Python 装饰器的概念。
候选人回答:
装饰器类似于“挂”在函数上面的东西,预先写好内容后通过@语法直接使用。其在 Next.js 框架中亦有类似概念,理解与 Python 基本一致。
评价:仅能用比喻说明装饰器的使用方式,未能阐述其本质为高阶函数、涉及闭包等核心原理。理解停留在“如何使用”层面,缺乏对底层机制的认知。
(二)AI 应用开发
问题3:请说明 Function Calling 的调用链路,并举例说明你注册了哪些工具函数。
候选人回答:
通过基础提示词让大模型知晓可用工具,模型输出结构化文本,分为两个通道——一个供用户阅读,一个供后端解析执行,从而实现看板操作。工具函数约二十余个,均通过 AI 辅助编写。
评价:能描述 Function Calling 的基本流程(提示词告知工具 → 模型决策 → 结构化输出 → 后端执行),但对调用链路的细节描述不够深入,未能说明参数 Schema 定义、工具决策依据等关键技术点。
问题4:请说明 SSE 流式输出的技术选型理由,以及与 WebSocket 的区别。
候选人回答:
WebSocket 为双向通信,SSE 为单向通信(服务端至客户端),可实现 AI 对话中逐字输出的“打字机效果”。
评价:能准确区分 SSE 与 WebSocket 的核心差异,并说明 SSE 在 AI 对话场景中的适用性。回答基本正确。
问题5:SSE 如何区分多个并发用户的会话?
候选人回答:通过 IP 地址进行区分。
评价:回答不正确。SSE 区分会话的标准方式为通过 URL 参数传递sessionId或userId,并在连接建立后维护会话标识与连接的映射关系。基于 IP 地址的方案在多用户共享同一公网出口的场景下将产生混淆,不具备工程可行性。
(三)Docker 容器化
问题6:Docker Compose 的 YAML 文件是否由你独立编写?
候选人回答:并非独立编写,主要通过 AI 辅助生成,但能保证其成功运行。对关键参数(端口、镜像、环境变量、账号密码等)有一定了解。
评价:熟悉 Docker Compose 的基本配置项,但独立编写能力存疑,对配置细节的掌握不够扎实。
问题7:是否独立编写过 Dockerfile?
候选人回答:未独立编写过。对 Docker 仅有基础了解,具体编写依赖 AI 工具完成。
评价:Dockerfile 编写能力存在明显短板,基本依赖 AI 工具完成。
(四)Next.js 框架
问题8:你在 Next.js 中使用过哪些渲染模式?
候选人回答:对 SSR、ISR 等渲染模式不了解,仅熟悉 Vue 框架的 MVVM/MVC 模式。
评价:候选人对 Next.js 的理解停留在表层,未能掌握其核心特性(SSR、SSG、ISR),框架深度不足。
(五)向量检索与 RAG
问题9:请说明向量检索的完整工作流程。
候选人回答:
使用 PostgreSQL 的 pgvector 插件,通过调用千问 3.0 Embedding 模型的 API,将文章和搜索词分别转化为向量,实现向量相似度搜索。
评价:能说明向量检索的基本流程(文本 → Embedding API → 向量 → 相似度搜索),对 pgvector 插件有实际使用经验。但对 RAG 的完整流程(文档加载 → 分块 → 向量化 → 存储 → 检索 → 重排序 → 生成)缺乏系统性了解。
(六)项目经验
问题10:请介绍你最熟悉的项目,包括技术选型、个人角色及遇到的最难问题。
候选人回答:
介绍了“Web 多人实时绘画协作平台”。技术选型方面,沿用熟悉的 Vue 3 + Next.js 技术栈,引入 Yjs 解决多人协作数据冲突,选用 Konva.js 作为画布引擎。在项目启动前通过多轮 AI 咨询完成需求分析与技术调研。遇到的主要问题包括画布渲染异常及图片插入失败,通过浏览器控制台日志排查后由 AI 辅助解决。
评价:能清晰说明技术选型的理由和决策过程,体现了一定的工程思维能力。但问题排查过程主要依赖 AI,独立解决问题的能力尚需加强。
问题11:AI 辅助编程是否影响了你的技术深度?如何平衡?
候选人回答:承认在技术深度上确实存在不足,但认为 AI 工具的价值在于拓展技术广度,使开发者能够涉猎更广泛的技术领域。
评价:对 AI 辅助编程的优势与局限性有客观认知,体现了较好的自我反思能力和清晰的自我定位。
问题12:是否有主动学习与课设无关的技术?
候选人回答:当前所学的前后端框架均为自学,非学校课程内容。但博客已有一段时间未持续更新。
评价:具备一定的自学意识和能力,但知识沉淀和持续输出的习惯有待加强。
(七)数据库与缓存
问题13:请列举 Redis 的基本数据类型。
候选人回答:字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)。
评价:回答正确,基本数据类型掌握良好。
问题14:请说明缓存穿透、缓存击穿、缓存雪崩的概念。
候选人回答:
- 穿透:查询的数据不存在于缓存中,每次请求均直达数据库。
- 雪崩:理解存在偏差,误认为是瞬时大量请求绕过缓存直接访问数据库。
评价:对缓存穿透的理解基本正确,对击穿和雪崩的概念较为模糊,未能准确区分三者的差异。经提示后能理解雪崩的核心问题为大量 Key 同时过期。
问题15:请说明数据库查询中笛卡尔积的产生原因。
候选人回答:将笛卡尔积描述为“向量互乘”,但能指出其会导致数据量成倍增长。
评价:表述不够准确,但能理解其核心问题。准确的定义应为:多表查询时未指定有效的连接条件,导致左表每一行与右表每一行逐一组合,结果集规模为两表行数之积。
三、综合评价
优势方面:
- 具备python项目的实践经验丰富,项目覆盖面广且具有一定的技术深度
- 对 Function Calling、SSE 流式输出等 AI 应用技术有实际操作经验
- 具备一定的工程思维,项目启动前能进行需求分析和技术调研
- 学习意愿较强,当前技术栈主要依靠自学完成
- 对 AI 辅助编程的优势与局限有客观认知,自我定位清晰
不足之处:
- Docker 容器化技术依赖 AI 工具完成,独立编写 Dockerfile 和 Compose 文件的能力较弱
- Next.js 框架的核心渲染模式(SSR、SSG、ISR)理解缺失
- RAG 技术停留在概念了解层面,缺乏完整落地的实操经验
四、面试结论
综合评定:推荐通过本轮面试,进入下一轮。
补充说明:
经面试官现场综合评估,候选人虽在基础知识方面存在若干短板,但具备以下核心竞争力:
- 项目实践经验丰富:三个项目均由个人独立完成,涵盖 AI 应用、实时协作、博客系统等多个领域
- AI 应用开发有落地:Function Calling、SSE 流式输出、向量检索等关键技术有实际操作经验
- 技术视野较好:技术栈覆盖前后端、数据库、DevOps 等多个领域
- 学习意愿强烈:当前技术栈以自学为主,具备独立解决问题的能力
基础知识短板可通过入职后系统学习快速补齐,建议安排后续面试或 HR 环节进一步沟通入职意向。
六、面试官建议
建议候选人在入职前优先补充以下内容:
- Python 基础:装饰器、生成器的原理与应用场景
- Docker 容器化:Dockerfile 和 Docker Compose 的独立编写能力
- 数据库基础:索引数据结构、缓存三大问题(穿透/击穿/雪崩)的准确定义与解决方案
- 向量数据库:ChromaDB 或 Milvus 的实际使用,以及 RAG 完整流程的落地实践