核心内容摘要
如何打造高效个性化Windows桌面:DWMBlurGlass一站式透明特效解决方案
Java大厂面试实录谢飞机的音视频场景三连问Spring Boot Kafka Redis AI RAG面试官严肃、逻辑缜密、善用业务场景追问谢飞机985科班简历写满20技术栈实际能跑通Hello World…但今天他碰上了「音视频」——那个让一半Java人沉默、另一半开始重学Netty的领域。
第一轮基础稳不稳先看音视频上传链路面试官我们音视频平台每天接收500万条UGC上传请求前端分片上传到OSS后触发回调。
服务端用Spring Boot接收回调校验MD5并落库。
请问如何避免同一视频被重复处理幂等性如果校验失败你用什么方式通知前端重传同步HTTP调用还是异步为什么数据库写入前是否需要加分布式锁锁粒度怎么选谢飞机挠头“呃…幂等我用Redis setnxkey是fileId…失败就发个Feign调用前端…”面试官点头“不错Redis做幂等key可行。
但Feign同步调用在高并发下会拖垮你的回调接口——这里应该投递Kafka消息由下游消费端异步通知。
至于锁文件ID级锁太重建议用fileId:check作为锁key超时设为3秒配合try-with-resources释放。
” 第二轮流量洪峰来了缓存和消息怎么扛面试官上传成功后要触发AI生成封面图调用内部Stable Diffusion API、打标NLP模型、推荐冷启动相似视频召回。
这三个任务耗时差异大100ms~3s且不能阻塞主流程。
你怎么设计这类异步任务用Async够吗为什么不用Kafka封面图生成失败如何保证重试且不重复生成推荐冷启动结果需缓存用Redis哪种结构过期策略怎么设谢飞机语速加快“Async…够吧我加了EnableAsync…重试加个while循环缓存…StringTTL…嗯…7天”面试官微笑“Async共享Tomcat线程池一旦下游AI接口雪崩你的Web容器就OOM了。
必须解耦——全走Kafka。
重试用死信队列delay topic冷启动结果用Hash存{videoId: {tagList, simIds}}TTL设动态值热度越高TTL越长用ZSET按播放量排序定时刷新。
” 第三轮AI不是魔法是工程——RAG怎么落地面试官我们上线了「创作者知识库问答」功能UP主上传SOP文档PDF/Word运营可问“如何开通4K审核权限”。
后台用RAG实现。
请说明文档解析阶段如何保留表格/标题层级结构向量化时为什么不能直接用整篇PDF喂给Embedding模型检索阶段用户问“审核权限”可能匹配到“资质认证”“内容安全中心”等词如何提升语义相关性如果RAG返回答案含幻觉如虚构政策条款你怎么拦截谢飞机擦汗“解析…用POI向量…不是越大越好吗语义…加关键词幻觉…呃…加个‘请勿编造’提示词”面试官轻叹“POI无法解析PDF表格要用Apache PDFBox LayoutParser提取结构化文本Embedding必须分块chunk推荐semantic chunking按标题/段落语义切否则丢失上下文相关性靠HyDE假设性文档嵌入 Rerank模型如BGE-Reranker幻觉拦截需双保险① 答案必须标注引用原文片段source_id page_num② 设置置信度阈值低于
65则返回‘暂未找到依据’。
”✅ 面试官结语“谢飞机同学基础概念有认知但在场景深度、取舍权衡、失败预案上还需沉淀。
比如Kafka分区数没提、Redis持久化策略没聊、RAG评估指标Hit Rate/MRR也没涉及…回去把《音视频高并发架构》《RAG Engineering Best Practices》两篇Paper精读一遍两周后可约二面。
——回家等通知吧。
” 附技术点详解小白友好版 场景锚点音视频UGC平台为什么考这些音视频高吞吐上传、低延迟播放、强一致性审核、AI融合封面/打标/问答是检验Java工程师全栈工程能力的黄金场景。
技术链路拆解| 环节 | 技术选型 | 关键原因 | |------|----------|----------| |幂等校验| Redis SETNX Lua脚本 | 原子性保障毫秒级响应比DB唯一索引更轻量 | |异步解耦| Kafka非Async | 解耦生产/消费速率支持重试、死信、顺序消费partition keyvideoId | |缓存设计| Redis Hash 动态TTL | Hash节省内存TTL联动ZSET热度排名避免冷数据长期占内存 | |RAG落地| PDFBoxLangChainChromaBGE-Reranker | 结构化解析→语义分块→向量检索→重排序→溯源拦截形成闭环 | 新手避坑指南❌ 不要用Scheduled轮询查Kafka消费进度 → 改用Kafka Consumer Group Offset自动提交❌ 不要将JWT Token存在Redis String → 改用Redis Set支持快速剔除黑名单Token❌ 不要给所有Embedding模型配相同chunk size → 代码类用256文档类用512对话类用128一句话
总结大厂面试不考“会不会”而考“为什么这么选”——每个技术决策背后都是对业务规模、故障成本、演进成本的权衡。
本文首发CSDN转载请联系作者。
谢飞机已入职某音视频AIGC团队P7正在重构他们的RAG Pipeline…