自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java架构师之路的博客

一个专注于Java架构的前进者

  • 博客(786)
  • 收藏
  • 关注

原创 Redis这14道面试题,面试官最爱问,第3题90%的人答不准确

这个问题我之前见过,但没仔细研究,面试时瞎猜了个答案。面试官:"Redis Cluster为什么是16384个槽,而不是65536个?我说:"因为16384是2的14次方,方便路由计算?面试官笑了笑:"不是。后来我仔细研究过,16384这个数字是作者拍脑袋定的,但有几点合理性:心跳包大小:节点间每s互发心跳,携带所有槽位信息。16384个槽,用2KB就能传输。如果用65536个槽,心跳包会大很多,占带宽。够用:假设一个集群有1000个节点,每个节点平均分16384/1000 ≈ 16个槽,完全够用。

2026-05-13 22:01:20

原创 大厂高频面试题:手机号加密存储后,如何快速按尾号查询?

面试官:"在你的项目中,用户手机号是怎么存储的?我们都知道手机号属于敏感个人信息,必须加密存储。那如果现在有一个需求:运营后台需要支持,同时还要满足《个人信息保护法》和等保2.0的合规要求,你会怎么设计?

2026-05-13 21:58:15 12

原创 网关明明存了 ThreadLocal,为什么进线程池 userId 全丢了,如何解

把问题解决了,最后 Fox 还要再唠叨一句关乎系统健康度的底线:无论是用原生的 ThreadLocal,还是阿里的 TTL,只要是在复用线程的环境下(比如 Tomcat 线程池、业务线程池),用完之后,必须老老实实在 finally 块或者拦截器的 afterCompletion 方法中,调用 remove() 进行清理!因为 ThreadLocalMap 里的 Key 虽是弱引用,但 Value 是强引用。如果不清理,那些随着请求进来的大对象(比如完整的 UserInfo)就会在线程中不断堆积。

2026-05-12 22:00:46 224

原创 滴滴二面:线上敲了个 DEL 命令,为何几万笔支付瞬间超时报错?深入Redis内核源码分析

在 Redis 的世界里,“大 Key”通常指的不是 Key 的名字有多长,而是 Value 的体积过大,或者 Hash、List、Set 集合中的元素数量庞大(例如塞入了上百万个元素)。无论你的 Key 是存了 1 个字符,还是存了 1000 万个元素的超级大 Hash,只要 Key 的名字定了,它算出来的 CRC16 值就永远不变。这样不仅化解了单点阻塞,改变了 Key 的名称后,还能利用底层的 CRC16 算法,把数据均匀散射到集群的各个槽位上,充分压榨 Cluster 的多节点性能。

2026-05-11 22:00:27 291

原创 大厂面试:如何设计一个系统,实现毫秒级查询10亿手机尾号后4位?

下次面试再问这个,直接用这就话降维打击:“面试官,这个问题的本质是海量数据的非分片键查询。我不会搞昂贵的 ES,而是采用‘异构索引表 + 覆盖索引’的方案。建立一张独立的索引表,利用手机尾号天然的离散性,直接取模路由到 1000 张分表中,避免了全库广播扫描。同时,为了防止单次查询数据量过大打爆内存,我会严格限制分页查询。对于热点尾号,利用 Redis 缓存首页数据进行兜底。这是一套成本最低、性能最高、且完全可落地的架构方案。写在最后所谓的架构设计,从来不是堆砌组件。

2026-05-11 21:59:06 282

原创 阿里二面挂了!被问“RAG效果不好怎么评估”,我答凭感觉,面试官:你搁这玄学炼丹呢?

RAG 开发不是在黑盒子里念咒语,而是一场极其精密的工程实践。当你能从“怎么让模型变好”跳跃到“怎么建立一根尺子,精确测量模型的每一点进步”时,你就不再是一个简单的调包侠,而是掌握了系统演进生命线的架构师。

2026-05-08 22:03:05 363

原创 同样的大模型,为什么别人的 Agent 能稳跑 6 小时,你的 30 分钟就“胡言乱语“?秘密就在 Harness 里。

