文章目录前言面试官到底想听什么我的面试现场回答第一步前端和网关第二步Agent大脑开始运转第三步MCP工具调用第四步第二次LLM调用第五步返回前端与幕后工作第六步异常情况异常一天气服务挂了异常二用户拒绝审批面试复盘为什么我能拿offer加分点一分层清晰加分点二强调两次LLM调用加分点三提到MCP细节加分点四主动讲异常处理一句话总结P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01前言前阵子我去面一家公司的全栈工程师岗位面试官看着我简历上写的精通AI Agent突然问了一句“假设用户在你的AI Agent产品上问’今天天气怎么样’请你从头到尾讲一下发生了什么。”我当时心里咯噔一下。这问题听起来就像你去医院医生问你今天感觉怎么样——表面上是个寒暄实际上人家在给你把脉呢。我心想问天气我打开窗户看看不就完了吗但看着面试官那意味深长的微笑我知道事情没那么简单。后来我才明白这道题根本不是考你知不知道今天几度。它是考你能不能把一个看似简单的问题讲出8000字论文的深度。就像你问女朋友晚上吃什么她能从吃火锅这个话题延伸到你上个月忘了纪念日、你不关心她、以及你们是不是不合适。面试官要的就是这种从一个点挖出一片海的能力。面试官到底想听什么说实话刚开始我以为面试官在考我气象学知识。我还差点跟他讲什么冷锋暖锋对流层。后来一琢磨人家考察的是五个维度系统架构、Agent原理、MCP协议、工程落地、沟通表达。这五个词往那一摆就像火锅里的五种底料少一个味道都不对。最狠的是这道题能一眼看出你是调包侠还是做过产品的。调包侠会讲调用API获取天气然后返回做过产品的会讲前端怎么打包、网关怎么限流、LLM怎么决策、MCP怎么通信、异常怎么处理。这差距就像你问一个人会不会做饭一个人说会煮泡面另一个人说会颠勺会控火会摆盘——都是做饭但价格不一样。我的面试现场回答我深吸一口气开始表演。首先我说“面试官你好我假设我们的Agent产品后端用TypeScript Node.js通过MCP协议集成了天气插件支持多轮对话和工具调用用户已经登录且会话ID有效。”面试官微微点头。这一步叫定边界就像你搬家前先量好房间尺寸不然沙发买大了进不了门。很多人面试一上来就瞎讲讲到一半发现哎我刚才假设的是HTTP现在怎么变成WebSocket了那就尴尬了。这就像你跟朋友约饭先说好吃火锅到了地方人家问你不是说要吃日料吗你当场社死。第一步前端和网关用户在前端输入今天天气怎么样点击发送。前端立刻进入正在思考状态一个loading动画开始转圈圈。说实话这个动画是我见过最会演戏的UI组件——它明明啥也没想就是在等后端回复但它转得特别认真仿佛在告诉用户我正在用大脑思考人生。请求发到后端先过API网关。网关做三件事认证、限流、校验。认证就是看你的JWT令牌是不是伪造的限流就是看你是不是一秒钟发了100条消息想当复读机校验就是看你的消息是不是空的——毕竟有人可能手滑点了发送结果发了个寂寞。这三关过了请求才能进Agent运行时。这就像你去公司上班先刷卡过闸机再测体温再检查有没有带工牌。少一样保安大哥都不让你进。很多系统被攻击就是因为网关这层没做好让坏人直接冲到了核心代码面前那场面就像演唱会没安检粉丝直接冲上台抱住了歌手。第二步Agent大脑开始运转Agent运行时是整个系统的大脑。它脑子里装着几样东西系统Prompt告诉LLM你是个助手可以查天气、工具注册表、预加载好的MCP客户端、以及当前会话的历史记录。然后进入第一次LLM调用也就是决策阶段。Agent把用户消息、系统Prompt、历史记录拼在一起发给LLM同时把工具列表也传过去。LLM一看用户问天气但没说城市。这时候如果历史记录里有过我在北京LLM就会直接决策调用get_weather参数是北京。这里有个关键点LLM不是硬编码去调工具而是自己决定要不要调。这就像你让助理去订外卖助理不会听到我饿了就直接下单而是会问你想吃什么、送到哪、要不要加辣。LLM这个决策能力是Agent和传统的if-else调API最大的区别。传统的代码就像你写了个脚本“如果用户说天气就调用天气API”结果用户说今天天气真糟糕影响我心情传统代码直接给你返回了温度而LLM会说听起来你今天心情不太好需要聊聊吗。当然如果历史记录里没有城市信息LLM会先反问用户。这就好比你去餐厅说来份招牌菜服务员问你几位、要不要辣、有没有忌口。没有上下文就瞎猜那是算命不是AI。第三步MCP工具调用LLM决定调用get_weather后Agent去工具注册表里找这个工具。因为是MCP插件拿到的是一个MCPToolAdapter。这名字听起来高大上实际上就是个翻译官——它负责把Agent的语言翻译成MCP Server能听懂的语言。调用之前还有个安全审批环节。查天气一般不需要用户确认属于低风险操作。但如果是转账或者删除数据这种敏感操作Agent会弹个窗问用户你确定吗。这就像我们手机安装APP时弹出的权限请求虽然你从来不看直接点允许但它确实在那儿。真正调用的时候MCP Client通过stdio模式跟weather-server通信。stdio听起来像某种高科技病名实际上它就是标准输入输出。Client把请求写到子进程的标准输入weather-server解析后去请求第三方天气API比如和风天气拿到结果后通过标准输出返回。这个流程就像你问老板要数据老板说问财务你问财务财务说问系统你问系统系统说正在查询请稍候。一个天气查了三个部门最后告诉你北京22度晴。你要是在现实公司这么查个天气早被优化了。但在AI系统里这种分层解耦是架构优雅的表现。MCP Client把结果包装成统一的ToolResult返回给AgentAgent把这条结果追加到消息数组里role是tool。这时候消息数组里有四条记录系统指令、用户问题、Assistant请求调工具、工具返回的数据。第四步第二次LLM调用现在进入第二次LLM调用也就是生成最终回复。这次不传工具列表了因为已经不需要再调工具。LLM看到工具返回的北京22°C晴不会直接说北京22°C晴而是会翻译成今天北京天气晴温度22°C很适合出门走走。你发现没有LLM比我还会聊天。我要是有这情商也不至于单身到现在。它能把干巴巴的数据变成有温度的人话这就是第二次LLM调用的意义。很多人以为Agent就是调API然后把结果拼到回复里那是ChatGPT插件时代的思维。真正的Agent是两次LLM一次决策一次翻译。这两次调用的区别就像你去医院第一次是医生给你开检查单决策第二次是医生拿着检查报告给你解释病情翻译。你不能让医生一边看病一边做B超那场面太混乱了。第五步返回前端与幕后工作Agent把最终回复通过WebSocket发回前端前端停止正在思考动画把文字渲染出来。用户看到今天北京天气晴温度22°C很适合出门走走满意地点了点头。但用户不知道的是在他看不到的地方系统正在疯狂996记录完整日志、更新Redis缓存、给监控上报指标、如果是敏感操作还要写审计日志。这就像你收到外卖时骑手笑着跟你说祝您用餐愉快你不知道他刚才为了赶时间闯了两个红灯、爬了八层楼、还被保安拦了五分钟。前端展示的是岁月静好后端是负重前行。第六步异常情况以上都是正常路径。我还主动跟面试官补充了两个异常场景这叫加分项。异常一天气服务挂了MCP Client调用超时Agent捕获异常后把错误信息返回给LLM。LLM生成天气服务暂时不可用请稍后再试。你看LLM比程序员会甩锅。程序员遇到bug会说在我电脑上没问题LLM会说服务暂时不可用——这情商绝了。异常二用户拒绝审批如果天气查询配置了需要审批用户点了拒绝Agent会告诉LLM用户拒绝了工具调用LLM就会回复请允许我获取位置信息以便为您提供服务。这语气比客服还温柔。要是现实中的拒绝都能这么优雅我上次拒绝亲戚借钱也不至于被拉黑。面试复盘为什么我能拿offer整个回答控制在8分钟面试官频频点头。后来我复盘觉得有几个加分点值得分享。加分点一分层清晰我没有一上来就讲LLM细节而是从前端→网关→Agent→MCP→两次LLM→返回→异步任务这条线讲。这就像你给朋友介绍对象不会一上来就说这人腰间盘突出而是先说人挺靠谱、工作稳定、性格好层层递进。加分点二强调两次LLM调用很多新手以为Agent就是调工具然后把结果拼回去。实际上第一次LLM是决策第二次是翻译。把这个讲清楚面试官就知道你是真懂而不是看了篇软文就来面试的。加分点三提到MCP细节不是只说用了MCP而是讲了stdio、JSON-RPC、子进程、预加载。这些细节就像你跟女生约会不是只说我请你吃饭而是说我知道一家藏在巷子里的私房菜老板是四川人毛血旺特别正宗——细节决定成败。加分点四主动讲异常处理正常流程谁都会讲但你能补充服务挂了怎么办“用户拒绝怎么办”面试官会高看你一眼。这就像相亲时对方问你有什么缺点你说我有时候太追求完美——虽然有点装但确实加分。一句话总结从用户输入到最终回复核心是两次LLM调用第一次决策要不要用工具第二次把工具结果翻译成人话。中间通过MCP协议解耦工具调用通过预加载和审批机制兼顾性能和安全性。如果你能把这句话说清楚再加上分层细节这道题基本就稳了。当然前提是你真的做过而不是背下来的。毕竟面试官也不是傻子你背得再熟他多问两句那如果MCP Server是用Python写的怎么调试你就露馅了。最后送大家一句话面试就像谈恋爱真诚才是必杀技。你可以准备可以演练但别表演过头。技术这行会就是会不会就是不会装出来的自信就像没有根基的楼房风一吹就倒。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01
一道天气问题吃透Agent架构:从前端网关到MCP工具调用完整面试详解
发布时间:2026/6/3 6:32:39
文章目录前言面试官到底想听什么我的面试现场回答第一步前端和网关第二步Agent大脑开始运转第三步MCP工具调用第四步第二次LLM调用第五步返回前端与幕后工作第六步异常情况异常一天气服务挂了异常二用户拒绝审批面试复盘为什么我能拿offer加分点一分层清晰加分点二强调两次LLM调用加分点三提到MCP细节加分点四主动讲异常处理一句话总结P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01前言前阵子我去面一家公司的全栈工程师岗位面试官看着我简历上写的精通AI Agent突然问了一句“假设用户在你的AI Agent产品上问’今天天气怎么样’请你从头到尾讲一下发生了什么。”我当时心里咯噔一下。这问题听起来就像你去医院医生问你今天感觉怎么样——表面上是个寒暄实际上人家在给你把脉呢。我心想问天气我打开窗户看看不就完了吗但看着面试官那意味深长的微笑我知道事情没那么简单。后来我才明白这道题根本不是考你知不知道今天几度。它是考你能不能把一个看似简单的问题讲出8000字论文的深度。就像你问女朋友晚上吃什么她能从吃火锅这个话题延伸到你上个月忘了纪念日、你不关心她、以及你们是不是不合适。面试官要的就是这种从一个点挖出一片海的能力。面试官到底想听什么说实话刚开始我以为面试官在考我气象学知识。我还差点跟他讲什么冷锋暖锋对流层。后来一琢磨人家考察的是五个维度系统架构、Agent原理、MCP协议、工程落地、沟通表达。这五个词往那一摆就像火锅里的五种底料少一个味道都不对。最狠的是这道题能一眼看出你是调包侠还是做过产品的。调包侠会讲调用API获取天气然后返回做过产品的会讲前端怎么打包、网关怎么限流、LLM怎么决策、MCP怎么通信、异常怎么处理。这差距就像你问一个人会不会做饭一个人说会煮泡面另一个人说会颠勺会控火会摆盘——都是做饭但价格不一样。我的面试现场回答我深吸一口气开始表演。首先我说“面试官你好我假设我们的Agent产品后端用TypeScript Node.js通过MCP协议集成了天气插件支持多轮对话和工具调用用户已经登录且会话ID有效。”面试官微微点头。这一步叫定边界就像你搬家前先量好房间尺寸不然沙发买大了进不了门。很多人面试一上来就瞎讲讲到一半发现哎我刚才假设的是HTTP现在怎么变成WebSocket了那就尴尬了。这就像你跟朋友约饭先说好吃火锅到了地方人家问你不是说要吃日料吗你当场社死。第一步前端和网关用户在前端输入今天天气怎么样点击发送。前端立刻进入正在思考状态一个loading动画开始转圈圈。说实话这个动画是我见过最会演戏的UI组件——它明明啥也没想就是在等后端回复但它转得特别认真仿佛在告诉用户我正在用大脑思考人生。请求发到后端先过API网关。网关做三件事认证、限流、校验。认证就是看你的JWT令牌是不是伪造的限流就是看你是不是一秒钟发了100条消息想当复读机校验就是看你的消息是不是空的——毕竟有人可能手滑点了发送结果发了个寂寞。这三关过了请求才能进Agent运行时。这就像你去公司上班先刷卡过闸机再测体温再检查有没有带工牌。少一样保安大哥都不让你进。很多系统被攻击就是因为网关这层没做好让坏人直接冲到了核心代码面前那场面就像演唱会没安检粉丝直接冲上台抱住了歌手。第二步Agent大脑开始运转Agent运行时是整个系统的大脑。它脑子里装着几样东西系统Prompt告诉LLM你是个助手可以查天气、工具注册表、预加载好的MCP客户端、以及当前会话的历史记录。然后进入第一次LLM调用也就是决策阶段。Agent把用户消息、系统Prompt、历史记录拼在一起发给LLM同时把工具列表也传过去。LLM一看用户问天气但没说城市。这时候如果历史记录里有过我在北京LLM就会直接决策调用get_weather参数是北京。这里有个关键点LLM不是硬编码去调工具而是自己决定要不要调。这就像你让助理去订外卖助理不会听到我饿了就直接下单而是会问你想吃什么、送到哪、要不要加辣。LLM这个决策能力是Agent和传统的if-else调API最大的区别。传统的代码就像你写了个脚本“如果用户说天气就调用天气API”结果用户说今天天气真糟糕影响我心情传统代码直接给你返回了温度而LLM会说听起来你今天心情不太好需要聊聊吗。当然如果历史记录里没有城市信息LLM会先反问用户。这就好比你去餐厅说来份招牌菜服务员问你几位、要不要辣、有没有忌口。没有上下文就瞎猜那是算命不是AI。第三步MCP工具调用LLM决定调用get_weather后Agent去工具注册表里找这个工具。因为是MCP插件拿到的是一个MCPToolAdapter。这名字听起来高大上实际上就是个翻译官——它负责把Agent的语言翻译成MCP Server能听懂的语言。调用之前还有个安全审批环节。查天气一般不需要用户确认属于低风险操作。但如果是转账或者删除数据这种敏感操作Agent会弹个窗问用户你确定吗。这就像我们手机安装APP时弹出的权限请求虽然你从来不看直接点允许但它确实在那儿。真正调用的时候MCP Client通过stdio模式跟weather-server通信。stdio听起来像某种高科技病名实际上它就是标准输入输出。Client把请求写到子进程的标准输入weather-server解析后去请求第三方天气API比如和风天气拿到结果后通过标准输出返回。这个流程就像你问老板要数据老板说问财务你问财务财务说问系统你问系统系统说正在查询请稍候。一个天气查了三个部门最后告诉你北京22度晴。你要是在现实公司这么查个天气早被优化了。但在AI系统里这种分层解耦是架构优雅的表现。MCP Client把结果包装成统一的ToolResult返回给AgentAgent把这条结果追加到消息数组里role是tool。这时候消息数组里有四条记录系统指令、用户问题、Assistant请求调工具、工具返回的数据。第四步第二次LLM调用现在进入第二次LLM调用也就是生成最终回复。这次不传工具列表了因为已经不需要再调工具。LLM看到工具返回的北京22°C晴不会直接说北京22°C晴而是会翻译成今天北京天气晴温度22°C很适合出门走走。你发现没有LLM比我还会聊天。我要是有这情商也不至于单身到现在。它能把干巴巴的数据变成有温度的人话这就是第二次LLM调用的意义。很多人以为Agent就是调API然后把结果拼到回复里那是ChatGPT插件时代的思维。真正的Agent是两次LLM一次决策一次翻译。这两次调用的区别就像你去医院第一次是医生给你开检查单决策第二次是医生拿着检查报告给你解释病情翻译。你不能让医生一边看病一边做B超那场面太混乱了。第五步返回前端与幕后工作Agent把最终回复通过WebSocket发回前端前端停止正在思考动画把文字渲染出来。用户看到今天北京天气晴温度22°C很适合出门走走满意地点了点头。但用户不知道的是在他看不到的地方系统正在疯狂996记录完整日志、更新Redis缓存、给监控上报指标、如果是敏感操作还要写审计日志。这就像你收到外卖时骑手笑着跟你说祝您用餐愉快你不知道他刚才为了赶时间闯了两个红灯、爬了八层楼、还被保安拦了五分钟。前端展示的是岁月静好后端是负重前行。第六步异常情况以上都是正常路径。我还主动跟面试官补充了两个异常场景这叫加分项。异常一天气服务挂了MCP Client调用超时Agent捕获异常后把错误信息返回给LLM。LLM生成天气服务暂时不可用请稍后再试。你看LLM比程序员会甩锅。程序员遇到bug会说在我电脑上没问题LLM会说服务暂时不可用——这情商绝了。异常二用户拒绝审批如果天气查询配置了需要审批用户点了拒绝Agent会告诉LLM用户拒绝了工具调用LLM就会回复请允许我获取位置信息以便为您提供服务。这语气比客服还温柔。要是现实中的拒绝都能这么优雅我上次拒绝亲戚借钱也不至于被拉黑。面试复盘为什么我能拿offer整个回答控制在8分钟面试官频频点头。后来我复盘觉得有几个加分点值得分享。加分点一分层清晰我没有一上来就讲LLM细节而是从前端→网关→Agent→MCP→两次LLM→返回→异步任务这条线讲。这就像你给朋友介绍对象不会一上来就说这人腰间盘突出而是先说人挺靠谱、工作稳定、性格好层层递进。加分点二强调两次LLM调用很多新手以为Agent就是调工具然后把结果拼回去。实际上第一次LLM是决策第二次是翻译。把这个讲清楚面试官就知道你是真懂而不是看了篇软文就来面试的。加分点三提到MCP细节不是只说用了MCP而是讲了stdio、JSON-RPC、子进程、预加载。这些细节就像你跟女生约会不是只说我请你吃饭而是说我知道一家藏在巷子里的私房菜老板是四川人毛血旺特别正宗——细节决定成败。加分点四主动讲异常处理正常流程谁都会讲但你能补充服务挂了怎么办“用户拒绝怎么办”面试官会高看你一眼。这就像相亲时对方问你有什么缺点你说我有时候太追求完美——虽然有点装但确实加分。一句话总结从用户输入到最终回复核心是两次LLM调用第一次决策要不要用工具第二次把工具结果翻译成人话。中间通过MCP协议解耦工具调用通过预加载和审批机制兼顾性能和安全性。如果你能把这句话说清楚再加上分层细节这道题基本就稳了。当然前提是你真的做过而不是背下来的。毕竟面试官也不是傻子你背得再熟他多问两句那如果MCP Server是用Python写的怎么调试你就露馅了。最后送大家一句话面试就像谈恋爱真诚才是必杀技。你可以准备可以演练但别表演过头。技术这行会就是会不会就是不会装出来的自信就像没有根基的楼房风一吹就倒。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01