硕2,2024淘天、字节、快手、滴滴面经分享
这是一位读者从杭州某大厂跳槽后的社招面经,期间一共面试了字节、快手、滴滴和淘天这四家公司。除了字节,其他三家的 offer 都拿到了。
下面是正文。
个人情况
211 本硕,22 年 6 月底校招入职杭州某大厂。由于想尝试换方向以及对公司整体和所在业务的未来发展不看好,因此开始寻找新的机会。
面试准备 & 整体情况
春节前(2 月初)零散地看了一些面经,了解了一下社招面试的情况。春节回来后,从 2 月下旬开始正式准备,准备了 2-3 周,从 3 月中旬开始面试。在面试过程中,我同步进行了复盘和知识巩固。整个面试过程持续到 5 月上中旬,期间总共面试了 4 个公司多个部门。
由于个人仅考虑 Base 杭州,所以只投递了上述 4 家公司,最终拿到了 3 个 Offer,分别是:淘天、快手和滴滴。
因为我在面试过程中参考了一些知识星球的资料(例如《Java 面试指北》、《后端面试高频系统设计&场景题》)以及 JavaGuide 网站(javaguide.cn)的知识点,所以决定回馈社区,记录一下过去近 2 个月的心路历程。
面试情况
字节(两个部门:二面挂 & 三面挂)
财经-部门 A
一面(全程基础八股 + 算法,无项目相关):
- 一般会关注哪些稳定性指标?
- 你们内部核心应用系统的 CPU 利用率一般是多少?
ConcurrentHashMap如何保证线程安全?- 深拷贝和浅拷贝的区别?平时是否有用到浅拷贝?
- JVM 内存结构?
- 字符串存储在什么位置?
- 为什么字符串要存储在常量池中?
String底层数据结构?为什么 JDK9 之后底层数据结构改动?- 内存零拷贝了解吗?怎么减小拷贝次数?说一下实现方式?
- 线程池的原理?详细介绍一下拒绝策略?
- 用过 Redis 吗?说一下基于 Redis 实现分布式限流器?
- Redis 分布式限流具体使用的是 Redis 的什么命令?
- MySQL 隔离级别?可重复读隔离级别下会存在什么问题?幻读又会存在什么问题?
- 如何解决幻读?
- 手撕算法题:LC1004 最大连续 1 的个数 III
二面(全程项目 + 算法,无八股相关):
- 项目介绍与发散。
- 手撕算法题:LC236 二叉树的最近公共祖先
商业化-部门 B
一面:
- 讲一下自己觉得最有技术深度和难点的项目?是否有指标衡量?
- Java 线上问题排查思路:应用启动时 CPU 很高,一段时间后下跌恢复稳定?有这样的排查案例吗?
- 线程池的具体流程?详细展开一下线程池队列和拒绝策略细节?
- 锁这块儿,有用到分布式锁吗?
- 讲一下 ZK 分布式锁的实现?
- Redis 分布式锁的实现?
- 什么情况下 Redis 分布式锁会出现高可用问题?(现象:50ms 内两个请求都抢到了锁)
- MySQL 查询流程,以及引擎层的细节查询流程?
- 设计题:设计一个单点登录(SSO)系统。
- 手撕算法题:LC46 全排列
二面:
- 业务稳定性怎么做?讲一下你的方法论。
- 讲一下业务大促的压测流程。
- 聊一下业务怎么接入风控系统。
- 项目介绍(问了两个项目)。
- Spring AOP 原理?
- 线程池的原理和拒绝策略细节?
- 手撕算法题:LC3 无重复最长子串
三面挂:
- 项目介绍与发散。
- Java Agent 两种方式的区别(项目发散)。
- OSGi 和父类优先(双亲委派)类加载机制比较?(项目发散)
- ClassLoader 和 ClassName 的映射的数据结构是什么?
- Spring 事务原理?
- 为什么同一个类中 A 方法打了
@Transactional注解后,B 方法引用 A 方法会导致注解失效? - 线上消息积压怎么处理?
- 怎么评估线上消息积压?
- RocketMQ 顺序消息的原理?
- RPC 框架如何做限流?
- 手撕算法题:小于 N 的最大数(字节题库原创题)。
快手(Offer)
电商-部门 A
一面:
- 项目介绍。
- 讲一下 Redis 内存淘汰策略?
- 你所接触的业务中,DB 和缓存的关系?
- 写 DB 时,如果删除缓存时大量流量访问,会不会导致 DB 不可用?
- 怎么设计布隆过滤器?
- 线程池参数通常怎么设置?怎么实际调整?
- 如何区分 CPU 密集型任务和 IO 密集型任务?有什么工具辅助?
- 手撕算法题:LC426 变种二叉树后序遍历转双向链表
二面:
- 稳定性工作介绍。
- 讲一下你所在业务引擎如何设计。
- 资金领域做资金安全应该如何考虑?
- JVM 内存结构?
- JVM 内存屏障?垃圾回收器介绍?
- CMS 通常搭配什么垃圾回收器?具体的流程?
- MySQL 索引介绍?MySQL 如何优化索引?
- MySQL 如何保证 ACID?
- 深分页为什么执行耗时慢?如何优化?
- 手撕算法题:LC92 反转链表 II
三面:
- 项目介绍。
- 如何设计分布式限流?并尽量写一个 Demo。
- 场景设计:10 亿快手用户,每秒 5000 人积分变化,查询积分超越多少人?(查询 QPS 10w,RT < 100ms)方案设计,并尝试写 Demo。
滴滴(Offer)
国际金融-部门 A
一面:
- 项目介绍与发散。
- 如何设计信贷风控引擎?
- 手撕算法题:生产者消费者模式。
二面:
- 项目介绍与发散。
- 场景设计:用户 15 天的交易明细如何查询 & 去重,进行设计?
- 手撕算法题:字符串转 int。
淘天(Offer)
营销 & 交易-部门 A
三轮面试(全程只问项目,无八股和算法):
- 手撕开放场景题(1h):设计一个停车场管理系统。
感受与总结
个人感想
在正式开始面试前,由于对行情的错误估计以及认为自己在同职级和同年限里算水平较高,因此准备时间并不长。在面试过程中,我遭遇了不少毒打。虽然最终运气不错,拿到了 3 个 Offer,但这一路并不轻松。
业务匹配度的重要性
社招极其看重业务匹配度。我个人的目标是找到一个自己感兴趣的业务研发方向,并拿到职级 +1 的 Offer。由于我之前的主要经历是负责业务稳定性保障,虽然具有一定的业务研发经验,但深度不够。建议校招同学做好职业方向的第一次选择,每一次选择都很重要。
面试准备建议
- 简历: 遵循 STAR 法则撰写,并在面试中也尽量以 STAR 法则讲解项目,避免废话。
- 八股文: 校招和短年限社招需重点掌握 Java 基础、MySQL、Redis 和 MQ。计算机基础(操作系统、计算机网络)在社招阶段很少考察,但校招必备。
- 算法: 校招建议刷《剑指 Offer》+ Hot100;社招则主要准备 Hot100 并举一反三。
- 项目: 如果没有复杂项目经历,可以通过性能优化、排查案例包装出亮点。ToB 业务看复杂度,ToC 核心看高并发、高性能、高可用。
- 系统设计: 社招会考察系统设计能力,包括具体场景方案设计和 DDD 建模能力。建议多总结复盘或参考技术文档。
最后,祝大家都能面试顺利,Offer 多多!
更新: 2025-03-18 15:29:44
原文: https://www.yuque.com/snailclimb/mf2z3k/izgfe3vxhimrre56