AI落地的核心挑战,正在从让模型看起来更聪明,转向让模型在真实世界里稳定地工作。Prompt解决表达,Context解决信息,Harness解决执行稳定性。三者包含而非替代。真正决定能不能落地、能不能稳定交付的,不是模型,是Harness。而Harness之外,人的动态驾驭同样不可替代。同样的模型,Harness的差距可以带来13.7个百分点的提升。在某头部AI实验室的512K行Agent项目里,95%的代码全是Harness。这不是理论,是账本。

2026-05-08 21:58:49 362

原创 有AI了,还啃什么源码?

AI能告诉can_match是干什么的,但你得先知道"之前没加时间范围也很快、现在就慢了"这个现象背后是can_match在起作用,你才会往这想。你问AI"bulk怎么写最快",它告诉你用action和metadata分行,但它不会说"别混update"——因为你根本不会问这个问题。因为别人问你问题的时候,你不能说"等我问问AI",你得有自己的判断。我试了几次,确实厉害。我让他把集群配置和索引mapping发过来看了一眼——他这个索引是按天滚动的,保留了30天的数据,也就是30个索引、60多个shard。

2026-05-07 15:49:44 177

原创 你让AI帮你规划三亚旅行,背后发生了什么?

从你按下回车,到AI给你推"Day1:飞三亚→入住亚龙湾→傍晚去第一市场吃海鲜→散步椰梦长廊看日落",这11个概念全都在30秒内跑了一遍。

2026-05-07 15:47:44 201

原创 字节面试:5万个敏感词库,3000字长文,要求10毫秒内审核完毕,怎么做?

DFA(确定有限自动机)听起来很高大上,但它在敏感词过滤里的本质就是构建一棵Trie 树(字典树)。通俗点说,Trie 树就像是一本超级高效的“按拼音查字法”新华字典。假设我们的敏感词库里有“赌博”、“赌局”这两个词。传统方法是存两个完整的字符串;而在 Trie 树里,内存中会构建一个树状结构:根节点往下找,有一个“赌”字节点。“赌”字往下,分出两条岔路,一条是“博”,一条是“局”。在这两个结尾字上,打上一个结束标记(End)。它最大的优势在于空间换时间。

2026-05-06 20:44:43 173

原创 字节一面:Agent长短期记忆怎么做?千万别只答滑动窗口和向量库了!

做 Agent 开发,千万别被学术界的论文和玩具 Demo 忽悠了。所谓的长短期记忆,扒掉 AI 的外衣,本质上就是咱们后端架构师最熟悉的多级缓存、异构数据同步、读写分离、事件驱动架构。对数据的一致性保持敬畏之心,把大模型仅仅当作一个 “计算节点”,而不是万能的存储节点,这才是我们后端老兵在 AI 时代的核心竞争力。回到最开头的面试题,当面试官问你 “Agent 长短期记忆怎么落地”,别再只答 RAG 和向量库了。把这套大厂落地的异构架构、同步异步双链路、分层存储。

2026-05-06 20:43:18 221

原创 面试官:StackOverflowError 会导致 JVM 宕机吗?90%的人答错!!

维度内存区域虚拟机栈 (Stack)堆 (Heap) / 元空间 / 堆外资源性质线程私有进程共享(Shared)触发原因方法调用太深 (死递归)内存泄漏 或 巨型对象JVM 状态存活。仅当前线程挂掉。瘫痪。全站不可用。能否恢复能。该线程释放后,其他线程无影响。难。通常需要重启。排查参数-Xss(调整栈大小)-Xmx-Xms(调整堆大小)

2026-05-05 22:00:18 192

原创 阿里面试:Redis缓存穿透怎么解决?别再只答缓存空值了

