腾讯 WXG 后端开发一面面经
- 轮次
- 一面
- 结果
- 泡池子中
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 请做一个简单的自我介绍。
- 如果来实习,什么时候可以到岗?可以实习多久?
- 【算法题】IP 加端口转成 uint64。
- 【算法题】对折链表。
- 【算法题】均匀抽样:已知 rand16() 是 0 到 65535 范围的随机数生成器,写一个函数,能随机从编号 0 到 30 万减 1 的员工中均匀抽出 1 万人。
- 你现在还在字节那边实习吗?
- 你所在的团队主要做什么?你个人主要负责什么?
- 你们团队的研发流程是怎样的?
- 你们团队平时的研发节奏怎么样?
- 整体系统架构是什么样的?
- 你提到的这个平台主要解决什么问题?它的作用是什么?
- 你提到优化了某类资源的创建耗时,一般做这种性能优化时,你的思路是什么?
- 回到这个创建耗时优化案例,目前还有没有进一步的优化空间?
- 最有挑战的事情是什么?
- 你提到凭证托管比较复杂,复杂性具体体现在哪里?
- 你简历中提到一个转人工的 Agent 案例。如果要搭建一个 Agent,需要重点考虑哪些问题?需要做哪些事情?
- Agent 中的这些 Skill 应该怎么构建?
- 你们日常开发过程中会使用哪些 AI 产品、AI 工具?
- 你们平时写代码主要使用哪些 AI Coding 工具?
- 你自己平时主要使用什么 AI Coding 工具?
- 公司不会统一提供这些 AI Coding 工具吗?需要自己购买吗?
- 你平常主要使用什么大模型?
- 使用大模型时,你会关注它的使用成本、Token 成本吗?
- 你了解大模型的幻觉问题吗?
- 大模型的幻觉是怎么产生的?为什么会产生幻觉?
- 一般大模型的训练过程了解吗?
- 你做过知识库、RAG,它的基本原理是什么?
- 你刚才提到了一些向量检索算法、索引,这些算法的具体原理清楚吗?
- 传统的搜索引擎是怎么实现搜索的?
- 协同过滤的原理是什么?
- 如果真的要实现一个协同过滤推荐功能,具体应该怎么实现?
- 假设让你设计一个 12306 购票系统,你会怎么设计它的整体架构?
- 消息队列除了你刚才说的用途,还有什么作用?
- 你的简历主要写 Java 和 Go,你在字节这段实习也是用 Go 开发吗?
- 为什么你笔试写代码的时候使用的是 Java,而不是 Go?
- 你学过 C++ 吗?
- C++ 中的
&符号有什么作用? - C++ 中的
&&是什么?还记得吗? - C++ 的智能指针了解吗?
- Redis 的基础数据类型以及底层实现原理了解吗?
- Redis 的 String 底层是怎么实现的?
- Redis 的 Set 底层是怎么实现的?
- MySQL 这块你了解吗?
- 简历上写了 B+ 树,能简单介绍一下 B+ 树吗?
- B+ 树执行增、删、查、改的时间复杂度分别是多少?
- 为什么 MySQL、InnoDB 使用 B+ 树作为索引结构,而不是其他数据结构?
- 为什么不用哈希表作为主要索引结构?
- 为什么不用 B 树,而选择 B+ 树?
- 为什么不用红黑树作为 MySQL 索引?
- MySQL 并发访问时,B+ 树会不会产生并发冲突?
- 在 B+ 树正常执行增删查改过程中,MySQL 的锁具体是怎么应用的?
- 大数据处理组件了解哪些?
- 你了解哪些常用设计模式?
- 能举一个你实际使用设计模式的例子吗?
- 实习过程中学到了什么?
- 反问。
《参考解析》
- IP 加端口转 uint64:把 IPv4 的四个字节按位拼成一个 32 位整数,端口再占低 16 位,总共 48 位,放在 uint64 里绰绰有余。写法上先解析字符串,避免用 inet_aton 之外的隐式转换;如果要求可逆,就约定好布局(高 32 位 IP、低 16 位端口)并写成一对编解码函数,别让两端各自拼。
- rand16 均匀抽 1 万人:核心是拒绝采样,把 30 万映射到 16 位随机数能均匀覆盖的区间。30 万向上取到 2 的幂是 524288,超出 30 万的那部分直接重抽,保证映射均匀;再用 Floyd 或部分 Fisher-Yates 洗牌,在 O(k) 时间内选出 1 万人,避免生成 30 万个下标再打乱。
- 搭建 Agent 要考虑什么:先定边界——它能做哪些事、哪些动作必须人来确认;再定工具层,把每个工具的入参出参和失败语义定义清楚,让模型能判断何时调用;然后定状态与记忆,多轮任务要有可恢复的上下文;最后是可观测与兜底,记录每步的输入输出、设最大步数与超时、失败要能降级到人工。Skill 的构建同理,一个 Skill 应该是一个边界清晰、可独立验证的能力单元,而不是把所有提示词堆在一个大 prompt 里。
- RAG 的基本原理:离线把文档切块、做 embedding 建索引;在线把问题向量化,召回 Top-K 片段,再拼进提示词让模型基于片段作答。效果差通常出在两处:切块把语义切碎、召回不准,所以要调块大小与重叠、加混合检索和重排;还有引用要可追溯,答案里带上原文出处,否则幻觉看不出来。
- 为什么用 B+ 树做索引:B+ 树是矮胖多叉树,几层就能覆盖千万级数据,一次查询的磁盘 IO 次数等于树高,而且叶子节点用链表串起来,范围扫描和排序非常自然;非叶子节点只存键,扇出大、树更矮。哈希表只支持等值查询,范围查询和排序都要全扫;B 树把数据分散在所有节点上,范围扫描要反复回溯,且非叶节点存数据会降低扇出;红黑树是二叉的,树高随数据量线性增长到几十层,磁盘 IO 次数不可接受,它更适合内存里的有序结构。
- 12306 的架构怎么答:先拆核心链路——查票、下单、支付、库存扣减,明确瓶颈是余票查询的读放大和票额扣减的强一致。分层上是接入层限流防刷、查询走缓存(车次余票按区间分桶)、库存用 Redis 加 Lua 做原子扣减并异步落库,下单排队削峰用 MQ,超时未支付回滚库存。要主动提两个坑:区间票的库存模型不能按整列车存,否则会出现中途站卖不出去;以及候补与退票要能复用同一套库存释放逻辑。