尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

智慧城市大厂Java面试实录:JDK17、Redis分布式锁、Kafka事项削峰、Seata分布式事务、Spring AI+RAG智能城市助手,谢飞机三轮被虐哭(附完整答案解析)

智慧城市大厂Java面试实录:JDK17、Redis分布式锁、Kafka事项削峰、Seata分布式事务、Spring AI+RAG智能城市助手,谢飞机三轮被虐哭(附完整答案解析) 场景设定公司智慧城市独角兽「智城云脑」业务线城市运行管理中心IOC、智慧交通、智慧安防、智慧社区、智慧政务、AI城市助手六大业务线。规模覆盖300城、注册市民4亿、日活1.2亿、日办件量8000万件、高峰期每秒80万次事项请求、50万个政务窗口/自助终端实时在线。业务链路注册登录→实名认证→事项申报→智能分办→审批流转→证照签发→进度推送→好差评→AI城市助手贯穿全程。第一轮 · 筑基期基础语言与平台老K推了推眼镜面无表情谢飞机同学是吧先问点基础的。我们「智城云脑」的新项目准备选型团队在纠结 JDK 8 还是 JDK 17你怎么看谢飞机挺直腰板17好啊17一起发招财老K嘴角抽搐……我是问你技术上的理由。谢飞机哦哦17是 LTS 长期支持版本有 record 语法、文本块、switch 表达式还有 ZGC 低延迟垃圾回收器。而且 Spring Boot 3.x 要求 JDK 17 起步新项目选 17 没毛病老K微微点头不错总算说了句人话。那 JDK 8、11、17 你怎么形象地理解谢飞机JDK 8 是老干妈经典永流传JDK 11 是保温杯中规中矩JDK 17 是折叠屏手机新潮又能打老K忍笑行吧。那 JVM 运行时数据区都有哪些Metaspace 是什么谢飞机就是……堆、栈、方法区……哦不对Metaspace 就是那个元宇宙空间老K血压飙升拍桌Metaspace 是元空间不是 Metaverse它是 JDK 8 之后用来存类元数据的地方替代了永久代用的是本地内存谢飞机擦汗对对对类元数据、常量池、静态变量这些……老K生产环境 OOM 了你怎么排查谢飞机重启大法好不够再加内存256G 拉满老K扶额你是网吧网管吗给我说正经的排查流程谢飞机呃……jps 查进程jmap 导堆jstack 看线程再用 MAT 分析大对象……老K还行。最后一个基础题Maven 依赖冲突怎么办谢飞机谁报错删谁上次我把同事代码也删了被追了三条街……老K无语用mvn dependency:tree查依赖树用dependencyManagement统一版本用 BOM 管理实在不行 exclude 排除。记住了第二轮 · 历劫期持久层 / 缓存 / 消息 / 分布式事务老K我们政务系统要对接几百个委办局的数据ORM 你选 MyBatis 还是 JPA谢飞机JPA 一时爽排查火葬场我选 MyBatisSQL 写哪儿都清清楚楚复杂报表查询不虚。老K赞许不错复杂场景 MyBatis 确实更可控。那 MyBatis 的 N1 查询问题你知道吗谢飞机知道就像奶茶店买一送一你查一个订单结果把订单里所有商品都查了一遍1 条 SQL 变 N1 条数据库直接被打哭老K嗯用关联查询或者嵌套结果映射解决。那连接池呢HikariCP 为什么快谢飞机因为……名字短加载快老K青筋暴起HikariCP 快是因为用了FastList替代 ArrayList 避免越界检查ConcurrentBag做无锁化的连接获取字节码精简还有代理类优化谢飞机学到了学到了老K你们缓存怎么用的Redis 穿透、击穿、雪崩讲讲。谢飞机这个我会口诀防空、加锁、错峰穿透——缓存空值 布隆过滤器击穿——互斥锁 逻辑过期雪崩——过期时间加随机值 多级缓存 限流降级老K惊讶哟这波背得挺溜那分布式锁呢你怎么实现谢飞机简单SETNX key value一把梭老K那你锁过期了业务没执行完怎么办锁被别的线程释放了怎么办谢飞机呃……那就……再抢一次老K用Redisson 看门狗默认 30 秒锁后台有个看门狗线程每 10 秒续期业务没跑完就续命跑完就释放。还要用 UUID 线程 ID 做 value 标识释放时用 Lua 脚本比较再删防止误删别人的锁谢飞机哦就像楼下那只大黄狗主人不回来它就一直守着老K叹气……行吧。高峰时期办件量每秒 80 万你怎么削峰谢飞机上 KafkaKafka 就是 King从来不丢王冠老K怒吼那是 Kafka 的 K 不是 King给我说三环节不丢失谢飞机生产者acksall 重试broker 端min.insync.replicas2replication.factor3消费者手动提交 offset 幂等消费老K平复情绪不错。那跨服务的分布式事务呢比如市民提交一个事项要同时扣费、发证、通知谢飞机Seata海盐烧烤味、番茄味、原味、薯片……老K拍桌那是乐事薯片Seata 四种模式是XA/2PC、AT、TCC、SAGAXA 是数据库强一致AT 是自动补偿TCC 是 Try-Confirm-Cancel 手动补偿SAGA 是长事务编排谢飞机哦哦薯片口味对应上了海盐XA、烧烤AT、番茄TCC、原味SAGA老K放弃挣扎……那注册中心 Eureka、Nacos、Consul 你怎么选谢飞机Eureka 是 AP服务注册发现快但数据可能不一致Nacos 支持 AP/CP 切换还带配置中心Consul 是 CP强一致适合对一致性要求高的场景老K点头总算有个像样的回答了。第三轮 · 飞升期WebSocket / 可观测性 / Spring AI老K我们 IOC 大屏要同时推送 100 万市民的办件进度WebSocket 怎么做谢飞机for 循环挨个发老K一口茶喷出来100 万连接你 for 循环线程直接炸用Netty做 WebSocket 服务ChannelGroup管理连接粘性会话让同一用户打到同一节点跨节点用Redis Pub/Sub广播心跳机制保活全链路异步非阻塞谢飞机大厂果然是大厂……老K线上出了问题你怎么快速定位谢飞机可观测性三件套Prometheus采集指标 Grafana可视化大屏ELK收集日志Jaeger/Zipkin做全链路追踪。比福尔摩斯还神老K眼前一亮这个答得不错最后一个方向你们要上 AI 城市助手Spring AI 了解吗谢飞机了解Spring AI 就是给 Java 开发者的 AI 框架ChatClient用起来跟JdbcTemplate一个味儿一行代码调大模型老K那市民问“社保怎么补缴”模型没学过你们的数据怎么办谢飞机上RAG先搜后答把政策文档切块、向量化存到向量数据库用户提问时先语义检索再把结果塞进提示词让模型基于资料回答老K向量数据库怎么选谢飞机Milvus适合大规模、高并发生产环境Chroma轻量级、开发调试方便Redis Stack的向量能力适合想复用现有 Redis 的场景。Embedding 模型可以用 OpenAI 或者本地 Ollama老K惊喜不错啊那 MCP 和 A2A 是什么谢飞机MCP 就是AI 界的 USB-C把模型和外部工具、数据源统一标准化接入A2A 是 Google 的 Agent 间通信协议让不同 Agent 互相协作老K那 Agentic RAG 呢谢飞机就是给 RAG 装上大脑普通 RAG 是“检索→回答”一条道走到黑Agentic RAG 会自我反思、多轮检索、动态调用工具查不到就换关键词再查还能调用 API 查实时数据就像个 AI 侦探不查到真相不罢休老K站起来鼓掌这轮超常发挥最后一个问题AI 幻觉怎么解决谢飞机AI 幻觉是模型编造不存在的知识只能缓解不能消除——就像你永远无法让杠精闭嘴可以用 RAG 提供可靠依据、提示词约束“不知道就说不知道”、温度调低、输出校验、知识库兜底、人工审核。老K沉默良久……谢飞机同学今天的面试就到这儿吧。你的表现……很有戏剧性。先回去等通知吧。谢飞机搓手好的好的这是我集齐的第七张“等通知”卡了再集一张就能召唤神龙了彩蛋三个月后谢飞机入职了竞品智慧城市平台「智城互联」工牌上赫然写着——「等通知侠」。而老K默默从碎纸机旁捡回了那份简历在背面写下四个字「值得再约」。 文末答案解析小白学习版16 大考点1. JDK 8 / 11 / 17 特性对比表| 版本 | 核心特性 | 定位 | |------|---------|------| | JDK 8 | Lambda、Stream、Optional、新的日期时间 API | 经典老干妈存量系统主力 | | JDK 11 | 局部变量类型推断var、ZGC 引入、HttpClient | 保温杯过渡版本 | | JDK 17 | record、文本块、switch 表达式、密封类、ZGC 成熟 | LTSSpring Boot 3.x 基线 |选型逻辑新项目直接 JDK 17 Spring Boot 3.x存量系统若依赖老框架如 Spring 5 之前则保守用 JDK 8/11。2. JVM 运行时数据区 Metaspace线程私有虚拟机栈、本地方法栈、程序计数器线程共享堆对象实例、方法区JDK 8 后由Metaspace实现使用本地内存Metaspace 不是 Metaverse它存类元数据、常量池、静态变量默认无上限需用-XX:MaxMetaspaceSize限制OOM 排查四板斧口诀jps找进程 →jmap导堆 →jstack看线程 →MAT分析大对象。3. Maven / Gradle 依赖冲突三板斧mvn dependency:tree查依赖树定位冲突dependencyManagement或 BOM 统一版本精准exclude排除传递依赖4. MyBatis vs JPA N1 问题MyBatisSQL 全掌控适合复杂报表、多表关联、SQL 调优场景政务系统首选JPA/Hibernate开发效率高适合 CRUD 为主的简单领域模型N1 问题查主表 1 次 每个子记录查 1 次 N1 次查询。解决JOIN FETCH / 嵌套结果映射 / EntityGraph / 批量抓取5. HikariCP 为什么快FastList ConcurrentBagFastList去除 ArrayList 的越界检查提升 get/remove 性能ConcurrentBag无锁化连接获取/归还ThreadLocal 缓存 全局共享字节码精简、代理类优化、默认参数合理6. 缓存穿透 / 击穿 / 雪崩对比表| 问题 | 现象 | 解法 | |------|------|------| | 穿透 | 查不存在的数据打到 DB | 缓存空值 布隆过滤器 | | 击穿 | 热点 key 过期瞬间高并发打 DB | 互斥锁 逻辑过期 | | 雪崩 | 大量 key 同时过期 | 过期时间加随机值 多级缓存 限流降级 |口诀防空、加锁、错峰7. Redis 分布式锁三大坑 Redisson 看门狗// 正确姿势Redisson 一把梭 RLock lock redissonClient.getLock(order: orderId); // 看门狗默认 30s 锁每 10s 自动续期 lock.lock(10, TimeUnit.SECONDS); try { // 业务逻辑 } finally { lock.unlock(); }三大坑锁过期业务未完成 → 看门狗续期误删他人锁 → value 存 UUID线程IDLua 脚本比较再删主从切换丢锁 → RedLock / 多节点加锁8. Kafka 三环节不丢失保障生产者acksallretries重试 幂等enable.idempotencetrueBrokerreplication.factor3min.insync.replicas2unclean.leader.election.enablefalse消费者手动提交 offset 消费成功后提交 业务幂等唯一键去重9. 分布式事务四方案选型表| 方案 | 原理 | 适用场景 | |------|------|---------| | XA/2PC | 数据库层两阶段提交强一致 | 并发低、一致性极高金融 | | Seata AT | 自动生成补偿 SQL无侵入 | 中低并发、改造少 | | TCC | Try-Confirm-Cancel 手动补偿 | 高并发、业务可拆分 | | SAGA | 长事务状态机编排 | 跨多服务长链路 |10. 注册中心 CAP 对比| 注册中心 | 模型 | 特点 | |---------|------|------| | Eureka | AP | 注册快、容忍分区数据可能短暂不一致 | | Nacos | AP/CP 可切换 | 注册中心 配置中心二合一 | | Consul | CP | 强一致Raft 协议适合一致性敏感场景 |11. WebSocket 百万连接架构Netty做高性能 WebSocket 网关异步非阻塞ChannelGroup统一管理连接粘性会话同一用户路由到同一节点跨节点广播用Redis Pub/Sub或 Kafka心跳机制ping/pong保活 空闲检测剔除12. 可观测性三件套指标 / 日志 / 链路指标Micrometer Prometheus Grafana日志SLF4J Logback ELKElasticsearch 存储、Logstash 采集、Kibana 可视化链路Jaeger / Zipkin 全链路追踪traceId 串联13. Spring AI 核心能力表| 能力 | 说明 | |------|------| | ChatClient | 类似 JdbcTemplate 的 AI 对话客户端 | | Embedding | 文本向量化接入 OpenAI/Ollama | | ChatMemory | 聊天会话内存管理窗口/摘要 | | Function Calling | 工具执行框架模型调用外部 API | | Advisors | 提示填充、RAG 检索、安全过滤等增强 |14. RAG 离线 / 在线双阶段全流程离线文档加载文档加载 → 切块 → Embedding 向量化 → 存入向量数据库Milvus/Chroma/Redis Stack在线问答用户提问 → 向量化 → 语义检索 TopK → 组装提示词 → LLM 生成带依据回答15. MCP A2A Agentic RAGMCP模型上下文协议AI 界的 USB-C三大原语——工具Tools、资源Resources、提示词Prompts标准化模型与外部系统交互A2AAgent-to-AgentGoogle 提出的 Agent 间通信协议让多个 Agent 协同完成复杂工作流Agentic RAGRAG Agent 的 ReAct 循环思考→行动→观察→再思考多轮检索、动态调工具、自我纠错适合企业文档问答、智能客服等复杂场景16. AI 幻觉本质与 6 大缓解手段本质大模型基于概率生成遇到知识盲区会“一本正经地胡说八道”。RAG 提供可靠知识依据提示词约束“不知道就说不知道”降低 temperature输出校验 引用溯源知识库兜底 人工审核持续微调 评估监控核心认知AI 幻觉只能缓解不能彻底消除——就像你永远无法让杠精闭嘴。全文完感谢观看。如果觉得有用点个赞收藏我们下期面试现场再见
返回列表