面试官真正想考察的,不仅仅是你懂不懂概念,而是你有没有。这样既能防止短期内同一个不存在的key频繁打库,又能避免恶意的大量随机key永久占用Redis宝贵的内存资源。小伙伴心里一喜,这题背过,于是自信回答:“缓存穿透就是查询不存在的key,请求打到数据库,这时候我们只要把空值缓存进Redis就行了。这道题表面上是在问Redis,实际上是在考察你的系统化设计能力和严谨的工程思维。经过前面两层过滤,如果依然有极少量的穿透请求(比如布隆过滤器的误判)打到了数据库,并且数据库确实没查到数据,我们才会采用“

2026-05-05 21:55:11 166

原创 网关明明存了 ThreadLocal,为什么进线程池 userId 全丢了?如何解决?

把问题解决了,最后 Fox 还要再唠叨一句关乎系统健康度的底线:无论是用原生的 ThreadLocal,还是阿里的 TTL,只要是在复用线程的环境下(比如 Tomcat 线程池、业务线程池),用完之后,必须老老实实在 finally 块或者拦截器的 afterCompletion 方法中,调用 remove() 进行清理!因为 ThreadLocalMap 里的 Key 虽是弱引用,但 Value 是强引用。如果不清理,那些随着请求进来的大对象(比如完整的 UserInfo)就会在线程中不断堆积。

2026-05-04 20:29:37 312

原创 2026年AI编程面试必问7题|从Cursor到后端未来,答不对直接挂

很多人面对 AI,要么过度恐慌,觉得自己马上就要失业了;要么过度轻视,觉得 AI 就是个玩具,不值一提。但实际上,AI 从来都不是我们的敌人,而是我们的 “超级放大器”—— 它能放大优秀工程师的能力,也能放大平庸工程师的不足。你不用成为 AI 专家,但你必须成为会用 AI 的工程师。你不用害怕 AI 会写代码,但你必须害怕自己只会写 AI 也能写的代码。技术永远在变,唯一不变的,是持续学习的能力和解决问题的能力。只要你能保持开放的心态,拥抱变化,不断提升自己的核心竞争力,就永远不会被时代淘汰。

2026-05-04 20:24:10 228

原创 小红书三面挂了!被问“热搜榜怎么防 5 万水军”,我答了限流

热搜榜单的防刷,本质上是社区名誉与黑产利益的死磕。技术能识别出 0 和 1,但识别不出人心。当你能从“混乱度”和“成本博弈”去思考架构时,你就已经脱离了“CRUD 程序员”的范畴。

2026-04-30 21:57:20 366

原创 面试官:海量订单超时处理,究竟该选 RocketMQ 还是定时跑批?

在分布式架构的面试里,只要涉及电商业务,订单超时处理几乎是必考题。很多开发者第一反应就是“延时队列”,但当面试官把场景升级到“双 11 级别、上亿订单量、跨度长达 14 天”时,如果你还只知道一个 DelayQueue,那基本就和 Offer 无缘了。今天咱们不聊虚的,直接通过,深度复盘订单超时处理的五大技术流派,带你从“单机思维”进阶到“分布式架构思维”。

2026-04-30 21:55:11 326

原创 字节一面:省市区多级缓存怎么做?别上来就吹 Hash 和 ZSet 了!

什么叫真正的架构设计?能用基础数据结构扛住千万并发,并在网络抖动、宕机、高并发的极限拉扯中滴水不漏,才是高级工程师的修养。这套“动态 Trade-off 思维 + 极权防守底线”,不仅能搞定多级缓存,在做任何微服务架构拆分时通通适用。

2026-04-29 21:55:43 354

原创 拼多多二面:百亿补贴1499 飞天茅台秒杀,怎么防黄牛脚本?这题把老司机问懵了

秒杀系统,从来都不是一串简单的 Redis 扣减代码。它是一场融合了密码学、物理学、心理学以及高并发架构的全面战争。技术保证了系统的吞吐上限,而风控,才真正守住了电商平台补贴用户的初衷。

2026-04-29 21:53:25 365

原创 阿里面试:Redis缓存穿透怎么解决?别再只答缓存空值了

