腾讯 Java / 后端怎么准备

更新于 2026-09-02 · 面试易

腾讯后端面试因 BG 而异,但社交消息和资金安全是公开讨论里反复出现的约束:不能多扣、不能丢、不能把已读变成未读。

下面五题走红包、回执、长连接、对账和事故复盘,请用自己做过的一致性和连接管理经历来答。

腾讯怎么面Java后端

面试阶段与知识点

第一批不把每个阶段拆成独立 URL,避免程序化重复页。阶段对应下面的题,练完再用模拟面试串起来。

值得开口练的题

每题给考察点、思路、结构化参考答案和追问。参考答案用来组织语言,面试时必须换成你自己的项目事实。

微信红包这种「扣余额再入账」如何避免多发?

难度 困难 · 出现频率 高 · 系统设计

考察点

  • 资金流水
  • 幂等与条件更新
  • 对账

回答思路

先声明这是教学场景,按通用资金正确性讲,不描述任何未公开实现。

结构化参考答案

  1. 扣减必须是条件更新:余额足够才成功,失败返回明确错误,禁止先改缓存再补库。
  2. 每一笔有唯一流水号,重试用同一流水,避免网络重试造成二次扣减。
  3. 入账和扣减要么事务消息,要么先记意图再异步,最终以账本为准。
  4. 日终对账比实时缓存更重要,差异进入冻结和人工。

面试官可能追问

  • 用户重复点击十次,你返回什么?
  • 缓存余额和账本不一致谁赢?
  • 跨系统入账失败如何补偿?

用这道题开始模拟面试

已读回执重复到达,会话未读数会被减成负数吗?

难度 中等 · 出现频率 高 · 编码与实现

考察点

  • 计数下限
  • 消息乱序
  • 会话维度聚合

回答思路

这是计数加乱序问题。先保证单会话内更新串行或用版本号,再谈缓存和性能优化。

结构化参考答案

  1. 未读数更新带版本或「只减一次」的回执集合,重复回执直接忽略,避免同一回执扣两次。
  2. 乱序时用最后一条已读进度覆盖,而不是每条回执都减一,避免跳过中间消息。
  3. 展示层不允许出现负数,但根因仍要修,不能只靠 max(0, n) 把错误藏起来。
  4. 多端同步以服务端进度为准,客户端本地减只是乐观展示,最终以服务端合并结果为准。

面试官可能追问

  • 两台手机同时已读怎么合并?
  • 撤回消息如何影响未读?
  • 离线很久的设备上来会不会把进度打回去?

用这道题开始模拟面试

百万级长连接,心跳失败你要不要立刻踢下线?

难度 中等 · 出现频率 中 · 系统设计

考察点

  • 弱网与误踢
  • 状态扩散
  • 资源回收

回答思路

先区分「探测失败」和「确定离线」。即时通讯里误踢比晚踢更伤体验,宽限期要有依据。

结构化参考答案

  1. 心跳失败先进入宽限期,连续多次失败或收到主动断开才标记离线,避免弱网一次抖动就踢。
  2. 确认离线后要同步路由表和推送通道,避免继续往已失效连接写消息造成堆积。
  3. 重连应恢复同一会话身份而不是新建连接,防止未读数和推送状态在两端分叉。
  4. 容量规划上心跳周期和超时要按真实带宽和连接数估算,不能按实验室 RTT 拍脑袋。

面试官可能追问

  • 弱网地区心跳周期怎么调?
  • 如何防止心跳风暴?
  • 连接迁移时消息是否会双发?

用这道题开始模拟面试

日终发现账本和渠道差了几笔,你怎么查?

难度 中等 · 出现频率 中 · 项目深挖

考察点

  • 对账范围
  • 单边账
  • 冻结

回答思路

按时间窗口和流水号逐笔对齐,先分类再处置,不要一上来改余额或手工冲正。

结构化参考答案

  1. 先固定对账窗口和时区,把在途交易单独挂起,避免把未落账流水算进差异。
  2. 对不上的分成三类:我有他无、他有我无、金额不等,每类走不同排查路径。
  3. 单边账先冻结相关账户或订单,禁止继续自动冲正到可能错误的方向。
  4. 修数必须有工单和双人复核,并补监控与告警,避免同一原因在下一日再现。

面试官可能追问

  • 在途资金最多挂多久?
  • 如果渠道对账单延迟一天怎么办?
  • 你会不会先改用户可见余额?

用这道题开始模拟面试

一次误踢造成用户收不到消息,你怎么复盘?

难度 入门 · 出现频率 中 · 行为与协作

考察点

  • 影响面
  • 根因
  • 防护

回答思路

复盘讲事实、影响面和机制改进,不讲谁态度差,也不把责任推给单一值班同学。

结构化参考答案

  1. 影响:统计多长时间内多少连接被误判离线,消息是否堆积、用户投诉是否上升。
  2. 根因:区分心跳阈值过严、机房网络抖动还是路由表更新竞态,用日志和指标佐证。
  3. 动作:回滚阈值配置、对受影响用户补发消息,并加误踢率与离线误判告警。
  4. 机制:连接相关变更必须演练弱网场景,而不是只在办公网低延迟环境验收。

面试官可能追问

  • 你个人在这次变更里的角色?
  • 如果产品要求更激进踢线省资源,你怎么答?
  • 如何验证补发没有造成重复?

用这道题开始模拟面试

和岗位、模拟面试一起用

资料管理里保存目标岗位 JD,模拟面试会按简历出题。点题目下的按钮会把本题带进模拟开场,仍需先绑定简历与岗位。

用模拟面试练腾讯Java后端