当前位置: 首页 > article >正文

互联网大厂Java面试:Spring Boot/Redis/Kafka/K8s 可观测 + RAG(向量检索/Agent)三轮追问实录

互联网大厂 Java 面试实录Spring Boot Redis Kafka Kubernetes RAG向量检索/Agent三轮追问场景某内容社区与UGC平台近期上线“RAG 智能客服”企业文档问答 工单流转并要求支持高并发、可观测、可灰度。人物面试官M严肃、节奏快、喜欢追问“为什么”。小YY自称“全栈Java”实际有点水但很会搞笑。第一轮Java 基础与 Web 入门3-5问Q1MJava 8/11/17 你最常用哪些新特性在我们“UGC内容审核/客服系统”里会怎么用YJava 8 就是……LambdaStream写起来像在写 SQL挺爽的。Java 11/17……我一般用 8兼容性好。MJava 8 用得熟是好事但别把“只会8”当优点。说说你在代码里怎么落地 Stream 的Y比如把用户列表stream().filter()一下……然后就更优雅了。M还行基础没丢。Q2MSpring MVC 和 Spring WebFlux 有什么区别我们智能客服“长连接/流式输出”该选哪个YMVC 是同步阻塞WebFlux 是……反应式就很快M快不快不是口号。背后模型是什么Y呃……就是 ReactorMono/Flux那种“流”。M回答有点虚但方向对。我们后面会追。Q3MHikariCP 为什么普遍比 C3P0 受欢迎你在 Spring Boot 怎么配置连接池参数Y因为……Hikari 轻量、快配置我一般用spring.datasource.hikari.*。M行能说出关键点。比如连接池满了会怎样Y会……排队M至少知道会阻塞/等待。继续。Q4M如果线上出现“接口偶发超时”你第一步看什么日志怎么打Y我先看 ELK再看日志里有没有 error。日志用 SLF4Jlog.info(xxx {}, id)。M参数化日志不错避免字符串拼接。还可以。第二轮微服务、缓存、消息队列业务递进3-5问业务设定UGC平台的“智能客服”接入站内私信与工单。用户提问后系统要先查缓存命中“常见问题”未命中则走 RAG向量检索 LLM 生成生成结果与引用片段落库异步写入 Kafka 做埋点与质检。Q1M你会怎么设计 Redis 缓存结构避免热点 Key 和缓存穿透Y热点 Key 我就加本地缓存 Caffeine穿透就……加布隆过滤器M不错能说到点上。布隆过滤器怎么落地Y就……Guava 有 BloomFilter放 Redis 也行。M思路可以但细节要补。Q2MKafka 和 RabbitMQ 怎么选我们这里“埋点/质检/回放”更适合哪个YKafka 吞吐高RabbitMQ 延迟低我感觉都行看团队喜好。M皱眉“都行”是面试大忌。说出语义顺序、消费模型、回放、消息堆积。YKafka 可以回放按 partition 顺序RabbitMQ 更像传统队列。M这句对了。Q3M你会如何做微服务间调用OpenFeign Resilience4j 怎么配合YFeign 调用很方便Resilience4j 就是限流熔断降级。我一般加个 fallback。Mfallback 只是表面。重试、超时、隔离、舱壁这些怎么选Y看感觉……哪个报错就加哪个。M嗯开始“凭感觉写代码”了。Q4M数据库层MyBatis 和 JPA/Hibernate 你怎么选RAG 结果落库的表会怎么设计Y复杂 SQL 用 MyBatis简单 CRUD 用 JPA。表设计就question、answer、time。M字段太少。引用片段、模型版本、embedding版本、traceId、反馈标签呢Y啊对对对可以再加。M……第三轮云原生可观测 AI 工程化3-5问业务设定升级RAG 客服上线后出现高峰期 P95 延迟抖动偶发“答非所问”幻觉模型供应商切换OpenAI ↔ Ollama/自建需要对接企业知识库支持文档加载与增量更新Q1MKubernetes 上部署 Spring Boot你会重点关注哪些资源与探针怎么做灰度Y资源就 CPU、内存探针有 liveness、readiness灰度用……分批发布M基本点都对。灰度更细一点Service、Ingress、或者 Service Mesh。你再想想。Y可以用 Kubernetes 的 rollout……或者直接手动M行吧。Q2MPrometheus Grafana Micrometer 你会采哪些指标定位“P95抖动”YJVM 指标、GC 指标、线程池指标……还有接口耗时。M继续。你如何区分是“下游慢”还是“GC慢”还是“连接池耗尽”Y我看图……哪个高就哪个。M过于朴素。Q3M链路追踪 Jaeger/Zipkin 怎么把一次“RAG请求”串起来要打哪些 tagYtraceId 串起来span 里面写“检索”和“生成”。M还不够。向量检索命中数、topK、prompt token、completion token、模型名、温度、知识库版本都要。Y这些也能打吗那我都打上。M……打多了也会贵。Q4M谈谈 RAG 的“文档加载→向量化→语义检索→提示填充→生成→引用校验”。你怎么降低幻觉Y幻觉就……让模型别乱说提示词写严格点。M沉默两秒继续。Y加个“如果不知道就说不知道”。M这是入门级。还可以检索质量、chunk策略、引用强约束、回答后验证、以及 Agentic RAG 的工具执行。Y我回去研究一下。Q5MSpring AI / MCP / 工具调用标准化如果要让客服 Agent “查订单、查物流、建工单”你会怎么设计工具接口Y我就写三个接口给它调……M怎么做权限、审计、幂等、防重复下单Y呃……加 Spring SecurityJWTM至少知道安全框架。细节先到这。面试收尾M今天整体看下来你 Java/Spring 基础还可以场景理解也有但在可观测细化、容灾治理、以及 RAG 工程化细节上比较虚。你回去把这些链路再系统补一下我们会综合评估回家等通知。Y好的好的我回去就把“凭感觉”升级成“凭数据”。文末复盘所有问题的详细答案含业务落地下面按三轮问题逐一给出更“能上生产”的回答小白可按此学习与扩展。第一轮答案Java / Web / 连接池 / 日志A1Java 8/11/17 常用特性与落地Java 8Lambda/Stream用于集合处理、DTO转换、过滤排序。Optional减少空指针但避免滥用不要把 Optional 当字段类型。CompletableFuture并行调用如“FAQ缓存查询 热门知识库检索”可并发。Java 11HttpClient替代老旧 HttpURLConnection微服务一般仍用 OkHttp/Apache HC。String/Collection API 增强。Java 17记录类 record适合不可变 DTO如检索结果、Embedding请求响应。switch 表达式、文本块拼 Prompt 更安全可读。UGC/客服落地示例并行CompletableFuture同时拉取“用户画像/历史工单/常见FAQ”最终合并为提示上下文。A2Spring MVC vs WebFlux流式输出怎么选Spring MVCServlet 模型线程-per-request适合传统 CRUD。Spring WebFlux基于 ReactorMono/Flux非阻塞 I/O适合SSE/WebSocket 流式输出LLM token streaming高并发下减少线程占用但需要全链路非阻塞Netty R2DBC/Reactive Redis等选择建议现有系统若大量阻塞组件JPA/JDBC强上 WebFlux 可能“表面Reactive、内部阻塞”。折中方案核心仍 MVC但对“生成回答”单独做 WebFlux/SSE 网关服务或用异步 Servlet chunked response。A3HikariCP 优势与关键参数优势代码路径短、锁竞争少、性能稳定Spring Boot 默认。关键配置maximumPoolSize并发上限结合 DB 连接限制与QPS评估minimumIdle空闲连接connectionTimeout拿不到连接等待多久避免线程无限挂leakDetectionThreshold连接泄露检测排查未关闭连接现象定位接口超时可能来自连接池耗尽activemaximumPoolSize、慢SQL、事务未提交、连接泄露。A4接口偶发超时的排查与日志规范排查优先级指标P95/P99、线程池/连接池、GC、下游依赖延迟日志是否有超时/重试/熔断链路追踪定位慢在网关、服务、DB、MQ、第三方日志实践统一用SLF4J Logback/Log4j2参数化log.info(orderId{}, id)关键链路打印traceId、用户id、请求耗时、下游耗时、错误码注意脱敏手机号、身份证、token。第二轮答案缓存 / MQ / 微服务治理 / ORM与表设计A1Redis 缓存结构 热点Key 穿透缓存目标FAQ命中、检索结果短缓存、会话上下文。设计Key 设计faq:answer:{normalizedQuery}rag:retrieval:{queryHash}短TTL热点 Key本地缓存 Caffeine Redis 二级缓存热点FAQ可以预热。对极热点可用 Redis Cluster Key hash tag、或拆分多Key。缓存穿透布隆过滤器对“FAQ问题集合/知识库文档id集合”做存在性判断。对确实不存在的请求写入空值缓存短TTL避免重复打DB。缓存击穿互斥锁/单飞SETNX或 Redisson Lock确保同一key回源只发生一次。A2Kafka vs RabbitMQ 的选择埋点/质检/回放Kafka更适合高吞吐日志/埋点消费者组并行消息回放按 offset 重放质检长时间堆积磁盘顺序写RabbitMQ更适合复杂路由topic/headers每条消息确认与低延迟队列语义业务命令型消息更强“队列感”本场景建议埋点、质检、对话回放Kafka。工单创建这类强一致命令可用 RabbitMQ 或事务外盒 DB。A3OpenFeign Resilience4j 的治理组合常见组合Feign声明式HTTP客户端Resilience4jTimeLimiter超时Retry谨慎使用只对幂等GET或可重试错误CircuitBreaker熔断防止雪崩Bulkhead舱壁隔离线程池/信号量隔离RateLimiter限流推荐策略客服RAG检索服务超时短如 200-400ms失败可降级“少量topK”或“只走FAQ”。LLM生成超时较长如 3-10s失败返回“转人工/创建工单”。对下游依赖加 Bulkhead避免生成占满线程池拖垮全站。A4MyBatis vs JPA/HibernateRAG落库表设计选型MyBatis复杂SQL、报表、多表join可控。JPA/Hibernate领域模型清晰、CRUD高效但复杂SQL可能难维护。也可Spring Data JDBC更轻量RAG结果建议表rag_conversation_turnidconversation_id会话user_idquestion_textanswer_textcitationsJSON文档id、chunkId、score、offsetretrieval_topk、hit_countkb_version、embedding_model、llm_model、prompt_versiontoken_prompt、token_completionlatency_ms总耗时分段耗时trace_idfeedbacklike/dislike/标签created_at配套用Flyway/Liquibase管理表结构演进。第三轮答案K8s、可观测、链路追踪、RAG与Agent工程化A1Kubernetes 部署要点 探针 灰度资源requests/limits 合理设置避免 OOMKilled 或 CPU throttlingJVM 参数与容器协同如-XX:MaxRAMPercentage探针readiness依赖就绪DB/MQ连接、缓存预热liveness死锁/假死检测不要把外部依赖失败当liveness失败灰度多 Deploymentv1/v2 Service 按标签切流Ingress/Nginx 按 header/cookie 做灰度或使用 Service MeshIstio做更精细流量治理A2Micrometer/Prometheus 指标定位 P95 抖动必采指标HTTPQPS、P50/P95/P99、错误率JVMGC次数/停顿、堆使用、线程数线程池active、queue size、reject count连接池Hikari active/idle/pending下游依赖HTTP client latency、DB query latency、Kafka produce latency定位方法若 GC pause 与延迟同周期上升调堆、对象分配、缓存结构。若 Hikaripending上升慢SQL/连接泄露/池太小。若下游依赖延迟上升加超时、隔离、熔断、降级。A3Jaeger/Zipkin 链路追踪RAG一次请求的 Span 设计建议 spanhttp:entrycache:faq_getretrieval:vector_searchprompt:renderllm:completionpostprocess:citation_checkdb:save_turnmq:kafka_produce关键 tags选取必要的避免过量conversationId、userIdtopK、hitCount、maxScorekbVersion、embeddingModel、llmModel、promptVersiontokensPrompt、tokensCompletionproviderOpenAI/Ollamafallback是否触发A4RAG 全流程与降低幻觉的工程手段流程文档加载PDF/HTML/Confluence等清洗切分chunk长度、重叠、按标题层级向量化Embedding模型向量库Milvus/Chroma/Redis Vector存储与索引语义检索topK、相似度阈值、混合检索BM25向量提示填充把“引用片段”注入prompt生成LLM引用校验与后处理必须基于引用回答降幻觉检索质量合理 chunk、去噪、增量索引、阈值过滤强约束回答格式要求输出引用id无引用则拒答/转人工回答后验证规则校验是否引用轻量模型/模板校验Agentic RAG当问题需要“查订单/查物流”时先工具调用拿到确定性数据再生成。A5Spring AI / MCP / 工具调用标准化工具接口设计目标让 Agent 安全、可审计、可扩展地调用业务能力。做法工具清单Tool RegistrygetOrderStatus(orderId)trackShipment(trackingNo)createTicket(category, content, attachments)关键工程点鉴权Spring Security OAuth2/JWT工具执行必须带用户上下文审计记录 toolName、参数摘要、结果摘要、traceId、耗时幂等如创建工单用幂等键conversationId turnId权限与风控敏感操作二次确认、限频Resilience4j RateLimiter客户端-服务器架构Agent服务作为客户端业务系统提供工具API或通过 MCP 统一协议暴露学习路线按面试暴露短板补齐JVM/性能GC、线程池、连接池、火焰图微服务治理超时/重试/熔断/隔离/限流的组合策略可观测指标 日志 追踪三件套联动RAG工程chunk/索引/阈值/引用约束/工具调用与审计完