面试官真正想考察的,不仅仅是你懂不懂概念,而是你有没有。这样既能防止短期内同一个不存在的key频繁打库,又能避免恶意的大量随机key永久占用Redis宝贵的内存资源。小伙伴心里一喜,这题背过,于是自信回答:“缓存穿透就是查询不存在的key,请求打到数据库,这时候我们只要把空值缓存进Redis就行了。这道题表面上是在问Redis,实际上是在考察你的系统化设计能力和严谨的工程思维。经过前面两层过滤,如果依然有极少量的穿透请求(比如布隆过滤器的误判)打到了数据库,并且数据库确实没查到数据,我们才会采用“

2026-04-28 21:57:46 317

原创 腾讯面试:40亿QQ号,给你1G内存,怎么去重?

所谓位图(BitMap)其实就是一个bit数组,即每一个位置都是一个bit,其中的取值可以是0或者1。通俗点说,BitMap就像一个超级节省空间的“登记簿”。如果某个QQ号存在,就在对应的“格子”上标记为1;如果不存在,则是0。比如,我们需要记录QQ号:1、4、6。传统方法可能需要用3个整型变量,每个4字节,总共12字节。但是BitMap只需要用一个字节(8位),直接把第1、4、6位分别置为1即可,是不是更高效?这里节省了 12倍空间。BitMap最大的优势在于能够用极小的存储空间去表示。

2026-04-26 21:54:53 312

原创 简历敢写“精通RAG“? 阿里一面挂了! 这3个夺命连环问,你能扛住几个?

简历写精通RAG却被面试官问哑火?只会调接口算什么精通RAG!带你深度拆解从Rerank到GraphRAG的王者演进, 硬核搞定大模型 RAG 项目落地方案。拒绝幻觉,这才是拿Offer的硬实力!

2026-04-26 21:54:10 324

原创 大厂面试必考:RAG 怎么答才能让面试官觉得你“深不可测”?

RAG(检索增强生成)本质上是为大模型提供了一个动态更新的外部知识库。它通过‘先检索相关片段,后辅助生成回答’的方式,有效解决了大模型的幻觉问题和知识时效性问题。RAG 流程不是一条直线,而是一个不断震荡优化的循环。没有完美的算法,只有最适合业务场景的工程权衡(Trade-off)。比如:为了追求极速,我们可以牺牲一点 Rerank 的精度;为了处理私有数据,我们可能需要自建 Embedding 模型。

2026-04-24 21:57:17 322

原创 面试绝杀:在for each循环 里 remove 元素,为什么阿里手册把它列为“一级红线”?

谈原理:说明 foreach 是语法糖,解释 fail-fast 机制中 modCount 的校验逻辑。谈风险:重点强调“倒数第二个元素”的异常规避带来的数据遗漏风险,这体现了你的线上排查经验。谈工程化:提到《阿里手册》的规约是为了代码的可预测性和团队协作的稳定性,并给出 removeIf 或 Stream 的最佳实践。架构师语录: > 技术选型没有绝对的对错,但优秀的工程师永远会选择那个“预期最明确、隐患最少”的方案。

2026-04-24 21:55:28 319

原创 删库不用跑路!一个Java新人的生死2小时:误删8000条生产数据后,他完成了自救

对于程序员来说,最恐怖的从来不是「删库」,而是面对事故时的慌乱和毫无办法。对生产环境永远保持敬畏心,是比代码能力更重要的职业底线。但我们必须清醒地认识到:没有人永远不犯错,个人的细心和敬畏心,只能减少事故发生的概率;而完善的流程管控、工具兜底,才能真正杜绝事故造成的不可逆损失。小杨的故事,不是一个「新人犯错被原谅」的鸡汤故事,而是给所有技术人提了个醒:一线开发要守住操作的底线,技术管理者要守住体系的底线。只有个人规范和团队流程双保险,才能真正守住公司的核心数据资产。

2026-04-23 21:59:13 352

原创 面试官:爆火视频点赞每秒 10w,数据库行锁直接卡死,你怎么破?

架构师的价值,就在于面对“物理限制”(如行锁、IOPS)时,能够利用内存和异步化手段把矛盾转移。优秀的架构师,都是在内存里做加法,在数据库里做减法。

