个人面经分享
个人面经分享
我将在这里分享我的面试经历,这是我的简历(实时更新)
欧斯特智能(上海)
2025.09.01
- 学校那边可以搞定吗?
- 有使用过三级缓存吗?
- 缓存一致性怎么保证?
- 如果数据库不支持Binlog怎么保证一致性?
- 你提到了延时双删,它有什么问题?
- JDK21有什么新特性?
- 虚拟线程有了解过吗?
- IO密集型的线程池怎么设计(虚拟线程)?
- MQ消息怎么避免重复消费和未消费?
- 在使用Redis和MQ之后怎么保证消息不丢失(分级分用户入库+WAL)?
- Springboot3相较2有哪些新的注解?
- 了解过grpc吗?
- 了解过DDD吗?
- 了解过向量数据库吗?
欧斯特智能(二面)
2025.09.03
- 介绍一下你的网关项目
- 你的网关项目相比SpringCloud Gateway有什么优势?
- 介绍一下grpc
- 介绍一下你定义的后置处理器是怎么工作的
- 写一个批量插入的代码示例
- Stream和for循环有什么区别?
- Springboot2和3分别怎么实现自动装配的?
- 说一下ConditionOn注解
- 怎么实现一个bean在另一个bean之后加载呢?
- yaml配置文件的两种读取方法
- 循环依赖怎么解决?
- 说一下AOP和它的几个概念
- 说一下Rocketmq的四种通知方式(广播路由什么的)
- 一些前端问题
智农天地(北京)
2025.09.04
- 做一个自我介绍
- 线程和进程有什么区别
- 说一下你编写代码中异步的体现
- 前端你有什么了解?
- 介绍一下你简历中这个票务平台的ai这一块内容
- 你对大模型还有什么其他应用吗?
- 说一下git的常用命令
- linux的常用命令有什么
- 介绍一下向量数据库
- 如果实习的话学校这边OK吗?
智农天地(二面)
2025.09.04
- 做一个自我介绍
- 说一下你项目中ai是怎么用的
- 可以实习多久?
- 有没有什么实习要求?(你问我干嘛?)
- 工资给你开多少吧?(黑人问号)
- 多久可以有明确的答复?
美团
2025.09.05
- 介绍一下你的网关项目和核心组件
- 你说这个项目是根据美团的sherperd网关改写的,说一下你做了哪些改动
- 你在做这个项目过程中遇到了哪些困难?
- 你第二个购票系统有哪些项目亮点?
- 介绍一下AOP是什么
- 你是怎么保证热点数据的一致性的?(缓存一致性问题)
- 你是怎么做到分库分表?为什么要分库分表?
- 介绍一下你的AI项目和它的核心功能
- 说一说什么是MCP,你是怎么用的?
- 对于AI你还了解了其他的一些概念吗?(我说的向量数据库)
- 你是哪个高中的?(当时问的我一脸懵,后来才知道面试官也是长治人,太巧了哈哈哈哈)
手撕: 反转链表(写代码+说思路+另一种解法)
反问: 我们平常的工作是大概是什么?
我们平常的工作中可以接触到核心业务代码吗?
您介意把这个面试过程放到我的博客上吗?
腾讯-游戏后台
2025.09.05
- 先做个自我介绍吧
- 选一个你认为最能体现你的技术的一个项目
- 介绍一下你的这个网关项目(打开屏幕共享进行讲解)
- 说一下这些组件是怎么互相作用的,它们的职责是怎么样的?
- 深挖项目.....
- 你认为你的项目有哪些不足?
- JVM虚拟机和服务是什么样的关系(进程和线程 包含和不包含)
手撕: 在排序数组中查找元素的第一个和最后一个位置
反问: 如果我加入贵公司,我需要提前学习一下什么呢?
刚刚你问我的JVM虚拟机那个问题您认为是怎么样的?
我可以把面试过程放到我的博客上吗?
美团(二面)
2025.09.09
- 因为面试官要求对问题保密鼠鼠我就不放问题了
- 今天的心情也是很不错 本来以为腾讯的面试挂了 但没想到挺到二面了 鼠鼠的腾讯梦还可以继续下去 这个面试也比较准备的不错
- 说些题外话 我也为面试付出了相当多的精力 可能没有大家想的那么轻松 一百多万字的八股反反复复背了好几遍 算法题前前后后也刷了好多遍了 项目实习也准备的比较充分了 打铁还是得自身硬啊 🐉🐉一百面到现在成功率还是百分百 希望可以撑到拿腾讯offer的那一天
- 最后说一句🐉人🐉言:人有些时候还是得自己成全自己啊~
腾讯-游戏后台(二面)
2025.09.11
- 做个自我介绍吧。
- 请详细介绍一下你简历上的项目,可以先从第一个网关项目开始。
- 你为什么会想要做这样一个网关项目?
- 介绍一下这个网关的整体架构和核心组件吗?
- 你在设计中提到了“前置处理器”和“后置处理器”,能具体讲讲它的作用和好处吗?
- 服务实例是如何将自己的信息注册到网关中心的?需要接入的服务做很多代码改造吗?
- 你提到了“接口上报”和“心跳续约”,这两者怎么做的?
- 当一个服务有多个实例时,网关是如何进行负载均衡的?你实现了哪些策略?
- 了解过一致性哈希吗?
- 如果某个服务实例或网关核心节点宕机了,系统会如何处理以保证高可用性?
- 你提到服务组和网关核心组是一对一绑定的,这种设计出于什么考虑?如何实现服务间的资源隔离?
- 网关的限流功能是如何实现的?
- 在网关集群部署的情况下,如何实现一个全局统一的分布式限流,而不是各个节点单机限流?
- 每次请求都访问Redis判断限流会有效率问题,有什么优化思路吗?
- 限流的阈值是固定的还是可以动态调整的?如果要动态调整,你会如何设计实现?
- 了解令牌桶、漏桶等常见的限流算法吗?它们是如何工作的?
- 你对这个网关项目做过性能测试吗?结果如何,比如QPS和延迟?
- 你提到网关带来了额外的3毫秒延迟,你分析过这部分延迟主要耗时在哪里吗?这个结果符合你的预期吗?
- 你的网关和服务之间有远程调用,能谈谈你对RPC的理解吗?它是如何工作的?
- 你项目中用到了Redis,能讲讲为什么Redis的性能这么高吗?
- 你提到了I/O多路复用,可以具体解释一下它的原理吗?你知道select、poll和epoll的区别吗?
- HTTP和TCP协议有什么区别和联系?
- 能否详细描述一下TCP的三次握手和四次挥手过程?
- 为什么TCP挥手需要四次,而不是三次?
- 了解TCP的滑动窗口机制吗?
- 接下来聊聊你的第二个项目,那个结合了Spring AI的购票系统,介绍一下你主要做了什么?
- 在这个项目中,AI主要应用在哪些方面?
- 你提到了Function Calling,能解释一下它是什么,以及它是如何工作的吗?
手撕忘了
反问: 要提前学什么?
组内业务
字节-今日头条
2025.09.12
- 请介绍一下你的网关项目是做什么的。
- 这个网关项目主要解决了什么问题?
- 服务之间使用的是什么通信协议 (HTTP, RPC)?
- HTTP 和 Dubbo 这两种协议有什么区别?
- 你提到 Dubbo 的二进制传输效率高,但 HTTP 底层也是 TCP,也是二进制,为什么效率有差异?
- Dubbo 默认使用什么序列化方式?
- 如果下游服务有多个实例,请求如何路由?
- 你知道哪些常见的负载均衡算法?
- 如何在代码中实现轮询(Round Robin)算法?
- 如何实现加权轮询(Weighted Round Robin)算法?
- 你是如何实现请求限流的?
- 限流逻辑是放在哪里实现的 (例如 Nginx, 服务实例)?
- 如果实例是动态扩缩容的,如何实现一个全局的总限流 (例如,所有实例加起来总共 100 QPS)?
- 可以用什么中间件来实现全局限流?
- 如果用 Redis,应该如何实现?具体的数据结构、Key 和 Value 是什么?
- 多实例并发访问 Redis 进行限流,如何处理并发问题?
- 网关的元数据信息(如服务地址)是存储在哪里的?
- 了解 Redis 的高可用实现方案吗?
- 在主从模式下,如果 Master 节点挂了,会发生什么?
- Sentinel (哨兵) 是如何从多个 Slave 节点中选举出新的 Master 的?选举的逻辑是怎样的?
- 了解 Raft 协议吗?
- 进程和线程有什么区别?
- 进程分配的“资源”具体指什么?
- 在单核 CPU 的情况下,使用多线程能提高效率吗?为什么?
- 为什么 Tomcat 默认会开 200 个线程,它不怕线程切换的开销吗?
- 为什么 Redis 是单线程的,但性能却非常高?
- 为什么处理 I/O 任务时,使用多线程更合适?
- 你认为一个服务的线程数应该设置成多少比较合适?
- 为什么要使用线程池?
- 当一个新任务提交给线程池后,它的内部执行流程是怎样的 (核心线程、队列、最大线程、拒绝策略)?
- 如果服务器只有 2G 物理内存,一个程序需要申请超过 2G 的内存,它还能运行吗?为什么我们平时在电脑上开很多软件,把内存占满了,软件也不会立刻全部崩溃?
- TCP 协议的“可靠”体现在哪些方面?
- 发送方 A 如何知道接收方 B 没有收到某个数据包?
- A 和 B 通信时,B 所在的服务器整个宕机了,A 这边会有什么现象?
- B 服务器没宕机,只是 B 的应用程序进程崩溃了,这时 A 持续发数据给 B,会发生什么?
- InnoDB 存储引擎使用什么数据结构做索引?
- 请描述一下 B+ 树的结构。
- B+ 树和 B 树有什么区别?
- 为什么 MySQL 选择 B+ 树而不是 B 树?
- 为什么 B+ 树的叶子节点用链表串联起来,就能提升 I/O 性能?
- 为什么不使用平衡二叉树(如 AVL 树)这类结构做索引?
O(log n)的复杂度不是已经很快了吗? - 一张有 200 万条数据的表,它的 B+ 树索引大概有多高?这个层数是怎么计算出来的?
手撕: 给定一个整数数组
nums和一个整数k,找到该数组中和为k的连续子数组的个数。反问:
团队主要的技术栈是什么?
工作地点在哪里?
团队负责的业务是什么?
字节-TikTok
2025.12.08
- 你是怎么想到做这个网关项目的,主要的是要解决一个什么样的问题?
- 这个系统最主要的亮点是什么?
- 讲一下具体的调用逻辑是什么样的?
- 这个网关系统最主要解决的是什么问题?
- 你觉得这里面哪一部分是最难做的?
- 你提到项目改了5版,前4版遇到了什么问题导致要做到第5版?
- 详细介绍一下现在的限流是怎么做的?
- 鉴权功能是怎么做的?
- 你是如何区分身份认证和权限控制的?(面试官建议分角色鉴权)
- 你提到的“扩展性”是指什么?插件是以什么形式接入的?
- 你自己做过压测吗?结果如何?
- 在实习过程中,遇到过什么处理起来比较困难的问题?
- 你自己之前用过多线程编程吗?
- 了解TCP四次挥手的状态吗?为什么要有四次挥手?
- 如果客户端发送了FIN包后,突然断电或不再传输了,会发生什么?
- TCP是如何保证传输的可靠性的?
- 了解死锁吗?死锁产生的条件是什么?
- 你有没有遇到过死锁?
手撕: 给出两个有序列表的迭代器,合并并返回一个新的迭代器,有没有更好的方式(双指针)
反问:
你们希望我有一个除了技术之外有一个什么特质,性格上也好,什么也好
对我的要求是放养还是比较push
团队的技术栈是什么
快手-商城
2025.12.09
- 在网关项目中,你觉得最具挑战性的点是什么?你是怎么解决的?
- 你提到了分布式限流,能不能详细介绍一下令牌桶和滑动窗口这两个算法的原理?
- 你刚才说向Redis批量获取50个令牌,那如果你使用ZSet做滑动窗口,这个批量获取的逻辑是如何配合的?
- 架构图里的 Netty 是用来做什么的?
- 你提到 Netty 吞吐量高,为什么它吞吐量高?
- 展开讲讲零拷贝和Reactor线程模型
- Reactor 模型中有哪些角色?每个角色负责的职责是什么?(Acceptor, IO线程, Worker线程等)
- 这段实习经历中技术上最大的挑战是什么?
- 你提到CodeBaseMCP只能获取Master分支,那你是如何解决获取代码Diff和非Master分支代码这个问题的?
- 你提到了动态线程池,你知道它是怎么实现的吗?
- Spring的@Transactional注解是如何工作的?它的执行过程是怎样的?
- AOP的原理是什么?动态代理有哪些实现方式?了解过ASM吗?
手撕: 旋转矩阵
反问:
我们那边主要的业务是什么?
你们希望我有一个除了技术之外有一个什么特质,性格上也好,什么也好
对我的要求是放养还是比较push
字节-TikTok(二面)
2025.12.11
- 学校课程安排和实习时间的协调情况
- 挑选项目最核心的部分介绍,包括服务发现机制以及请求是如何最终路由到下游服务的
- 市面上已经有很多成熟的网关,为什么你要自己开发一个?你的网关和它们有什么区别?
- 相比于你参考的美团技术文章中的架构,你具体做了哪些改进?
- 介绍一下分布式限流的具体实现逻辑
- 什么是Agent to Agent?
- 你对 MCP (Model Context Protocol) 协议有什么了解?它为什么能支持大模型去调用工具?
- 实习项目最终的成功率是多少?你们是如何定义和验证“成功”的?
- 介绍一下Java的类加载机制的几个阶段
- 解释什么是双亲委派模型,以及它的加载顺序和作用。
手撕: 给定一个血缘依赖关系图(Map结构,表示节点及其上游),要求打印出指定节点的所有下游节点(没写出来)
反转链表(写出来了)
反问:
需要转语言吗?
团队业务
面试过程中不太满意或者没有答到点上的地方?
快手-商业化
2025.12.18
- 讲一个你在实习过程中觉得比较有挑战性、比较有价值的事情
- 大模型相关的技术是你自己学的吗?你是通过什么渠道和方式学习的?
- MySQL使用的是B树还是B+树?它们之间有什么区别?
- 主键索引和唯一索引有什么区别?
- MySQL查询时如果路由到一个索引,它是如何查找到最终数据的?
- 最终的数据存在哪里?如果是走唯一索引,一共需要走几次索引树?
- MySQL的事务隔离级别有哪些?
- 这几个隔离级别分别是基于什么方式实现的?(考察MVCC、锁机制)
- Redis是单线程还是多线程?
- 如果一个Key过期了,Redis是怎么清理它的?
- Redis有哪些常用的数据结构?
- Hash结构的底层存储是什么?渐进式Rehash是怎么做的?
- Java注解的实现原理是什么?
- 一个任务进入线程池,直到把线程池打满,整个运行流程是怎样的?
- 接口要求100 QPS,下游依赖接口耗时500ms,现有2台机器(4核8G),线程池参数应该如何配置?
- MQ是如何保证消息的顺序消费的?
- 讲一下JVM里的垃圾回收过程
- 大模型从输入一段话到输出内容,底层的处理流程是怎样的?
- 讲一下你对RAG(检索增强生成)的理解。
- MCP和或FunctionCalling的区别是什么?
- 多智能体协同(Agent to Agent / Multi-Agent)了解吗?
- 在提示词压缩优化方面有什么经验吗?
手撕: 搜索二维矩阵
反问:
团队负责的业务是什么?
后面的流程
如果去实习的话需要补充那些知识?
百度-Java工程
2025.12.24
- 美团实习的业务需求是什么?程序的输入和输出是什么?
- 刚开始的方案遇到了什么问题?为什么效果不好?
- 你是如何解决非Master分支代码获取问题的?
- JavaParser在这个过程中起到了什么作用?分析出了哪些信息?
- 使用了什么类型的大模型?参数量大概是多少?
- 你提到处理过一次线上OOM问题,请详细讲讲排查过程。
- 发生 OOM 后,你是如何获取堆栈信息的?
- 为什么数据库连接池会耗尽?
- 第一段实习过程中还有什么难点?
- 介绍一下你的网关系统
- 是如何通过Redis发布/订阅模式实现心跳和通知的?
- 你做了过压测吗?QPS是多少?
- 你的网关为什么比SpringCloudGateway快?
- 支持哪些维度的限流?为什么 IP 限流的优先级排在最后?
- 本地+分布式限流的具体逻辑是怎样的?
- 限流配置是如何同步的?
- 本地缓存是如何保证与Redis中数据的一致性的?配置修改的话本地缓存是如何感知的?
- 你的网关是如何调用下游Dubbo服务的?
手撕: 两个线程交替打印,一个打印数字,一个打印字母(12a34b56c...)
反问:
需要转语言吗?
面试结果大概什么时候出?