相关文章:

互联网大厂Java面试:Spring Boot/Redis/Kafka/K8s 可观测 + RAG(向量检索/Agent)三轮追问实录

互联网大厂 Java 面试实录:Spring Boot Redis Kafka Kubernetes RAG(向量检索/Agent)三轮追问场景:某内容社区与UGC平台,近期上线“RAG 智能客服”(企业文档问答 工单流转),并要…...

【硬件进阶】DRC零报错却沦为废砖?PCB设计中价值千金的4个“致命雷区”

前言: 从“连线工”蜕变为“硬件专家”,分水岭就在于你是否具备 DFM(可制造性设计) 和 PI/SI(电源/信号完整性) 的全局思维。今天,我们拆解四个极其隐蔽、但一旦踩中就会让你的板子直接报废的 P…...

AI 设计工具:不是让 Figma 更好,是重新定义“设计“这件事

Anthropic CPO 离开 Figma 董事会。不是普通的人事变动,是 AI 实验室向传统 SaaS 宣战的信号。 理解这件事需要一点商业史视角。 2010 年代,移动优先——Instagram 在手机上做到了 PC 端从未做到的事情,颠覆了 Flickr。 2020 年代&#xff0c…...

从相机到屏幕:深入解析图形渲染管线中的MVP与视口变换

