深圳云泽-AI 应用全栈(Java)

首先声明一下,这是经过AI录音转文字,然后经过AI转化优化过的,不是我自己手敲的,也没有认真核对,大伙就简单看看吧 。然后就是大伙在实习的时候,不要太混了,还是尽量攒攒经验,别给自己养废了😭。

面试完整记录

面试岗位:AI 应用开发(Java 后端方向) 面试类型:技术面 面试官风格:温和、项目驱动型追问


二、自我介绍

面试官:OK,现在你先做一个自我介绍。

求职者:面试官你好,……


三、Java 基础与项目开发流程

面试官:你上一份实习是实习了差不多接近一年是吧?

求职者:对。

面试官:你现在是毕业状态,还是说?

求职者:我的毕业证已经拿到了,应该是算毕业了。

面试官:行。我看你的简历,就是一个技术栈加一个实习经历。那我就按照这两个去给你面。我看你熟悉 Java,Java 是在大学的时候就开始学了吗?学了多少年?

求职者:Java 的话,上大学的时候主流就是当时最火的语言就是 Java,然后我从大二开始主攻 Java。

面试官:Java 有很多技术栈,Spring Cloud、Spring Boot,还有 Spring Cloud 阿里巴巴那一套。你最深入是研究到哪个地方?像 Nacos 那一套熟悉吗?

求职者:Spring Cloud 那一套的话,我目前用的比较少。现在大部分都是单体应用,很少用到,除非说是在公司里面。

面试官:但是在你的经历里面,你做全栈、做架构,这部分会涉及到。你做的架构,就算是单体也涉及不同的架构,它还是会用到一些东西。你说单体,那流量的把控、Nacos 这种——我觉得阿里巴巴那一套,你当时做的是 架构 吗?

求职者:你是说在上一家公司吗?

面试官:你不是说你转到架构部了吗?

求职者:他们是一个低代码框架,主要是他们那一套是微服务的。

面试官:微服务,但是你在架构部,对吧?

求职者:我是去那边帮他们开发一个模块,就是一个工作流编排的模块。

面试官:OK。所以说你 Java 最深入的是了解到哪个点?

求职者:应该是 Spring Boot 最深。因为 Spring Cloud 用的不是很多。


链式调用(Stream 流)

面试官:Java 上的链式调用你熟悉吗?

求职者:链式调用?你是说设计模式还是什么?

面试官:链式调用,就点点点,一条链。

求职者:噢,那个 Stream 流是吧?对,平时写代码的时候会用。

面试官:一般应用在哪些场景?

求职者:比如说按集合来举例,平时查数据时需要对数据进行处理、过滤的时候,就会用到这些。


日志追踪(Trace ID)

面试官:Java 上面还有一些像日志追踪你有使用过吗?就是你在网关层往里面注入一个 ID。你可以说说看,我觉得这种也是比较常用的,它不是说什么很高深的,它就是非常常用的。你可以说说它的原理,如果没有的话就跳过。

求职者:可能还没有。因为我们的项目都是基于公司的那一套低代码进行开发的。

面试官:OK,他们那一套应该是有的。低代码。


MVP(最小可行产品)—— 🔴 面试官当场否定

面试官:那如果老板给你一个需求,你的领导在上一层给了你一个功能模块的需求,你不可能一开始就着手,那肯定会有一个 MVP,对吧?你知道什么是 MVP 吗?你怎么去实现?在接手到这个需求之后,你的下一个动作是什么?你可以把这个动作的闭环讲一讲,不用讲那么细。

求职者:我们这边一般是先把需求拿来进行分析,然后把对应的需要负责的任务列出来,把各个功能模块进行拆分。拆分之后我们对功能模块进行分析,看是怎么一个设计。设计之后基本上就是开始编码。编码完成之后我们需要自己去内测,自己前后端都跑通之后,就交给测试进行测试。测试完了结束之后,就给经理去客户演示,好像是叫 UAT 吧。

面试官:OK,但是你回答错了。我问的是 MVP,你除了 MVP 你讲到了外面去,你错了两个地方。第一个地方是,我只问 MVP 的闭环,你讲到外面去了,根本就没有讲。第二个是,我说 MVP —— 你拿到一个需求,你需要拆解怎么样实现 MVP,你直接跳过了,你根本就没有这个点。

求职者:嗯。


