校招 未知部门 / 后端开发 / 多轮
[面试日期] 2026-08-24 [面试时长] 未知
[学校背景] 北京理工大学 | 985 [学历背景] 本科
[发布人] 面试之星官方收录
<h2>分享|3年经验面字节,二面挂了,四面终于OC</h2>
<p>先交代背景:普通本科,Java后端,3年经验,上一家是某二线互联网公司,做过支付和订单系统。</p><p>3月开始投简历,字节二面挂了一次,重新投递后四面终于OC。分享整个磕磕绊绊的过程。</p><p><strong>📌 第一阶段:一面过了,二面挂了(3月)</strong></p><p><strong>一面(50分钟)——过了</strong></p><p><strong>1️⃣ 项目深挖:你负责的支付系统,日交易额多少?QPS多少?</strong></p><p>💡 <strong>思路参考</strong>:日均交易额500万,峰值QPS约200。支付链路涉及风控、订单、账户、渠道四个系统,核心是<strong>保证资金安全和不超时</strong>。面试官想听的是你对<strong>系统边界和核心链路</strong>的认知。</p><p><strong>2️⃣ 追问:“支付回调丢失怎么办?”</strong></p><p>💡 <strong>思路参考</strong>:本地消息表+定时任务补偿。支付发起时写本地消息表(状态=待确认),收到渠道回调后更新状态为已确认。定时任务扫描超时未确认的订单,主动查渠道确认状态。核心是<strong>最终一致性 + 可追溯</strong>。</p><p><strong>3️⃣ 追问:“如果本地消息表所在的DB挂了怎么办?”</strong></p><p>💡 <strong>思路参考</strong>:DB挂了走降级——支付请求直接落Kafka(持久化)+ 异步落DB,消费者从Kafka消费后补写消息表。Kafka本身有副本机制保证不丢数据。重点说<strong>分层兜底</strong>。</p><p><strong>4️⃣ 手撕:实现一个支持过期时间的本地缓存</strong></p><p>💡 <strong>思路参考</strong>:ConcurrentHashMap + ScheduledExecutorService定时清理,或使用Guava Cache/Caffeine。重点说<strong>过期策略</strong>(惰性删除+定时清理)和<strong>淘汰策略</strong>(LRU/LFU)。</p><p><strong>二面(60分钟)——挂了</strong></p><p><strong>1️⃣ 系统设计:设计一个支持千万DAU的IM系统</strong></p><p>💡 <strong>思路参考</strong>:接入层(Netty管理WebSocket长连接,单机1-2万连接上限,需要水平扩展+一致性哈希做分片)。业务层(消息收发、群组管理、离线消息、已读回执)。存储层:消息内容存分布式K*********/TiKV,按用户ID分片),关系数据存MySQL,在线状态存Redis(心跳+发布订阅)。核心难点:<strong>消息可靠性</strong>(客户端ACK+服务端确认+超时重传)、<strong>消息顺序</strong>(本地seqId+服务端seqId双重校验)、<strong>读扩散vs写扩散</strong>(群聊用写扩散减少查询压力)。</p><p><strong>2️⃣ 追问:“如何保证消息不丢失?”</strong></p><p>💡 <strong>思路参考</strong>:三层保障——客户端发送时携带本地seqId,服务端收到后返回服务端seqId确认;服务端收到消息先存DB持久化再推送给接收方;接收方收到消息后发送ACK,服务端收到ACK后标记已读,未收到则重推。<strong>任何一层出问题都有兜底</strong>。</p><p><strong>3️⃣ 追问:“如果服务端DB写入成功了,但推送失败了怎么办?”</strong></p><p>💡 <strong>思路参考</strong>:消息已持久化但未送达,接收方下次拉取离线消息时能拿到。同时服务端有重推队列,定时重试未确认的消息。重点是<strong>不丢消息,允许延迟</strong>。</p><p>挂了的原因是系统设计不够细,几个关键点的取舍没说清楚——比如为什么用TiKV不用MySQL、一致性哈希怎么处理节点扩缩容。</p><p><strong>📌 第二阶段:重新准备,四面终于过了(4-7月)</strong></p><p>挂了之后认真复盘,发现自己最大的问题是:<strong>会做但讲不清楚</strong>。面试官不是你的领导,只能通过那45分钟来判断你行不行。</p><p><strong>做了几件事:</strong></p><ol><li>把项目的每个技术选型都准备了“为什么选A不选B”</li><li>准备线上故障案例:准备2个真实事故,按“现象→排查→根因→解决→改进”讲清楚</li><li>刷系统设计题:社招不考LRU了,考的是“设计一个IM系统”“设计一个秒杀系统”</li></ol><p><strong>二面(重新投递后)——过了</strong></p><p><strong>1️⃣ 项目深挖:你做过的最复杂的分布式事务场景</strong></p><p>💡 <strong>思路参考</strong>:支付+扣库存+发积分三步,用TCC模式。Try阶段冻结资金和库存、预创建积分记录;Confirm阶段真实扣减;Cancel阶段解冻。核心难点:<strong>空回滚问题</strong>(Try失败但Cancel被调用,需要识别并跳过)和<strong>悬挂问题</strong>(Cancel先于Try执行,需要识别并拒绝后续Try)。</p><p><strong>2️⃣ 追问:“如果Confirm阶段失败了怎么办?”</strong></p><p>💡 <strong>思路参考</strong>:重试机制+人工介入兜底。Confirm失败后记录失败日志,定时任务重试(指数退避1s、2s、4s,最多5次),重试5次后仍失败则触发人工告警,运营人员手动处理。核心原则<strong>最终一致性+可追溯</strong>。</p><p><strong>3️⃣ 线上OOM怎么排查?</strong></p><p>💡 <strong>思路参考</strong>:jstat看GC情况(频繁Full GC是危险信号)→jmap dump堆内存(文件可能有几个GB,注意磁盘空间)→MAT分析大对象(找出占用内存最大的对象及其GC Root引用链)→定位代码行。说一个真实案例:某个缓存Map没设容量上限,大量对象晋升老年代,加定时清理+最大容量限制后解决。</p><p><strong>4️⃣ 手撕:实现一个支持分布式限流的方案</strong></p><p>💡 <strong>思路参考</strong>:用Redis + Lua脚本实现令牌桶——每个请求扣一个令牌,桶容量和速率通过参数配置,Lua脚本保证原子性。为什么用Redis不用本地限流:多节点要共享限流状态、避免单节点流量不均导致限流失效。</p><p><strong>三面(交叉面)——过了</strong></p><p><strong>1️⃣ 系统设计:设计一个秒杀系统</strong></p><p>💡 <strong>思路参考</strong>:流量层层削峰——CDN加速静态资源、Nginx限流(漏桶算法)、MQ削峰填谷(将请求先写入消息队列,消费者按能力处理)、Redis预扣库存(decr原子操作防超卖)、分布式事务保证最终一致性(TCC)、监控告警。每一层都要说清楚<strong>怎么保证系统不崩</strong>。</p><p><strong>2️⃣ 追问:“如果Redis预扣库存成功了,但MQ消费失败了怎么办?”</strong></p><p>💡 <strong>思路参考</strong>:MQ消费失败走重试(最多3次),重试失败后走死信队列,人工介入处理。同时Redis预扣的库存需要有超时释放机制——如果订单超时未支付,释放预扣库存。核心是<strong>最终一致性+人工兜底</strong>。</p><p><strong>HR面——OC</strong></p><p><strong>📌 声明</strong></p><blockquote><p><em>以上思路参考来自 </em><strong><code><em>"面题鸭🦆"</em></code></strong><em> 各岗位专属考题的考点方向</em></p></blockquote><p><strong>📝 复盘</strong></p><p>字节社招考的不是八股,是<strong>工程思维+系统设计+线上排查能力</strong>。面试官不关心你背了多少概念,关心的是:<strong>线上出事了你能不能扛住</strong>。</p><p><strong>🎯 后来怎么准备的?</strong></p><p>前面几场面试挂了之后,我发现自己最大的问题是:不知道每家公司会往哪个方向深挖。字节偏系统设计、阿里偏分布式事务、美团偏高并发+缓存、腾讯偏线上排查。</p><p>后来在 <strong><code>"面题鸭🦆"</code></strong> 上试了JD专属出题,方向感确实准。每面一家之前,用 <strong><code>"面题鸭🦆"</code></strong> 定向刷题,面试时心里有底很多。</p><p></p><p></p><a>#我的求职进度条#</a><a>#产品每日一题#</a><a>#租房前辈的忠告#</a><a>#沪漂/北漂你觉得哪个更苦?#</a><a>#三月的小目标#</a>
AI 推荐面试题