1. 从三维世界到二维屏幕的魔法之旅 想象一下你正在玩一款3D游戏,角色在森林中奔跑。树木、岩石、阳光这些三维物体是如何变成你屏幕上那些二维像素的呢?这就是图形渲染管线要解决的核心问题。整个过程就像用相机拍摄照片:你需要调整相机位置…...

用Python+USRP实战模拟TACAN信号:从原理到代码实现(附GitHub仓库)

用PythonUSRP实战模拟TACAN信号:从原理到代码实现 在航空电子领域,TACAN(战术空中导航系统)作为关键的极坐标导航技术,其信号模拟一直是SDR开发者关注的焦点。本文将带您从零开始,使用USRP硬件和Python生态…...

【TensorRT】—— 动态Batch推理实战:从模型导出到trtexec性能深度解析

1. 动态Batch推理的核心价值与应用场景 想象一下你正在开发一个智能视频分析系统,白天需要处理大量实时监控画面(高并发小batch),深夜则要批量处理历史录像(低并发大batch)。如果每次都要为不同batch size重…...

智能文件分拣工具:双模式智能分拣,自定义文件夹命名,按文件类型自动分类,一键批量整理海量文件,零门槛高效管理电脑数字资产

大家好,我是大飞哥。日常使用电脑时,我们总会遇到海量零散文件手动整理耗时耗力、文件夹创建繁琐、混合文件分类杂乱、归档后难以查找的核心痛点,要么花费数小时手动拖拽拆分文件,要么分类后的文件杂乱无章,后续查找使…...