四、RAG 业务深度

面试官:OK,往下。这个我问的 Java 就是偏基础,至少你有基础。那后面我看你上一份实习,上面聊了技术,下面就要聊业务了——RAG,对吧?你这一年都在写 RAG 吗?

求职者:不是,它是写了几个月之后,后面转 AI 全栈。

面试官:那问一些 RAG 的应该会比较熟悉,对不对?

求职者:嗯。


新旧知识替换方案

面试官:你们这里有没有对新旧知识替换的方案?比如我 2025 年的知识,一模一样的,2026 年我更新了那套知识,主题是一样的,我需要替换。这种替换方案是怎样的?

求职者:我们当时的知识主要是涉及客户那边给的一些政策,他们的政策其实是不大会变动的。

面试官:我的意思是如果它变动。

求职者:如果变动的话,我会根据那些带有时间点的关键源数据进行查询。我们的存储是存在向量库里面,这些向量库都有对应的 ID 标识,我们会根据时间点或者比较关键的关键字标识来进行替换。

面试官:关键字标识是指什么?你可以具体一点,不用讲那么抽象,都听得懂。

求职者:就是……

面试官:如果是你,你会怎么做?

求职者:假如说,就拿 Agent 的知识来举例,Agent 的那些设计一直在变化,之前是什么提示词工程……

面试官:我这样,我来个例子。像 Claude 的 Skill,或者 OpenAI 的 Skill。OpenAI 的 Skill 官方文档,2024/2025 年出了第一版,2026 年出了第二版,网页是一样的,主题是一样的,只不过中间可能加了一段话。这样的话,你怎么把新的替换成原来向量数据库里旧的文档?动作是怎样的?

求职者:首先一个前提条件就是我知道它更新了,是吗?

面试官:是,你知道它更新了,你是主动地去确认更新的。

求职者:对。如果更新的话,我们存文档是会有一个文档拆分的,按照段落拆分。每一个分段会有对应的一个标识。如果我知道它更新了,我就把新旧两个文档再重新拆一遍,然后进行对比。如果对比某一块的某一个分段有差异的话,就进行部分的更新。

面试官:有没有其他的方案?我觉得这个方案很笨,而且很低效。你可以再想想有没有其他的方案。你这个就是修改嘛,对吧?

求职者:嗯。

面试官:想到了吗?或者说,直接批量覆盖?

求职者:因为向量库本质就是,如果更新的话,它其实就是删掉老的,然后把新的插进去。

面试官:对呀,那你的动作是怎样的?

求职者:比如说,就针对那条 Skill 的文档,根据那个 Skill 的关键字——它文档应该有一个标题什么的,比如说 OpenAI 的 Skill,然后根据这个关键字去向量搜索一下,搜索出来对应的 ID 标识,然后给它全覆盖的替换。

面试官:OK。


源文件引用与联网搜索

面试官:下一个,你之前做的 RAG,有引用原文件吗?就像 Gemini 或者现在的一些 RAG,它回答下来之后其实会有原文件引用的。这种你们之前的 RAG 有做吗?就是相关链接那种。

求职者:我们的原文件一般都是放在它的字段里面的。

面试官:那你没有引用?你的系统是没有做这个引用。我说的是渲染层,用户的渲染层。

求职者:嗯,对,没有用。

面试官:OK。那有做联网吗?

求职者:联网搜索是吧?它因为是公司内部的,不能用到外网。

面试官:我知道不能用到外网,就是根本没做联网这一套?

求职者:嗯。


Dify 了解深度

面试官:你刚刚说你项目里面还做了类 Dify 这种东西,Dify 你有了解多深?

求职者:Dify 的话,因为我们是照它那个项目做的。它有知识库、文档拆分、分段策略,还有应用问答、召回测试这些。

面试官:你做这个类 Dify,是做了一套 Dify 的东西,还是说用别的应用去包 Dify?

求职者:其实是参照 Dify 的应用去学着做了一套。然后我们自己有一些需求,比如说召回的评分什么的,也是额外做了一些新功能。


五、AI 工具链与 Skill 开发

面试官:OK,下面聊完了技术基础和项目,现在来聊一聊 AI 应用开发。AI 的东西,你平时用什么 AI 工具?

