- 博客(932)
- 收藏
- 关注
原创 面试官:堆外内存爆了,Dump 文件没用,你怎么定位?3招定位线上“幽灵内存泄漏”
应用层快速排查用Arthas的mbean命令查看DirectBuffer用量,用ognl命令查看Netty堆外内存占用,定位是不是框架层面的泄漏;快速验证试探用vmtool强制触发GC,看内存是否下降,排查是不是GC参数配置不当导致的回收不及时;JVM层精准定位开启NMT,用jcmd查看内存分布,通过基线对比找到持续增长的内存区域,缩小排查范围;系统层终极排查用pmap查看内存段,排查是不是Glibc内存碎片问题,极端场景用perf火焰图定位原生库泄漏。堆内OOM看代码,堆外OOM看架构。
2026-07-05 21:37:30
145
原创 拼多多二面:百亿补贴1499 飞天茅台秒杀,怎么防黄牛脚本?这题把老司机问懵了
秒杀系统,从来都不是一串简单的 Redis 扣减代码。它是一场融合了密码学、物理学、心理学以及高并发架构的全面战争。技术保证了系统的吞吐上限,而风控,才真正守住了电商平台补贴用户的初衷。
2026-07-05 21:36:57
154
原创 2000道面试必问的Java面试八股文及答案整理(2026版)
说快也快,说不快也不慢!年前,陆陆续续,好多大厂都在裁员;年后,又有一大批程序员失业,找不到避风港;这时候,就有人说了,为什么找工作这么难?其实,并不是找工作难,而是你没有找对方法、面试技巧,你更需要的是硬技术+软技能相结合,才能畅通无阻,平淌大厂offer拿到手软!在这激动人心的时候不得不给正在找工作的程序员来一波重大福利了,小编准备了今年最新的2000道大厂的java面试题,希望大家能够喜欢!不管最近要不要去面试,建议大家都保存一份!!学完之后不论是 厂内晋升 还是 跳槽涨薪 都不在话下!
2026-07-03 21:03:27
177
原创 2026 Java AI 选型终极指南:四大框架深度横评,谁才是真正的“全能王”?
2026 年,Java 开发者进入 AI 赛道的"入场券"越来越多,选择越多,困惑也越多。后台每天都有兄弟问我:"老师,我要做一个 AI 助手,该用哪个框架?" 但问题是,不同的业务场景,答案完全不同。你是要做一个RAG 知识库问答?→ 选型逻辑完全不同于做AI Agent 自动化。你的团队是Spring 老兵?→ 和刚接触 AI 的新手,推荐路径也不一样。你的业务需要多个 AI 互相协作?→ 这时候单框架已经不够用了。今天这篇文章,我不打算讲概念,直接从工程师视角。
2026-07-03 21:02:40
212
原创 面试官:“你一天烧几十个token也好意思面AI应用开发?”我镇定自若:“我烧的不是token,是我的热情。”面试官:“明天二面。”
当我们把大模型作为一个核心组件接入业务系统时,第一步就是要抛弃拟人化的业务直觉,建立起工程师的客观视角。Token 是成本与性能的物理标尺:它不仅决定了你的计费账单和推理延迟,更决定了模型对文本的理解粒度。做容量规划时,必须按 Token 算账,而不是按字数算账。上下文窗口是极其稀缺的资源:哪怕模型宣称支持 1M 上下文,也不意味着可以毫无节制地堆砌数据。为 Prompt、RAG 检索片段、历史对话和输出预留做好严格的 Token 预算分配,是走向生产环境的必修课。采样参数是业务场景的调音台。
2026-07-02 21:53:52
228
原创 Redis高可用架构解析
Redis高可用架构的本质,是以冗余换稳定,以空间换时间。Sentinel以轻量级监控与自动化故障转移见长,适合数据规模可控、追求快速落地的传统业务;Cluster则以去中心化分片打破单机瓶颈,契合云原生时代对弹性与海量吞吐的诉求。高可用设计并非孤立的技术堆砌,需与持久化策略(RDB快照+AOF混合)、客户端重试退避、限流降级机制协同运作,方能构建真正具备韧性的缓存底座。
2026-07-02 21:52:54
174
原创 滴滴二面:线上敲了个 DEL 命令,为何几万笔支付瞬间超时报错?深入Redis内核源码分析
在 Redis 的世界里,“大 Key”通常指的不是 Key 的名字有多长,而是 Value 的体积过大,或者 Hash、List、Set 集合中的元素数量庞大(例如塞入了上百万个元素)。无论你的 Key 是存了 1 个字符,还是存了 1000 万个元素的超级大 Hash,只要 Key 的名字定了,它算出来的 CRC16 值就永远不变。这样不仅化解了单点阻塞,改变了 Key 的名称后,还能利用底层的 CRC16 算法,把数据均匀散射到集群的各个槽位上,充分压榨 Cluster 的多节点性能。
2026-07-01 22:01:03
243
原创 Java 终于有自己的 AI Agent 框架了?
最近半年,可以说是技术圈最火的概念之一。但很多它们确实很好用。但问题来了,调试困难、运维复杂、安全难控。**-**很多人会问:Python Agent 不香吗?确实香,但落地企业系统时会遇到四个大坑。
2026-07-01 22:00:06
195
原创 三面滴滴失败,总结了Java面试题,有几个题还是一直搞不懂?
如果你平时没有注意去总结的话,那么当你面试被问到的时候可能会是一脸懵圈,就算这个问题你知道怎么回事,但是你平时没有认真总结,你也可能会出现逻辑混乱的情况,从而错失工作机会。有些知识点不经常使用就会忘记,但是面试还会问,对此,我也是深受其害,所以我决定将这些遇见的问题整理下来,分享出去,帮助更多的人,我们共同进步。220、 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?138、http 响应码 301 和 302 代表的是什么?
2026-06-30 21:55:06
180
原创 面试官陷阱:动态修改核心线程数,是立即生效的吗?90%的Java开发都栽在这道题上!
下次再有面试官想在这个问题上套路你,请直接把这段话甩在他脸上:如果是调小,平滑缩容,立刻中断空闲线程。如果是调大绝对不会立刻瞎建线程!它取决于当前队列里有没有积压任务。没有任务,它就按兵不动。在真实的生产预热场景中,光调大参数是外行做法。修改完参数后,必须强制调用 prestartAllCoreThreads() 方法,让核心线程提前创建并阻塞在队列上待命,以此来消除系统冷启动抖动。这才是完整的动态调优闭环。
2026-06-30 21:54:18
160
原创 美团三面挂了!被问“分布式事务选型”,我答了 Seata AT,面试官:千万级资损你负责?
技术面试拼的不是死记硬背,而是对系统稳定性的敬畏。当你能从“怎么实现”跨越到“如何避免千万级资损”时,你就已经具备了架构师的思维高度。
2026-06-26 22:03:21
155
原创 字节面试:5万个敏感词库,3000字长文,要求10毫秒内审核完毕,怎么做?
DFA(确定有限自动机)听起来很高大上,但它在敏感词过滤里的本质就是构建一棵Trie 树(字典树)。通俗点说,Trie 树就像是一本超级高效的“按拼音查字法”新华字典。假设我们的敏感词库里有“赌博”、“赌局”这两个词。传统方法是存两个完整的字符串;而在 Trie 树里,内存中会构建一个树状结构:根节点往下找,有一个“赌”字节点。“赌”字往下,分出两条岔路,一条是“博”,一条是“局”。在这两个结尾字上,打上一个结束标记(End)。它最大的优势在于空间换时间。
2026-06-26 22:02:36
136
原创 阿里面试:AI Agent把公司库删了,你怎么防?这道“指令注入”题干废了90%的候选人
看到了没?AI时代的安全架构,已经不是写写拦截器那么简单了。从意图审查到权限隔离,再到死循环熔断,每一环都是实打实的生产经验。掌握了这套架构思路,不仅面试横着走,真在线上跑业务你也能睡个安稳觉。大家在搞Agent的时候还踩过什么坑?来留言区,咱们一起盘盘!
2026-06-25 22:01:43
202
原创 删库不用跑路!一个Java新人的生死2小时:误删8000条生产数据后,他完成了自救
对于程序员来说,最恐怖的从来不是「删库」,而是面对事故时的慌乱和毫无办法。对生产环境永远保持敬畏心,是比代码能力更重要的职业底线。但我们必须清醒地认识到:没有人永远不犯错,个人的细心和敬畏心,只能减少事故发生的概率;而完善的流程管控、工具兜底,才能真正杜绝事故造成的不可逆损失。小杨的故事,不是一个「新人犯错被原谅」的鸡汤故事,而是给所有技术人提了个醒:一线开发要守住操作的底线,技术管理者要守住体系的底线。只有个人规范和团队流程双保险,才能真正守住公司的核心数据资产。
2026-06-25 22:01:08
186
原创 阿里校招 Agent 开发一面凉经|45 分钟 14 连问,从项目拷打到技术底层,全程高压实录
召回率(Recall)= 「检索出的相关文档数量」/ 「库中所有与 query 相关的文档总数」,衡量的是检索系统能不能把所有相关内容都找出来,分母绝对不是总文档数;
2026-06-23 21:59:01
201
原创 面试官挖坑:线程池动态调参导致Core>Max,系统会发生什么?
兄弟们,这才是真正的实战教学。很多人自己都没跑过代码,背着八股文就去面试了。但这一个“23 和 5”的问题,以及 JDK 版本演进的 Fail-Fast 机制,直接揭露了 JDK 底层的锁机制和线程池的生命周期管理。下次面试如果遇到聊“动态线程池”,你直接把这个“扩容时 Core 超过 Max 导致的疯狂自杀拔河现象”以及“JDK 8 到 17 的源码演进”甩给面试官。面试官绝对当场被你震慑,这才是踏踏实实踩过坑、流过血、看过源码的架构师该有的水平!
2026-06-23 21:58:16
237
原创 Redis这14道面试题,面试官最爱问,第3题90%的人答不准确
这个问题我之前见过,但没仔细研究,面试时瞎猜了个答案。面试官:"Redis Cluster为什么是16384个槽,而不是65536个?我说:"因为16384是2的14次方,方便路由计算?面试官笑了笑:"不是。后来我仔细研究过,16384这个数字是作者拍脑袋定的,但有几点合理性:心跳包大小:节点间每s互发心跳,携带所有槽位信息。16384个槽,用2KB就能传输。如果用65536个槽,心跳包会大很多,占带宽。够用:假设一个集群有1000个节点,每个节点平均分16384/1000 ≈ 16个槽,完全够用。
2026-06-22 22:00:09
167
原创 网关明明存了 ThreadLocal,为什么进线程池 userId 全丢了,如何解
把问题解决了,最后 Fox 还要再唠叨一句关乎系统健康度的底线:无论是用原生的 ThreadLocal,还是阿里的 TTL,只要是在复用线程的环境下(比如 Tomcat 线程池、业务线程池),用完之后,必须老老实实在 finally 块或者拦截器的 afterCompletion 方法中,调用 remove() 进行清理!因为 ThreadLocalMap 里的 Key 虽是弱引用,但 Value 是强引用。如果不清理,那些随着请求进来的大对象(比如完整的 UserInfo)就会在线程中不断堆积。
2026-06-18 21:57:46
219
原创 面试官:在高并发场景下,你是如何保证数据的一致性和可靠性的?
别再死记硬背那些过时的八股文了。可用性优先 (Availability First)接受软状态 (Accept Soft States)最终一致性兜底 (Eventual Consistency)这才是真正“精通高并发架构”该有的样子!
2026-06-18 21:57:07
184
原创 面试官:海量订单超时处理,究竟该选 RocketMQ 还是定时跑批?深度拆解5 种架构方案
很多开发者第一反应就是“延时队列”,但当面试官把场景升级到“双 11 级别、上亿订单量、跨度长达 14 天”时,如果你还只知道一个 DelayQueue,那基本就和 Offer 无缘了。今天咱们不聊虚的,直接通过,深度复盘订单超时处理的五大技术流派,带你从“单机思维”进阶到“分布式架构思维”。
2026-06-17 21:55:31
170
原创 B站二面:设计一个“评论盖楼”系统,我只答了“递归”,面试官笑了:你连索引都不会建?
技术面试考的从来不是你能不能写出代码,而是你“见过多少世面”。能用扁平化解决的,绝不搞递归;能用 MQ 异步的,绝不搞同步阻塞。这套扁平化存储 + Redis ZSet + MQ 异步的组合拳,不仅能解决评论系统,帖子的回复、IM 群聊消息通通都能用!
2026-06-17 21:54:54
195
原创 大厂面试:如何设计一个系统,实现毫秒级查询10亿手机尾号后4位?
下次面试再问这个,直接用这就话降维打击:“面试官,这个问题的本质是海量数据的非分片键查询。我不会搞昂贵的 ES,而是采用‘异构索引表 + 覆盖索引’的方案。建立一张独立的索引表,利用手机尾号天然的离散性,直接取模路由到 1000 张分表中,避免了全库广播扫描。同时,为了防止单次查询数据量过大打爆内存,我会严格限制分页查询。对于热点尾号,利用 Redis 缓存首页数据进行兜底。这是一套成本最低、性能最高、且完全可落地的架构方案。写在最后所谓的架构设计,从来不是堆砌组件。
2026-06-16 21:58:56
215
原创 字节面试:5万个敏感词库,3000字长文,要求10毫秒内审核完毕,怎么做?
DFA(确定有限自动机)听起来很高大上,但它在敏感词过滤里的本质就是构建一棵Trie 树(字典树)。通俗点说,Trie 树就像是一本超级高效的“按拼音查字法”新华字典。假设我们的敏感词库里有“赌博”、“赌局”这两个词。传统方法是存两个完整的字符串;而在 Trie 树里,内存中会构建一个树状结构:根节点往下找,有一个“赌”字节点。“赌”字往下,分出两条岔路,一条是“博”,一条是“局”。在这两个结尾字上,打上一个结束标记(End)。它最大的优势在于空间换时间。
2026-06-16 21:58:26
159
原创 大厂高频面试题:手机号加密存储后,如何快速按尾号查询?
面试官:"在你的项目中,用户手机号是怎么存储的?我们都知道手机号属于敏感个人信息,必须加密存储。那如果现在有一个需求:运营后台需要支持,同时还要满足《个人信息保护法》和等保2.0的合规要求,你会怎么设计?
2026-05-25 21:57:54
309
原创 大厂面试:如何设计一个系统,实现毫秒级查询10亿手机尾号后4位
下次面试再问这个,直接用这就话降维打击:“面试官,这个问题的本质是海量数据的非分片键查询。我不会搞昂贵的 ES,而是采用‘异构索引表 + 覆盖索引’的方案。建立一张独立的索引表,利用手机尾号天然的离散性,直接取模路由到 1000 张分表中,避免了全库广播扫描。同时,为了防止单次查询数据量过大打爆内存,我会严格限制分页查询。对于热点尾号,利用 Redis 缓存首页数据进行兜底。这是一套成本最低、性能最高、且完全可落地的架构方案。写在最后所谓的架构设计,从来不是堆砌组件。
2026-05-25 21:57:12
338
原创 美团二面挂了!问 “用户积分系统怎么设计”,我答 “加个字段存总数”,面试官:积分过期你怎么算?
设计完架构,面试官一定会进行地狱级追问Q1:如果我每天签到送 1 积分,连续签了 3 年,我有 1000 条 Bucket。现在我要买一个 500 分的东西,岂不是要在一个事务里 Update 500 行记录?数据库不就死锁了?这是个好问题(碎片化账本)。针对这种‘碎片积分’,必须引入‘定期合并(Compaction)’机制。后台 Job 会定期扫描 Bucket 表,把同一个用户、相同过期时间(或者相近过期时间)的多个小 Bucket,合并成一个大 Bucket。
2026-05-24 21:56:35
329
原创 面试官:在高并发场景下,你是如何保证数据的一致性和可靠性的?
别再死记硬背那些过时的八股文了。可用性优先 (Availability First)接受软状态 (Accept Soft States)最终一致性兜底 (Eventual Consistency)这才是真正“精通高并发架构”该有的样子!
2026-05-22 21:58:37
313
原创 B站二面:设计一个“评论盖楼”系统,我只答了“递归”,面试官笑了:你连索引都不会建?
技术面试考的从来不是你能不能写出代码,而是你“见过多少世面”。能用扁平化解决的,绝不搞递归;能用 MQ 异步的,绝不搞同步阻塞。这套扁平化存储 + Redis ZSet + MQ 异步的组合拳,不仅能解决评论系统,帖子的回复、IM 群聊消息通通都能用!
2026-05-22 21:57:14
341
原创 字节面试:5万个敏感词库,3000字长文,要求10毫秒内审核完毕,怎么做?
DFA(确定有限自动机)听起来很高大上,但它在敏感词过滤里的本质就是构建一棵Trie 树(字典树)。通俗点说,Trie 树就像是一本超级高效的“按拼音查字法”新华字典。假设我们的敏感词库里有“赌博”、“赌局”这两个词。传统方法是存两个完整的字符串;而在 Trie 树里,内存中会构建一个树状结构:根节点往下找,有一个“赌”字节点。“赌”字往下,分出两条岔路,一条是“博”,一条是“局”。在这两个结尾字上,打上一个结束标记(End)。它最大的优势在于空间换时间。
2026-05-19 21:59:42
380
原创 面试官:讲讲微信“正在输入”的原理?别再拿 WebSocket 忽悠我了
如果 A 触发了状态,B 的手机上也显示了‘正在输入’。这时候 A 突然拿着手机进了电梯,彻底断网了,没法发‘我输入完了’的信号。B 的屏幕是不是就永远卡死在‘正在输入’上了?如果你答“服务器用心跳包检测,掉线了再通知 B”,那你就太嫩了,太耗费服务器资源了!
2026-05-19 21:58:37
312
原创 阿里校招 Agent 开发一面凉经|45 分钟 14 连问,从项目拷打到技术底层,全程高压实录
以上就是这篇阿里 Agent 开发一面凉经的全实录与考点拆解,也是「
2026-05-15 22:31:16
367
原创 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:31
354
原创 大厂高频面试题:手机号加密存储后,如何快速按尾号查询?
面试官:"在你的项目中,用户手机号是怎么存储的?我们都知道手机号属于敏感个人信息,必须加密存储。那如果现在有一个需求:运营后台需要支持,同时还要满足《个人信息保护法》和等保2.0的合规要求,你会怎么设计?
2026-05-13 21:58:51
299
原创 网关明明存了 ThreadLocal,为什么进线程池 userId 全丢了,如何解
把问题解决了,最后 Fox 还要再唠叨一句关乎系统健康度的底线:无论是用原生的 ThreadLocal,还是阿里的 TTL,只要是在复用线程的环境下(比如 Tomcat 线程池、业务线程池),用完之后,必须老老实实在 finally 块或者拦截器的 afterCompletion 方法中,调用 remove() 进行清理!因为 ThreadLocalMap 里的 Key 虽是弱引用,但 Value 是强引用。如果不清理,那些随着请求进来的大对象(比如完整的 UserInfo)就会在线程中不断堆积。
2026-05-12 22:00:35
374
原创 滴滴二面:线上敲了个 DEL 命令,为何几万笔支付瞬间超时报错?深入Redis内核源码分析
在 Redis 的世界里,“大 Key”通常指的不是 Key 的名字有多长,而是 Value 的体积过大,或者 Hash、List、Set 集合中的元素数量庞大(例如塞入了上百万个元素)。无论你的 Key 是存了 1 个字符,还是存了 1000 万个元素的超级大 Hash,只要 Key 的名字定了,它算出来的 CRC16 值就永远不变。这样不仅化解了单点阻塞,改变了 Key 的名称后,还能利用底层的 CRC16 算法,把数据均匀散射到集群的各个槽位上,充分压榨 Cluster 的多节点性能。
2026-05-11 22:00:39
359
原创 大厂面试:如何设计一个系统,实现毫秒级查询10亿手机尾号后4位?
下次面试再问这个,直接用这就话降维打击:“面试官,这个问题的本质是海量数据的非分片键查询。我不会搞昂贵的 ES,而是采用‘异构索引表 + 覆盖索引’的方案。建立一张独立的索引表,利用手机尾号天然的离散性,直接取模路由到 1000 张分表中,避免了全库广播扫描。同时,为了防止单次查询数据量过大打爆内存,我会严格限制分页查询。对于热点尾号,利用 Redis 缓存首页数据进行兜底。这是一套成本最低、性能最高、且完全可落地的架构方案。写在最后所谓的架构设计,从来不是堆砌组件。
2026-05-11 21:59:15
378
原创 阿里二面挂了!被问“RAG效果不好怎么评估”,我答凭感觉,面试官:你搁这玄学炼丹呢?
RAG 开发不是在黑盒子里念咒语,而是一场极其精密的工程实践。当你能从“怎么让模型变好”跳跃到“怎么建立一根尺子,精确测量模型的每一点进步”时,你就不再是一个简单的调包侠,而是掌握了系统演进生命线的架构师。
2026-05-08 22:03:10
323
原创 同样的大模型,为什么别人的 Agent 能稳跑 6 小时,你的 30 分钟就“胡言乱语“?秘密就在 Harness 里。
AI落地的核心挑战,正在从让模型看起来更聪明,转向让模型在真实世界里稳定地工作。Prompt解决表达,Context解决信息,Harness解决执行稳定性。三者包含而非替代。真正决定能不能落地、能不能稳定交付的,不是模型,是Harness。而Harness之外,人的动态驾驭同样不可替代。同样的模型,Harness的差距可以带来13.7个百分点的提升。在某头部AI实验室的512K行Agent项目里,95%的代码全是Harness。这不是理论,是账本。
2026-05-08 21:59:00
414
原创 有AI了,还啃什么源码?
AI能告诉can_match是干什么的,但你得先知道"之前没加时间范围也很快、现在就慢了"这个现象背后是can_match在起作用,你才会往这想。你问AI"bulk怎么写最快",它告诉你用action和metadata分行,但它不会说"别混update"——因为你根本不会问这个问题。因为别人问你问题的时候,你不能说"等我问问AI",你得有自己的判断。我试了几次,确实厉害。我让他把集群配置和索引mapping发过来看了一眼——他这个索引是按天滚动的,保留了30天的数据,也就是30个索引、60多个shard。
2026-05-07 15:49:40
234
原创 你让AI帮你规划三亚旅行,背后发生了什么???
从你按下回车,到AI给你推"Day1:飞三亚→入住亚龙湾→傍晚去第一市场吃海鲜→散步椰梦长廊看日落",这11个概念全都在30秒内跑了一遍。
2026-05-07 15:47:55
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