杭州某小厂一面

同学你好面试自我介绍吧。

嗯 ,面试官好 ,我叫XXX,是杭州电子科技大学计算机科学与技术的学生。技术上我主攻 Java后端,熟悉 Java基础,并发编程,然后还会 redis MySQl等中间件,熟练使用 spring boot , spring cloud , spring ai等,在校期间我参与了直学通和绘镜两个项目,主要实现了跨断续播、优惠秒杀、 AI助手、任务调度、积分榜单等功能。
然后技术栈上主要是使用了 redis、消息队列等,我还自主经营了技术博客在 CSDN上分享 60多篇。阅读量达到 50,000+。

嗯 ,你刚刚说用的 redis讲到你的 redis的理解呗嗯。

嗯 , redis它就是一个数据库是键值类型的 ,当然它还有很多其他的数据结构。然后我在项目中用到了很多 ,比如说我在直学通中有一个是跨断续播 ,我就是把进度存到 redis中。还有一个呢 ,就是我在榜单中也用到了 redist zset。
我在 AI助手中呢 ,我是用 redis做了它的上下文的存储。那么我在另外一个项目中绘镜 AI呢 ,我是用了 zset去给它做一个任务的队列,就是很多部分我都用到了 redis。

哦 ,那什么样的数据应该放到这个里面,嗯就是在哪些场景适合放到哪。 
Redis使用场景是什么 ?

就是它比较适合于我们第一种就是我们要频繁访问的 ,比如说我要秒杀的话。这些数据他要经常访问我直接去访问数据库的话 ,这个数据库就容易被打穿 ,所以我会给他放到 redis中。
还有一种呢 ,就是说我要需要用到分布式锁,那么我在两个项目中 ,他们都是用到了 redission锁。这个还有一种呢 ,就是说我也可以给他来一点业务上功能。比如说我可以用它的zset来做任务队列 ,这都是可以的。

那你是本质是解决哪方面的问题呢 ?
它和你正常访问 mys sicle差两个之间的区别点是什么 ?

嗯 ,因为它是在内存里面的访问数据比较快 ,然后mysql它是在磁盘里面的。就是更适合持久化。


那如何应对在使用的过程 ,因为它是加载在内存里面嘛 ,在突然间断电或这种一异常情况下如何保证体内存里面还没有写入到持久化长的数据能够保持一致性的这个问题该怎么该怎么去应对嗯 ?

嗯 ,redis它是有持久化机制的一种就是 RDB一种快照 ,一种是 AOF,我们每一次进行一次增删改都给它追加到里面,一般呢 ,他是 AOF有三种机制 ,一种是你增删改一次它就有加入一次。
一种是你 1秒一次一种是你自己来决定。一般开发中呢 ,我们都选择 1秒一次。然后开发选择我们一般是 RDB加 AOF或者你单单就是 AOF。
这样就可以保证它内存里面的数据进行持久化 ,我们也可以对它进行一些集群啊 ,这种啊 ,都可以保证它这个数据的完整性。

还不错 ,可以那你刚刚有提到你这个项目里面这些上面有多一个 AI助理, AI助理我看你这边写了有咨询推荐交易答疑润色每一个环节都是你这边在做的吗 ?

嗯 ,是这样的 ,是我做的 ,然后是嗯 ,我们是用户先发过来一个请求。
然后他会先到一个路由智能体,他会先去识别当前用户它的需求。比如说我用户是要推荐路由智能体就会给我们返回 recommend,然后我们就通过 spring容器去查找 recommend它的智能体就是说不同的功能 ,它是对应了不同的智能体。
每个智能体呢 ,它是有不同的嗯 ,给它配备了不同的 RAG和 toolCalling。

那你这不同的就是你这个 AI这里每一个环节都是有不同的智能体来做的是吧。

嗯 ,然后他们是共享同一个上下文的 ,不是说嗯完全分开的就是说让功能更专一。
那比方说在咨询有一个叫咨询的智能体对吧 ,课程咨询智能体推荐的也是一个推荐的智能体交易也是交易的智能体 。

那这 123455个环节里面都有五个智能体在做这么个事情吗 ?

嗯 ,他就是比如说他们是能让这些智能体做的就让智能体做 ,如果这些智能体他做不了。就让路由智能体他自己来回答 ,因为他本身也是一个智能体嘛。


OK,那这个路由智能体我可以理解我是一个管理这一帮智能体的角色嘛。是的 ,就是说。那那你这个多智能体协作的框架和是基于哪个来写的呢 ?
是基于 spring AI写的吗 ?

