
记录成长与生活
无法预知未来,但可以审视过往
导语:海量数据题的本质只有一个矛盾——数据规模远超内存容量。所有解法都是围绕「如何让每个处理单元的数据量降到内存装得下」展开。本篇先给出通用武器库(分治、位图、堆、Trie、外排序)与选型对照,再逐一拆解 10 道经典题:找出相同 URL、高频词 Top100、访问最多的 IP、不重复整数、判断数是否存在、最热门查询串、不同电话号码计数、中位数、按频度排序、Top500。
导语:前两篇解决"怎么拆"和"怎么稳",本篇解决"怎么看得见、怎么发得安全、怎么迁得过去"。核心 6 题:可观测性三支柱与 TraceId 透传、蓝绿/滚动/金丝雀与全链路灰度、服务网格的价值与代价、绞杀者模式迁移单体、容量规划与全链路压测,最后用"微服务反模式清单"压轴,共 20 题收官。
导语:本篇回答"微服务系统到底长什么样、怎么让它稳定运行"。先给出组件全景图与一次请求的完整链路(这是架构题的骨架),再逐个展开注册发现的上下线机制、网关与 BFF 的分层、配置中心的治理,然后是同步 vs 异步通信的选型矩阵,最后落到弹性设计五件套的正确使用顺序与服务间鉴权,共 7 题。
导语:微服务面试最容易失分的地方,不是"会不会用 Nacos / Gateway",而是说不清它为什么存在、代价是什么、边界怎么划。本篇先把架构演进讲清楚(单体 → SOA → 微服务 → 云原生),再给出拆分方法论(DDD 限界上下文)、粒度判断标准与"分布式单体"的自检清单,然后回答两个高频决策题:什么时候不该上微服务、数据该不该共享库,最后以"编排 vs 协同"收尾,共 7 题。
导语:gRPC 面试的必答题几乎绕不开三件事——为什么偏偏选了 HTTP/2、Protobuf 到底快在哪、四种通信模式各用在什么场景。本篇先用图把 HTTP/2 的二进制分帧与多路复用(以及它没能解决的 TCP 队头阻塞)讲清楚,再逐字节拆开 Protobuf 的 Tag-Length-Value / Varint / ZigZag 编码与字段演进规则,接着画出 gRPC 四种通信模式的时序,补齐 Metadata / Deadline / Interceptor / 状态码这套"工程必备件",最后给出 Dubbo 与 gRPC 的完整对比与选型建议,共 6 题。
导语:Dubbo 面试真正的主战场在这里——注册中心、负载均衡、集群容错、SPI 四件套几乎是逢面必考,而且很容易问到源码级深度。本篇把 5 种负载均衡(含一致性哈希虚拟节点)、6 种集群容错(含"重试放大流量"的坑)、Dubbo SPI 为何优于 Java SPI(含 Adaptive / Wrapper / Activate 三要素)、协议选型与报文结构,以及超时重试的配置优先级与服务降级一次讲透,并补上 Dubbo 3 的关键变化,共 7 题。
导语:Dubbo 面试的第一层不是「Dubbo 怎么用」,而是「RPC 到底是什么、一次远程调用中间经过了什么」——这是能把"背配置的人"和"懂原理的人"区分开的分水岭。本篇先用 5 题打透 RPC 基础原理(定义与边界、完整调用链路、框架分层、动态代理、序列化选型),再落地到 Dubbo 的架构五角色、十层分层与服务暴露/引用流程,共 7 题。
导语:承接第一篇,本篇啃最后一座山——内存管理与实战。先对比
ByteBuf与 JDKByteBuffer的差异,讲清 ByteBuf 的四种分类与选型;再深入 引用计数与内存泄漏防护(线上最常见的踩坑点);然后图解 零拷贝的五个层次;最后收尾于 TCP 粘包拆包与 Netty 拆包器、编解码器体系、IO 线程阻塞问题 与 心跳保活机制,共 9 题。
导语:Netty 面试的「三座大山」是——线程模型、Pipeline 责任链、内存管理。本篇打前两座:先说清「Netty 是什么、为什么高性能、有哪些核心组件」,再用图把 Reactor 三种模型的演进 和 Netty 主从多线程模型 画明白,接着深挖
NioEventLoop的事件循环与 JDK epoll 空轮询 Bug 的修复,最后讲透 Pipeline 的双向链表结构 与 入站/出站事件传播顺序,共 9 题。