2026-04-23 21:54:38 333

原创 小红书三面挂了!被问“热搜榜怎么防 5 万水军”,我答了限流,面试官:热搜都被买爆了你还在数包?

热搜榜单的防刷,本质上是社区名誉与黑产利益的死磕。技术能识别出 0 和 1,但识别不出人心。当你能从“混乱度”和“成本博弈”去思考架构时,你就已经脱离了“CRUD 程序员”的范畴。

2026-04-22 21:53:30 390

原创 2026 Java AI 选型终极指南:四大框架深度横评,谁才是真正的“全能王”?

2026 年,Java 开发者进入 AI 赛道的"入场券"越来越多,选择越多,困惑也越多。后台每天都有兄弟问我:"老师,我要做一个 AI 助手,该用哪个框架?" 但问题是,不同的业务场景,答案完全不同。你是要做一个RAG 知识库问答?→ 选型逻辑完全不同于做AI Agent 自动化。你的团队是Spring 老兵?→ 和刚接触 AI 的新手,推荐路径也不一样。你的业务需要多个 AI 互相协作?→ 这时候单框架已经不够用了。今天这篇文章,我不打算讲概念,直接从工程师视角。

2026-04-22 21:50:09 387

原创 阿里面试:AI Agent把公司库删了,你怎么防?这道“指令注入”题干废了90%的候选人

看到了没?AI时代的安全架构,已经不是写写拦截器那么简单了。从意图审查到权限隔离,再到死循环熔断,每一环都是实打实的生产经验。掌握了这套架构思路,不仅面试横着走,真在线上跑业务你也能睡个安稳觉。大家在搞Agent的时候还踩过什么坑?来留言区,咱们一起盘盘!

2026-04-21 22:02:33 185

原创 面试官:海量订单超时处理,究竟该选 RocketMQ 还是定时跑批?深度拆解5 种架构方案

很多开发者第一反应就是“延时队列”,但当面试官把场景升级到“双 11 级别、上亿订单量、跨度长达 14 天”时,如果你还只知道一个 DelayQueue,那基本就和 Offer 无缘了。今天咱们不聊虚的,直接通过,深度复盘订单超时处理的五大技术流派,带你从“单机思维”进阶到“分布式架构思维”。

2026-04-20 21:50:23 358

原创 面试绝杀:在for each循环 里 remove 元素,为什么阿里手册把它列为“一级红线”?

谈原理:说明 foreach 是语法糖,解释 fail-fast 机制中 modCount 的校验逻辑。谈风险:重点强调“倒数第二个元素”的异常规避带来的数据遗漏风险,这体现了你的线上排查经验。谈工程化:提到《阿里手册》的规约是为了代码的可预测性和团队协作的稳定性,并给出 removeIf 或 Stream 的最佳实践。架构师语录: > 技术选型没有绝对的对错,但优秀的工程师永远会选择那个“预期最明确、隐患最少”的方案。

2026-04-20 21:47:39 340

原创 华为面试挂了!48 核 CPU 瞬间飙到 100%,排查不出死锁,面试官:你确定你是 Java 专家?

技术上的碾压,往往不是因为对方懂得多酷炫的新框架,而是别人真正在高压环境下踩过这些底层的坑。单机跑得溜,到了多核集群可能处处是雷。对底层机制多一分敬畏,线上出事故时手就少抖一分。如果你在火焰图抓取中,发现大量 CPU 时间全耗在了 System.arraycopy 上,你觉得业务代码里可能在做什么骚操作?

2026-04-19 21:57:39 317

原创 面试官:堆外内存爆了,Dump 文件没用,你怎么定位?3招定位线上“幽灵内存泄漏”

应用层快速排查用Arthas的mbean命令查看DirectBuffer用量,用ognl命令查看Netty堆外内存占用,定位是不是框架层面的泄漏;快速验证试探用vmtool强制触发GC,看内存是否下降,排查是不是GC参数配置不当导致的回收不及时;JVM层精准定位开启NMT,用jcmd查看内存分布,通过基线对比找到持续增长的内存区域,缩小排查范围;系统层终极排查用pmap查看内存段,排查是不是Glibc内存碎片问题,极端场景用perf火焰图定位原生库泄漏。堆内OOM看代码,堆外OOM看架构。