Network Slimming实战:从稀疏正则化到结构化剪枝的完整指南

1. Network Slimming:让AI模型瘦身的艺术 第一次听说模型剪枝时,我脑海中浮现的是园艺师修剪树枝的画面。没想到这个比喻意外地准确——就像剪掉多余的树枝能让植物更健康,剪除神经网络中冗余的参数同样能让模型更高效。Network Slimming就是…...

从ETOPO1到精美地形图:手把手教你用Python+Cartopy替代Matlab进行海洋地形可视化

从ETOPO1到出版级地形图:PythonCartopy全流程实战指南 当我们需要展示海底山脉的起伏或大陆架的地形特征时,ETOPO1全球地形数据集往往是首选。但传统Matlab处理方式正逐渐被更灵活、开源的Python技术栈取代。本文将带你用xarray和Cartopy这套黄金组合&am…...

避坑指南:DGL大规模图训练与GPU配置的那些事儿(附PyTorch后端实战代码)

DGL大规模图训练与GPU优化实战:从显存瓶颈到工业级部署 1. 显存优化:突破4GB限制的核心策略 当处理社交网络或推荐系统图谱时,开发者常遇到显存不足的致命错误。以PyTorch为后端的DGL框架中,graph.to(device)的显式传输操作可能成…...

暗黑破坏神2存档编辑器:打造个性化游戏体验的完整指南