求职者:我自己平时各种工具都会用一下。主要使用的是 CodeBody,就是腾讯出的那个。然后我们公司要求我们用的是 OpenCode,因为 OpenCode 是跟 Claude Code 类似的,但是开源。比如说有什么新出来的 AI 工具,码微斯啊,之前用 CodeBody 之前用的是 Tree。像阿里的 Coder 也用过,但是我觉得它可能不太好用,不是很习惯。像 Codex 最近也在用。

面试官:Codex(当时我读成code叉)。

求职者:Codex。

面试官:为什么不叫 Codex?你是听别人说才用的?

求职者:……(有点无语了)

面试官:OK,还有吗?

求职者:像 Cursor 出来的时候,我知道。因为它最早一批 AI 代理工具,但是当时它那个模型方面好像要用 OpenAI 的模型,我当时也没有用。

面试官:就没有啦?

求职者:嗯。

面试官:那你觉得这些里面哪个最好用?

求职者:编程的话,我觉得还是 OpenCode 比较好用。

面试官:为什么?

求职者:第一个,它在我用的时候,Claude Code 需要配置其他模型的话是比较麻烦的,需要借助其他项目的插件。但是 OpenCode 直接修改配置文件就能使用其他厂商的配置。第二个就是它的插件支持的比较多,像 Oh My OpenAgent、Playwright(能读页面)、Pencil(UI 工具),这些工具支持的比较丰富。再一个就是 OpenCode 可视化做得比较好。

面试官:我记得 OpenCode 是不是那个框框的那个东西?

求职者:对,黑色的。


MCP / Skill / Plugin

面试官:AI 工具就难免会聊到 MCP、Skill、Plugin(插件),你对哪一部分更熟悉?

求职者:Skill 吧,因为 Skill 用的比较多。

面试官:你会怎么样用 Skill?你是用别人的还是自己搭?

求职者:Skill 基本上都是用的那一套框架,比如说 SuperPower,或者说 OpenSpec。

面试官:SuperPower 你会用吗?

求职者:SuperPower 当时用了一段时间,但是我们几个人用起来感觉效果不是很理想,就是它的掌控力度不是很好。

面试官:OK。那 Skill 你会自己去做吗?

求职者:会做,但是也是叫 AI 去做的。

面试官:让 AI 去做。有没有实际的场景,或者你的一些实例,可以讲讲?

求职者:当时我们是对比的用 SuperPower 跟 OpenSpec 来进行的。SuperPower 有个特点就是它有一个头脑风暴的模式,我觉得它那个 Skill 是比较好的。但是 OpenSpec 它好像没有这种头脑风暴问答的形式。然后我就在想,要不要把他们两个结合起来,就叫 AI 结合它们的一些 MD 文档进行一个整合。但是这个做的也没有人家官方做的效果理想。

面试官:头脑风暴它,你为什么不用 Agent 组做呢?Sub-Agent,你知道 Sub-Agent 吗?

求职者:我知道。

面试官:为什么不用 Sub-Agent 去做头脑风暴那个东西?

求职者:我们当时了解的模式和知识的就是 SuperPower 支持这个功能。其实我在接触到 AI 代理编程工具之前,我问 AI 的话,有时候我也会这样问,或者说你必须要把你不理解的地方向我提问,这相当于也是一种头脑风暴。


六、AI Agent 编码实践

Prompts 工程化方法

面试官:那你在 prompt 或者说在工程化管理 agent 方面,你的方法是什么?

求职者:首先就是我会规范约束它,比如说我这个模块需要改哪个文档,先约束它的范围,读取文档的范围,不要让它在无关文档上重复查找,影响上下文。第二就是比较平常的告诉它有哪些功能点需要注意,我会提前跟它说好用什么东西。第三就是需要它在执行——比如说编写代码之前——我会让它先把不懂的问题以及模糊的地方先告诉我,以免它自己去用幻觉乱猜。在项目新功能开发之前,我会让它生成一份我想要的技术的文档,然后在 agent.md 的文档中加入这个文档的链接,让它一直保持项目该做成什么样子。

AI 沟通技巧

面试官:OK,那你在跟它沟通的时候有什么技巧?我说的是普通的沟通,你跟它聊天,为了得到你想要的结果,你会有哪些技巧?

求职者:首先还是以目标为导向,跟它沟通的话,不要说一些无关的事。