2026-04-17 21:59:57 365

原创 面试官:爆火视频点赞每秒 10w,数据库行锁直接卡死,你怎么破?

架构师的价值,就在于面对“物理限制”(如行锁、IOPS)时,能够利用内存和异步化手段把矛盾转移。

2026-04-17 21:53:59 320

原创 面试绝杀!大模型必考题:多轮对话+上下文优化,满分答案直接背

核心思路:把旧笔记浓缩成摘要,不丢核心信息对话太长时,让模型把早期的零散对话,压缩成一段精简摘要,用“摘要+最近对话”替代全量历史,既省Token,又不丢对话意图。优点:保留核心信息,Token消耗骤减缺点:多一次摘要调用适用场景:智能客服、常规AI助手、中长对话面试口述:通用场景我会用滚动摘要,动态压缩早期上下文,把长对话变成精简笔记,平衡效果和成本。

2026-04-16 21:58:39 216

原创 美团二面挂了!被问“1 亿行数据深分页”,我只答了 LIMIT,面试官:跳到第 1 万页系统崩了你负责?

Q1:如果业务一定要支持“跳页”且数据量就是亿级,怎么办?“我会直接把数据同步到。ES 的机制天然适合深分页。如果非要用数据库,我会利用Redis缓存前 100 页的 ID,跳页时直接从缓存拿 ID 列表再回表查 DB。Q2:分库分表后,深分页怎么处理?“这是最头疼的。每个库都查,然后内存合并。先在各库查OFFSET/N,找到一个大概的 ID 范围,再根据这个范围去各库精确定位。这种需求在大厂通常会通过离线汇总表或 ES 来解决,不建议在分片后的在线库强撸。

2026-04-16 21:54:51 191

原创 字节二面挂了!被问“100 亿短链接如何不重复?”,面试官:你只会用 MD5?

技术面试考的从来不是你会不会用 MD5,而是你对数据碰撞、存储成本、以及全链路稳定性的掌控力。能把一个简单的 a=b 问题,拆解成分布式 ID、缓存穿透防御、以及 HTTP 协议深度运用的系统方案,这才是架构师的功底。

2026-04-15 22:03:34 322

原创 面试官挖坑:线程池动态调参导致Core>Max,系统会发生什么?

兄弟们,这才是真正的实战教学。很多人自己都没跑过代码,背着八股文就去面试了。但这一个“23 和 5”的问题,以及 JDK 版本演进的 Fail-Fast 机制,直接揭露了 JDK 底层的锁机制和线程池的生命周期管理。下次面试如果遇到聊“动态线程池”,你直接把这个“扩容时 Core 超过 Max 导致的疯狂自杀拔河现象”以及“JDK 8 到 17 的源码演进”甩给面试官。面试官绝对当场被你震慑,这才是踏踏实实踩过坑、流过血、看过源码的架构师该有的水平!

2026-04-15 22:01:02 349

原创 线上 CPU 暴涨 99%!MySQL只用了这一招,回表次数竟然减半?

我端起咖啡,淡定一笑:“兄弟,别急,那是你没让 MySQL 的引擎‘自律’起来。小开发在一旁满头大汗:“哥,明明加了组合索引,回表次数怎么还是这么高?线上 CPU 报警 99.9%,慢查询日志塞满了磁盘。周一早高峰,手机疯狂振动。

2026-04-14 21:54:43 16

原创 简历敢写“精通RAG“? 阿里一面挂了! 这3个夺命连环问,你能扛住几个?

简历写精通RAG却被面试官问哑火?只会调接口算什么精通RAG!带你深度拆解从Rerank到GraphRAG的王者演进, 硬核搞定大模型 RAG 项目落地方案。拒绝幻觉,这才是拿Offer的硬实力!

2026-04-14 21:53:08 308

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除