ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Web3.0与区块链大厂Java面试实录:JDK17、Redis分布式锁、Kafka交易削峰、Seata分布式事务、Spring AI+RAG智能合约助手,谢飞机三轮被虐哭(附完整答案解析)

Web3.0与区块链大厂Java面试实录:JDK17、Redis分布式锁、Kafka交易削峰、Seata分布式事务、Spring AI+RAG智能合约助手,谢飞机三轮被虐哭(附完整答案解析) 面试官登场老K与谢飞机的宿命对决面试地点Web3.0与区块链独角兽「链界科技」会议室面试官老K技术总监人称「链上判官」眉头一皱能吓哭实习生应聘者谢飞机江湖人称「水货程序员」简历上写着「精通Java全栈」实际上……你懂的公司背景链界科技——去中心化交易所、NFT交易市场、DeFi借贷、链上溯源、数字钱包、GameFi六大业务线。注册链上用户1.5亿、日活5000万、日均链上交易3000万笔、峰值每秒80万笔交易请求、50万节点实时在线业务链路「注册登录→创建钱包→数字资产交易→NFT铸造→DeFi借贷→智能合约部署→链上溯源→GameFi对战→AI智能合约助手」贯穿全程。第一轮·筑基期JVM / 构建工具 / ORM问题1你们新项目要用Java你推荐哪个版本为什么谢飞机推荐JDK 1717「一起发」寓意入职后大家一起发财老K面无表情我们公司不发币说人话。谢飞机哦哦JDK 17是LTS长期支持版本支持到2029年比JDK 8多了record、文本块、switch表达式、密封类、ZGC等特性而且Spring Boot 3.x要求JDK 17起步选它最稳老K微微点头嗯JDK 8/11/17这三代LTS的区别你再说说谢飞机JDK 8是「老干妈」经典永流传JDK 11是「保温杯」中年标配加了ZGC和HttpClientJDK 17是「折叠屏」最新旗舰性能更强、语法更香老K……虽然比喻离谱但核心点没错。问题2线上OOM了你怎么排查谢飞机简单重启大法内存加到256G问题准没老K你当这是网吧修电脑呢重启用完了内存还在涨怎么办谢飞机那就……再重启一次老K深吸一口气JVM内存分区有哪些Metaspace是干嘛的谢飞机堆、栈、方法区……Metaspace那不是元宇宙空间吗最近可火了老K血压飙升Metaspace是「元空间」存类元数据的不是MetaVerse出去别说你面过Java谢飞机小声那到底怎么排查OOM啊……老Kjps找进程、jmap看堆、jstack看线程、MAT分析快照四板斧回去背熟问题3Maven依赖冲突怎么解决谢飞机谁报错就删谁删到不报错为止上次我把同事的代码也删了被追了三条街……老K……你这不是解决冲突你这是解决同事。正确做法是mvn dependency:tree看依赖树找到冲突版本用exclusion排除或者用dependencyManagement统一版本实在不行引入BOMBill of Materials统一管理谢飞机学到了那Gradle呢老KGradle用resolutionStrategy和dependency locking原理一样。问题4MyBatis和JPA怎么选谢飞机JPA一时爽排查火葬场MyBatis SQL在手天下我有老K眼前一亮哦这你倒是门儿清。说说为什么谢飞机我们这场景订单、交易、钱包流水SQL复杂MyBatis写SQL灵活可控JPA自动生成SQL虽然开发快但一旦N1问题爆发就像奶茶店买一送一一个订单查出一百个关联查询数据库直接跪了老K不错那连接池呢HikariCP为什么快谢飞机因为它名字短加载快老K握紧拳头……是FastList替代ArrayList、ConcurrentBag替代BlockingQueue减少锁竞争回去背第二轮·历劫期缓存 / 分布式锁 / MQ / 分布式事务问题5链上行情数据并发高缓存怎么设计谢飞机缓存三兄弟口诀防空、加锁、错峰老K点头展开说说。谢飞机缓存穿透查不存在的数据打穿缓存用布隆过滤器「防空」缓存击穿热点Key过期瞬间大量请求打到DB用互斥锁「加锁」缓存雪崩大量Key同时失效用随机过期时间「错峰」。老K很好这波是背过课文的那Redis分布式锁怎么实现谢飞机SETNX key value一把梭老K线程A没执行完锁就过期了怎么办谢飞机……那就……再抢一次老K那叫「看门狗」Redisson里有个后台线程自动续期默认30秒锁每10秒续一次防止锁过期业务没执行完另外还要注意加锁必须设置过期时间防死锁解锁要校验是不是自己的锁防误删用Lua脚本保证原子性谢飞机看门狗是我家楼下那只大黄狗吗它可厉害了见人就叫老K扶额……是Redisson的WatchDog问题6Kafka怎么保证消息不丢谢飞机Kafka嘛King王者不丢王冠老K……说人话。谢飞机哦哦三个环节生产者acksall等待所有副本确认Brokermin.insync.replicas2保证最少同步副本数消费者手动提交offset处理完再提交配合幂等处理。老K惊讶这波居然说对了背得挺熟啊。那交易削峰怎么做谢飞机高峰期交易请求直接扔Kafka交易系统异步消费处理像水库一样「削峰填谷」下游系统不会被打爆问题7跨服务转账分布式事务怎么搞谢飞机Seata就是那个海盐、烧烤、番茄、原味……老K你在报薯片口味吗谢飞机不是不是Seata四种模式XA/2PC强一致性能差AT模式自动补偿无侵入业务改动小我们常用TCCTry-Confirm-Cancel手动补偿性能好但代码侵入大SAGA长事务适合业务流程复杂。老K揉太阳穴虽然表达方式离谱但答案居然是对的……那注册中心呢Nacos和Eureka啥区别谢飞机Eureka是AP优先可用性Nacos支持AP和CP切换还带配置中心功能我们选Nacos老K行第二轮算你过关。第三轮·飞升期WebSocket / 可观测性 / Spring AI问题850万链上节点实时推送WebSocket怎么扛谢飞机for循环挨个发老K50万连接你for循环是准备发到明年吗谢飞机……那就用NettyNIO/Epoll单线程管百万连接IO多路复用ChannelGroup统一管理连接广播消息粘性会话保证客户端连到同一节点Redis Pub/Sub跨节点消息广播心跳机制IdleStateHandler检测死连接及时清理。老K点头不错知道抄答案了。那服务可观测性呢谢飞机可观测性三件套Metrics指标Prometheus Grafana MicrometerLogs日志ELK StackElasticsearch Logstash KibanaTraces链路Jaeger/Zipkin做分布式链路追踪。老K比福尔摩斯还神这波可以。问题9Spring AI你怎么理解谢飞机Spring AI就是Java界的AI全家桶那个ChatClient用起来跟JdbcTemplate一个味儿chatClient.call(你好)就完事了老K那RAG呢谢飞机RAG就是「先搜后答」先到向量数据库里搜相关知识再喂给大模型回答防止AI瞎编。比如我们链上智能合约助手用户问「这个合约安全吗」先检索合约审计知识库再让大模型结合检索结果回答老K赞许不错向量数据库怎么选谢飞机大数据量用Milvus轻量级用Chroma想省事用Redis Stack直接支持向量检索Embedding模型可以用OpenAI或者本地Ollama老KMCP和A2A呢谢飞机MCP就是「AI界的USB-C」统一标准让AI接入各种工具三大原语客户端-服务器架构、工具调用标准化、扩展能力A2A就是Agent和Agent之间唠嗑的协议老K那Agentic RAG呢谢飞机就是「AI侦探」普通RAG查一次就回答Agentic RAG会自己思考、多轮检索、调用工具、验证答案最后才给出结论适合复杂工作流老K最后一个问题AI幻觉怎么破谢飞机只能缓解不能消除就像你永远无法让杠精闭嘴手段包括RAG提供事实依据、提示词约束、温度调低、输出校验、人工审核、知识库更新。老K沉默三秒……行吧你虽然水但水得很有水平。结局回去等通知老K今天的面试到这里你先回去等通知吧。谢飞机熟练地掏出卡片收藏夹太好了这是我集齐的第七张「等通知」卡片可以召唤神龙了老K嘴角抽搐……三个月后谢飞机靠文末答案解析入职竞品Web3公司「链上星辰」工牌上写着「等通知侠」。而老K默默从碎纸机里捡回他的简历背面写下四个字「值得再约」。 文末答案解析小白学习版15大考点考点1JDK 8/11/17 特性对比| 版本 | 类型 | 核心新特性 | 选型建议 | |------|------|-----------|----------| | JDK 8 | LTS | Lambda、Stream、Optional | 老项目稳定首选 | | JDK 11 | LTS | ZGC、HttpClient、局部变量推断 | 中间过渡版本 | | JDK 17 | LTS | record、文本块、密封类、switch表达式 | Spring Boot 3.x强制要求 |业务场景新项目选JDK 17 Spring Boot 3.x性能更好、语法更现代、支持到2029年。考点2JVM内存分区 OOM排查堆对象实例GC主战场分新生代/老年代虚拟机栈栈帧、局部变量表本地方法栈native方法方法区/Metaspace类元数据、常量池不是元宇宙程序计数器当前线程执行字节码行号OOM排查四板斧jps找进程 →jmap看堆内存 →jstack看线程栈 →MAT分析堆转储文件。考点3Maven/Gradle 依赖冲突解决mvn dependency:tree查看依赖树exclusion排除冲突依赖dependencyManagement统一版本管理BOMBill of Materials集中管理版本GradleresolutionStrategydependency locking考点4MyBatis vs JPA| 维度 | MyBatis | JPA/Hibernate | |------|---------|---------------| | SQL控制 | 手写SQL完全可控 | 自动生成灵活度低 | | 复杂查询 | 适合 | 容易产生N1 | | 开发效率 | 较低 | 高 | | 缓存 | 一级/二级缓存 | 一级/二级缓存 |业务场景交易、订单、流水等复杂SQL用MyBatisCRUD简单的内部系统用JPA。考点5HikariCP 为什么快FastList替代ArrayList优化get/remove性能ConcurrentBag替代BlockingQueue减少锁竞争字节码精简、无反射调用考点6缓存穿透/击穿/雪崩| 问题 | 现象 | 解决方案 | |------|------|----------| | 穿透 | 查询不存在的数据 | 布隆过滤器/缓存空值 | | 击穿 | 热点Key过期 | 互斥锁/逻辑过期 | | 雪崩 | 大量Key同时失效 | 随机过期时间/集群 |口诀防空、加锁、错峰考点7Redis分布式锁RedissonRLock lock redissonClient.getLock(order: orderId); // 看门狗自动续期默认30秒每10秒续一次 try { if (lock.tryLock(5, TimeUnit.SECONDS)) { // 业务逻辑 } } finally { if (lock.isHeldByCurrentThread()) { lock.unlock(); } }三大坑① 必须设过期时间防死锁 ② 解锁校验持有者 ③ 用Lua保证原子性。考点8Kafka 三环节不丢失生产者acksall 重试机制Brokermin.insync.replicas2replication.factor3消费者手动提交offset 幂等处理业务场景链上交易高峰期Kafka削峰填谷下游异步消费。考点9分布式事务四方案| 方案 | 一致性 | 性能 | 侵入性 | 适用场景 | |------|--------|------|--------|----------| | XA/2PC | 强一致 | 低 | 高 | 银行转账 | | TCC | 最终一致 | 中 | 高 | 资金操作 | | SAGA | 最终一致 | 高 | 中 | 长流程业务 | | Seata AT | 最终一致 | 高 | 低 | 通用微服务 |考点10注册中心CAP对比EurekaAP注册表缓存优先可用性NacosAP/CP可切换带配置中心ConsulCP强一致带健康检查考点11WebSocket 百万连接架构Netty NIO/Epoll ChannelGroup 粘性会话 Redis Pub/Sub IdleStateHandler心跳支撑百万级实时连接。考点12可观测性三件套MetricsPrometheus Grafana MicrometerLogsELKElasticsearch Logstash KibanaTracesJaeger/Zipkin 分布式链路追踪考点13Spring AI 核心能力ChatClient统一大模型调用入口Embedding文本向量化Function Calling让模型调用外部工具ChatMemory会话记忆管理Advisors提示填充、日志、安全等横切能力考点14RAG 全流程离线阶段文档加载 → 分块 → Embedding向量化 → 存入向量数据库在线阶段用户提问 → 问题向量化 → 语义检索 → 召回相关文档 → 拼装提示词 → 大模型生成回答向量数据库选型大数据量Milvus、轻量级Chroma、省事用Redis Stack。考点15MCP A2A Agentic RAGMCP模型上下文协议AI界的USB-C三大原语客户端-服务器架构 工具调用标准化 扩展能力A2AAgent-to-Agent智能代理之间的通信协议Agentic RAGAI侦探模式多轮检索 工具调用 验证答案通过ReAct循环思考→行动→观察解决复杂问题考点16AI幻觉Hallucination本质大模型生成看似合理但错误的内容。缓解手段① RAG提供事实依据 ② 提示词约束 ③ 降低温度参数 ④ 输出内容校验 ⑤ 人工审核兜底 ⑥ 定期更新知识库。一句话总结AI幻觉只能缓解、不能消除就像你永远无法让杠精闭嘴本文完欢迎收藏转发祝各位面试顺利不再集「等通知」卡片
返回列表