实习生面试记录

📅 2026/7/22 17:49:40 👁️ 阅读次数 📝 编程学习
实习生面试记录

一、基本信息

项目内容
候选人姓名郑**
面试岗位后端开发工程师(实习生)
面试时间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 参数传递sessionIduserId,并在连接建立后维护会话标识与连接的映射关系。基于 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 技术停留在概念了解层面,缺乏完整落地的实操经验

四、面试结论

综合评定:推荐通过本轮面试,进入下一轮。

补充说明

经面试官现场综合评估,候选人虽在基础知识方面存在若干短板,但具备以下核心竞争力:

  1. 项目实践经验丰富:三个项目均由个人独立完成,涵盖 AI 应用、实时协作、博客系统等多个领域
  2. AI 应用开发有落地:Function Calling、SSE 流式输出、向量检索等关键技术有实际操作经验
  3. 技术视野较好:技术栈覆盖前后端、数据库、DevOps 等多个领域
  4. 学习意愿强烈:当前技术栈以自学为主,具备独立解决问题的能力

基础知识短板可通过入职后系统学习快速补齐,建议安排后续面试或 HR 环节进一步沟通入职意向。

六、面试官建议

建议候选人在入职前优先补充以下内容:

  1. Python 基础:装饰器、生成器的原理与应用场景
  2. Docker 容器化:Dockerfile 和 Docker Compose 的独立编写能力
  3. 数据库基础:索引数据结构、缓存三大问题(穿透/击穿/雪崩)的准确定义与解决方案
  4. 向量数据库:ChromaDB 或 Milvus 的实际使用,以及 RAG 完整流程的落地实践