springAI比较好的是可以帮我们自动的去管理bean的生命周期。然后他也帮我们封装了很多方法 ,比如说我可以直接往里面嵌入向量库,还有 tool calling,还有说我可以在里面设置系统提示词啊 ,还有上下文的存储啊 ,都是可以做到的 ,因为它都帮我们封装好了嘛。

OK,那就是你对 Spring AI这个模型不他提供的这个 API的调用层面是相对比较熟悉的嘛。那你有有没有了解过这个多智能体里面它封装的原理就是你有你有没有点开 springi里面的原代码去看过呢 ?就它背后的原理层面的东西。

嗯 ,源代码我是没看过的 ,但是大致的流程我还是能知道的。

嗯 ,简单的讲讲看看。

就是如果我们要跟智能体对话的话 ,我们是先将上下文取出来 ,然后再加上用户的回答将他们进行一个向量化。
然后去嗯大模型里面的向量库进行一个匹配 ,然后再给它返回结果。大概就是这样的流程 ,然后如果中间可以识别到可以使用tool ,我们就可以去 toolContext里面拿取方法,或者说你也可以使用到 ES,这些都是嗯 spring AI,他自己帮我们封装好的。(忘记原理了,乱讲的)

OK我大概了我大概了解了,那来咱们来到第二个项目绘镜 AI。这个会进你们有文生图,图生图,姿势生成,画质增强,风格化这这些也全都是你做的吗 ?

嗯 ,因为这个是基于ComfyUI做的嘛 ,然后ComfyUI它每一个生图它都是一个工作流嘛。然后我负责的话就是将工作流嵌入到这个项目里面 ,但是我不是主要开发工作流的设计的。


嗯 ,你是用了ComfyUI去搭建这一一系列的工作流对吧。

不是就是ComfyUI里面的工作流不是我搭建的 ,我负责把它嵌入到我们的项目当中。

那你能不能大概的是如何嵌入的呢 ?

就是这样的 ,因为 ComfyUI它底层是 Stable Diffusion嘛 ,然后它里面是很多个节点工作流。
我们就可以将它抽取为 Json格式 ,然后放到 Freemarker里面 ,然后用户的话它会给我们输入参数 ,然后我们将不同的参数直接嵌入到这个 Json格式里面。就可以再把它放到 redis中 ,我们就可以直接将它运行了 ,就是说其实我们每一个文生图啊 ,或者图生图啊 ,他们都是一个对应的 Json,然后只要我们填入参数之后它就可以运行起来了。

OK那这个图生图纹身图这些东西你那个生图能力背后所用的是哪个 ?
大模型啊 ?

嗯 ,我们用的是Stable Diffusion ,然后 Stable Diffusion呢,它底层就是将英文单词和图片进行映射 ,所以说嗯,我在处理的时候还要把用户的提示词给它翻译成英文 ,否则的话中文提示词。它是没办法很好的去对应生成的。


那就等于是用用了一个开源的嘛 ?

嗯对吧 (不记得了,乱讲的)

那就开源的底层大模大模型这块是你有了解过吗 ?是你这边有去部署它还是别人不好了 ,你直接拿过来用做业务层面的开发。

嗯 ,是直接用别人搞好了的。(乱说的)

好理理解没事啊 ,我就是作为一个简单的了解 ,你也不用太紧张 ,那你综合的说一说你在会进 AI这上面所做的你这边的职责范围内的事情就你只要是做了哪方面的东西。

嗯 ,是这样的 ,当用户会给我们发一个生成图片的请求 ,我负责先把这些参数嵌入到 Freemarker的 Json格式中 ,然后再将它放到 redis中 ,并且我还要对它进行一个积分的扣除,这些积分给它冻结起来之后呢 ,我们就这个请求就直接返回了 ,然后我们再进行一个 spring task定时调用。
因为我们是多台 JVM嘛 ,我们要确保当前嗯当前 JVM它是不会重复消费的 ,所以我还要加上一个 redisson锁。并且我们不是说你抢到这个 redisson锁 ,他就可以直接执行了(还需要用到信号量,讲漏了)。因为 它ComfyUI底层是只有一个任务可以被执行的 ,其他任务都会放在他自己的工作队列。
但是这个工作队列他并不稳定 ,需要我们用嗯用 redis zset去帮他更好的运行起来。那么如果说你 ComfyUI他拿到当前任务之后他就开始执行任务。那么我们执行任务之后呃就是就是我们会有一个长连接嘛。
我们会不断地向ComfyUI发请求给它返回当前的生图进度 ,然后来提醒用户。如果生图好了的话 ,我们会直接直接把当前的生图结果入库。

OK挺好的嗯 ,那讲讲最后再问几个简单的问题啊 ,你作为大一的学生 ,你这么早就来出来找实习找工作你的背后的原因是啥呢 ?
我其实挺好奇的。

嗯 ,主要还是想提升自己的能力吧。