面试官:但是你给了一个目标,它一定会满足你的目标,而且它说得天花乱坠的,但是目标还是目标,没出来。我说的是这个目标到底是不是高质量的,你怎么去沟通?这个沟通技巧肯定是有的。

求职者:可能,如果说多 Agent 的话,我会让它们相互评判一下。

面试官:……(他有点无语了)


模型与工具选择

面试官:那你平时为什么不用 Claude Code、Codex?

求职者:Claude Code 它之前配置其他模型是比较麻烦的,只能用它们厂商的模型。Codex 也是一样,只能用 OpenAI 的模型。

面试官:你现在是直接去接官方吗?

求职者:我直接接了 DeepSeek。

面试官:都是接 DeepSeek 是吧?

求职者:对。可能 GLM5 我会接一下。


Playwright

面试官:我听到你刚刚说了一个叫 Playwright,你会用吗?

求职者:这个是一个 MCP 的插件,需要先让 Agent 让工具安装,安装了之后使用。

面试官:Playwright 你确定是 MCP 吗?

求职者:它也可以是 Skill,都有。

面试官:你用它是怎样用的?

求职者:当你想做前端,或者说想进行测试的时候,想让 AI 帮你去测,或者你自己点的效果跟 AI 收的效果不一样,你就让 AI 去用这个工具,在浏览器上走一遍。

面试官:你就只是用在这个范围,你没有围绕它去做文章是吧?

求职者:嗯。

面试官:那你说不管是 MCP 还是 Skill,你知道 Playwright 的底层是什么吗?

求职者:它不是 Selenium 的一个浏览器自动化的东西。

面试官:那它底层是什么?

求职者:你是说语言还是什么?

面试官:可以偏这样去想,那下面是什么?

求职者:下面其实你安装它的话,要安装 Node,它用 NPM 工具去启动。

面试官:那不就是一个库吗?

求职者:嗯,对。

面试官:它这个库,那你跟 Skill 和 MCP 有没有一样的关系?你直接写也能写。就是你直接写伪代码,它也会自行依靠 Playwright 的一个代码,它根本就不需要 Skill 或者 MCP。

求职者:嗯,方便 AI 去调用。你也可以直接跟 AI 说运行某个命令,让它去启动 Playwright,你不加 Skill 或者 MCP 的话。

面试官:对啊,你前面加 Python,它也有。你加 Node,它也有。


七、面试结束

面试官:OK,我这边问的就差不多了,那你有什么想问的?

求职者:首先就是想对这个面试的表现的评价,能不能说一下?

面试官:不能这样偷题的,不允许这样。

求职者:哦,还没到最后是吧?

面试官:对,现在是技术,后面还有业务面。

求职者:哦。然后我想了解一下公司做的项目,这个岗位负责的内容。

面试官:在网上我跟你说过的,我们人事先跟你沟通然后收简历,我有跟你说过我们的需求。

求职者:就是我想再了解一下。

面试官:主要是 AI 应用落地,AI 应用企业落地。我想了解一下你的想法,你觉得 AI 啊,你知道 B 端跟 C 端吧?你觉得它在 C 端还是 B 端更有用?

求职者:应该都挺有用的。

面试官:那你按照你之前来说,你之前那个公司是 C 端还是 B 端?

求职者:B 端吧。

面试官:那为什么你觉得都一样,你又没有接触过 C 端?你觉得 C 端也有魅力?

求职者:我之前那个公司,其实也做过客服,客服应该是面向 C 端的。

面试官:那它们占比五五分,你觉得?

求职者:一般来说,像 AI 这种东西,大厂做给客户用的比较多,那应该是 C 端。但是企业里面也有很多需要用这种 AI 工具来提效的。差不多五五分吧。

面试官:嗯。但如果我们做的是类 C 端的 B 端产品,就是服务对象是 B 端,但是是朝着 C 端的方向去做,你能理解吗?同时它不是一个 AI 应用……我可以跟你讲,AI 应用如果往下面分,它其实不是你传统那种。


后续接近面试结束,记录不知道为什么丢失了。基本到这里就结束了,一两天了也没有消息,哎。

总体感觉就是基础很不牢,全靠八股,然后思想灵活性方面也不是很好,第一次被面试官说笨😭,在上家公司还是待的太舒服了,尽管做的项目是rag项目,但是也是自己想怎么做,或者参考什么什么做,没有想太多。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
左拿
下载 APP