暗黑破坏神2存档编辑器:打造个性化游戏体验的完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 暗黑破坏神2存档编辑器是一款功能强大的开源工具,让你能够自由编辑游戏存档文件,无论是原…...

Redis Cluster Slot 分布逻辑

Redis Cluster作为分布式缓存系统的核心解决方案,其数据分片机制依赖于巧妙的Slot分布逻辑。这种设计不仅解决了单机内存限制问题,还实现了高性能与高可用性的平衡。本文将深入解析Slot分布的核心机制,揭示其如何支撑起Redis Cluster的弹性扩…...

3大零代码平台教你用AI智能体,轻松实现自动化效率提升!

本文介绍了AI智能体的概念及其与普通AI聊天工具的区别,推荐了三个零代码平台:扣子、腾讯元器和文心智能体,并详细阐述了如何利用这些平台搭建智能体。文章重点介绍了腾讯元器在微信生态中的应用,以及扣子在复杂工作流自动化方面的…...

SITS2026案例深度复盘:从0到上线仅72小时,AI创意生成如何提升广告CTR 317%?

第一章:SITS2026案例:AI广告创意生成 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Smart Intelligence & Transformation Summit 2026)联合多家头部广告平台与AIGC实验室,落地了“AI广告创意生成”生…...

大模型、Agent、Skill与OpenClaw如何重塑智能体验?

本文深入解析了AI领域的关键概念:大模型作为AI的“大脑”,具备强大的语言理解和生成能力;Agent则是“项目经理/执行者”,能自主规划任务并调用工具;Skill是封装好的专业技能包,为Agent提供具体执行能力&…...

别再只盯着激光雷达了!聊聊低成本单目摄像头测距在机器人/小车项目里的那些事儿

低成本单目摄像头测距:机器人项目中的实战技巧与避坑指南 在机器人、智能小车和无人机项目中,距离感知一直是核心挑战之一。当大家一窝蜂地追求激光雷达方案时,却忽略了手边最经济实惠的传感器——普通摄像头。单目视觉测距技术,这…...

打卡5:链表元素移除算法详解

题目链接:https://leetcode.cn/problems/remove-linked-list-elements/ 视频讲解:https://www.bilibili.com/video/BV18B4y1s7R9struct ListNode* removeElements(struct ListNode* head, int val) {// 创…...

从零构建垃圾分类识别系统:基于8万张图片与TensorFlow的实战指南

1. 项目背景与数据集介绍 垃圾分类识别系统听起来高大上,但其实离我们日常生活特别近。去年我帮小区物业做了一套这样的系统,从零开始折腾了两个月,踩了不少坑,也积累了不少实战经验。这次就用8万张图片的数据集为例,…...