嗯 ,那提升的是想着给自己积攒一些公司这种实际业务项目上的东西能够快速的积积积累自己的实力对吧。

OK,那你对 AI工程师以后这个职业发展上是有有没有一个大概自己的计划呢 ?

嗯 ,我当前看在网上看到的 AI工程师 ,我觉得本质上还是有一点后端开发的吧。然后是在后端开发的基础上增添了很多 AI的新知识。
然后并且也是基于 AI去开发的。 (乱讲的)

OK,那我先简单介绍一下是这样的 ,我不是专门做技术的 ,我原来是技术背景出身的。然后呢 ,接下来等会会有个专门做技术人再来面试一下你我这边是简单的了解一下情况 ,然后我先大致跟你说一下我们团队和公司这边是在做什么事情吧 ,这个可能是你比较感兴趣想知道的点吧

(介绍公司中......)

我这边暂时没有其他的问题 ,我觉得这个还是蛮不错的 ,然后你看你等会还有时间吗 ?
有时间我等会让技术面的关在。继续面试 ,咱们把第二类面试也先面了嗯。

嗯 ,有时间。


行 ,那你稍等一会会儿啊。

二面:

https://www.nowcoder.com/discuss/882702352690470912

#发面经攒人品#
面经分享专栏 文章被收录于专栏

面经分享专栏

全部评论
才注意到,你居然29届,大一啊
4 回复 分享
发布于 05-13 09:00 天津
小厂这个强度。俺无了
1 回复 分享
发布于 05-12 16:07 江苏
感觉有点像天机学堂智能体?
1 回复 分享
发布于 05-11 08:21 山西
大一就开始搞agent了?
点赞 回复 分享
发布于 今天 13:15 浙江
博主用的什么转文字工具
点赞 回复 分享
发布于 05-12 01:46 山东
小厂面试这个强度?
点赞 回复 分享
发布于 05-10 21:33 重庆

相关推荐

xdm 早上喝奶茶差点喷出来。事情是这样的,我们班有个哥们儿,简称 L,去年秋招拿了字节sp,专业方向是后端。我们当时都震惊:这哥们儿平时课上从来不发言,期末小组作业基本是划水的那种,刷题平台 commit记录我点进去看过,绿格子稀稀拉拉。但他面试一路绿灯。一面二面三面 hr 面,全过,给的还是sp。当时班级群里恭喜他的、问他经验的、约饭的,热闹了一周。他说自己"运气好,准备充分"。我们都信了,直到三月初他入职。入职第二周开始,班里另一个进字节的同学W(在隔壁组的)开始跟我他的不对劲。一开始是写代码慢,后来写不出来,再后来是组里 mentor 让他fix 一个简单 bug 都搞了一下午没动静。最离谱的是上周。W 说他们大部门搞了个新人分享会,让新人讲一下自己负责模块的设计思路。L 上去讲了 20分钟,全程念稿子,问答环节别人随便问一个"那你这里为什么用 Redis 不用 Memcached",他直接卡 30秒说"这个我回去再确认一下"。会后他 mentor 直接找 leader 谈,leader 找 hr 谈,hr调出了他面试录像,全程对比口型和回答节奏,发现他二三面有大量时长在偷偷看屏幕外(推测开了双机位 AI 答题)。(这段是 W后来转述给我的,他自己也是听他组里同事八卦来的)昨天下班前,W 告诉我L 被辞退了,让他自己走,不走就走仲裁但会发函到学校。L 现在已经回学校了,朋友圈仅三天可见。我说真的,我不是个心眼小的人,但是我看到这个消息的时候真的有种"嗯,挺好"的感觉。去年秋招我投字节后端,简历挂。我准备了八个月,背 八股 + 刷 500 题 +项目改了三版,连面试机会都没拿到。班里这哥们儿凭着一个外挂上岸,最后还是被甩出来了。不是说作弊就一定会被发现,但是当面试拿到的 offer远远超出真实能力的时候,迟早会有这一天。试用期三个月不是给你过家家的,是真的要写代码、要在会议上回答问题、要扛需求的。我现在反而有点同情他。同情他相信"上岸就是终点"。发出来不是为了嘲笑谁,就是想说给那些正在被身边作弊上岸的同学搞得很 emo 的 uu 们听——别急,回旋镖很长,但它一定会回来。你继续刷你的题,写你的项目,背你的八股。该是你的迟早是你的,不是你的早晚还得还回去。xdm 共勉。
牛客12588360...:我不想评论面试方式,作弊是绝对不对的,但是你八股加刷题也不过是个做题小子,他穿帮纯粹是他菜,你也没有高明到哪里去
点赞 评论 收藏
分享
评论
32
65
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务