以为生活缺的是标准答案,其实是丧失了“拆解”的能力

凌晨书桌前的拆解者一、 那个被几十个“高赞回答”困住的深夜前几天,我以前带过的一个产品经理大林,约我在海淀喝了顿大酒。大林今年38岁,正卡在一个要命的节骨眼上:公司业务大调整,他所在的边缘业务线面临被“优化”的…...

为什么先安慰,比先讲道理更有效(为什么这里会有这么一篇博客)

这里应该有一个场景多人都经历过这样的场景。女生跟男朋友说,今天真的很委屈,很难受。她本来期待的是一句“我懂你”“你今天一定很撑”“这不是你的错”。结果男生下一秒开始分析:那你以后别这样说,你应该先找老师,你…...

终于会了!OpenClaw 与钉钉机器人对接,小白也能上手

前言 在日常开发和办公协作中,将自定义工具 OpenClaw 接入钉钉企业内部机器人,能够实现业务信息和任务的高效协同。这种集成方式可显著提升团队协作效率,特别是在开发与办公场景中。本文将详细介绍 OpenClaw 接入钉钉企业内部机器人的完整流…...

STM32F407新手避坑指南:从点灯到PWM,那些官方手册没细说的实战细节

STM32F407新手避坑指南:从点灯到PWM的实战陷阱解析 第一次点亮STM32F407的LED时,那种成就感就像在黑暗中找到了开关。但很快你会发现,官方手册里那些优雅的代码示例,在实际开发中总会遇到各种"意外"。本文不会重复基础教…...

如何用 style.setProperty 修改带有优先级的 CSS 变量属性

不能用 style.setProperty 直接设置带 !important 的 CSS 变量,因为内联样式不支持 !important,浏览器会静默丢弃该声明;应通过 insertRule 动态注入带 !important 的 CSS 规则,或依靠作用域、类名切换等更健壮的方式管理变量优先…...

从DeepPS到工业实践:剖析基于DCNN的停车位检测算法演进与挑战

1. 停车位检测技术的现实挑战与需求 想象一下,你正开车进入一个陌生的地下停车场,昏暗的灯光下,地面反光严重,部分车位线已经模糊不清。这时候如果依赖传统计算机视觉算法,很可能连最基本的车位线都识别不出来。这正是…...

如何从SQL获取当前登录用户数据_使用系统上下文函数

...

大模型大揭秘:从ChatGPT到国产模型,为什么它突然这么厉害?

本文深入解析了大模型的核心概念,阐述了其“大”体现在参数量、训练数据和计算量三个维度,并介绍了Transformer、预训练、指令微调、RLHF等关键技术。文章还探讨了大模型的涌现能力、局限性以及国产大模型的最新进展,揭示了大模型在AI领域的革…...

探究python-docx的段落缩进——从字体磅值到精准首行缩进

1. 为什么你的首行缩进总是不准确? 很多开发者第一次用python-docx处理段落缩进时,都会遇到这样的困惑:明明设置了固定缩进值(比如0.74厘米),为什么在不同文档里效果天差地别?这个问题我当年也踩…...

Data for AI:取之有度,用之有节!从Harness视角破解Agent应用Token爆炸难题

OpenClaw的流行与Token爆炸OpenClaw的流行最近大家见面免不了都要问一句:你养龙虾了吗?这里的“龙虾”,指的正是近期爆火的开源AI Agent框架OpenClaw。自2025年11月发布以来,OpenClaw在GitHub上已经获得了超过35万星标和超过7万fo…...

如何在 Pandas 中安全地对非空 DataFrame 执行行级操作

本文详解如何在 Pandas 中判断 DataFrame 是否为空,并在行级处理(如 apply 或迭代)中避免对空数据执行无效操作,重点推荐 iterrows() 空值前置校验的稳健方案。 本文详解如何在 pandas 中判断 dataframe 是否为空,并在…...

php怎么用各类ai做用户画像_标签体系构建【操作】

PHP调用大模型API做用户行为打标需预处理、结构化封装与异步调度,而非直传原始日志;须清洗文本、切分语义单元、强制JSON输出格式;校验标签值是否在预设数组内,统一小写下划线;并发时用进程/协程限流并状态管理&#x…...