抖音电商 - 研发工程师(终面)
- 项目拷打与深挖(面试通过,高管复核挂)
米哈游 - 平台研发-golang开发工程师
- 手撕算法:二分查找
- Go 语言八股考查
- 数据库八股考查
- 实习经历与项目深挖
bilibili - 服务端开发工程师
- 请先做一下自我介绍。
- 你的论文是什么时候开始做的?现在是什么状态?
- 你的论文具体解决什么问题?
- 你的方法具体是怎么做的?
- 你的方案为什么可以说和 Agent 有关系?
- 如果换一个能力比较弱的大模型,你这套方法还能工作吗?
- 大模型生成的算法不合法怎么办?会修复吗?
- 你怎么保证换模型以后整个 Workflow 还能运行?
- 介绍一下你接触 AI / 大模型以来的发展过程。
- 你最近有没有关注 Agent 方向的论文或者技术?
- 为什么 Go 适合高并发?
- Go 里面有没有遇到并发安全问题?怎么处理?
- 你了解 sync.Map 的底层实现吗?
- 你了解操作系统的内存管理吗?
- 常见的内存分配策略有哪些?
- 怎么判断一个内存分配算法好不好?
- 如果让你实现空闲内存管理,你会怎么做?
- 介绍一下你实习期间主要做了什么。
- 实习中做过什么性能优化?
- 为什么当时不通过加索引解决?
- 你们 EXPLAIN 看过吗?查询有没有走索引?
- MySQL 有哪些索引?
- 索引是不是越多越好?加太多索引有什么问题?
- 设计索引时有哪些原则?
- MySQL 除了 B+ 树索引,还有什么索引结构?
- Hash 索引和 B+ 树索引有什么区别?
- 讲一下 MySQL B+ 树索引。
- 为什么不用普通二叉搜索树,而使用 B+ 树?
- 如果让你设计短链接系统,你会怎么做?
- 短链接和长链接应该是什么关系?
- 怎么进一步缩短 URL?
- 手撕算法:链表反转。
- 你刚才这个链表反转代码有什么问题?
百度 - 北京后端
- 请做一下自我介绍。
- 平时刷算法题和做项目分别使用什么语言?为什么项目更倾向使用 Go?
- Go 中 make 和 new 有什么区别?make 可以初始化哪些类型?
- Go 中数组和切片有什么区别?
- Slice(切片)的底层结构是什么?len 和 cap 分别表示什么?append 时容量不足会发生什么?Go Slice 的扩容机制是怎样的?
- 什么是 Goroutine(协程)?为什么 Goroutine 比操作系统线程更轻量?Go 的 GMP 调度模型是什么?Goroutine 和线程的上下文切换有什么区别?
- 进程、线程和协程三者有什么区别和联系?
- 线程之间有哪些同步或通信方式?
- 操作系统如何管理物理内存?为什么需要虚拟内存?虚拟地址如何通过页表转换为物理地址?页和页框分别是什么?
- 什么是生产者—消费者模型?多线程下如何保证生产者和消费者访问共享数据的并发安全?
- 什么是读写锁?它相比普通互斥锁有什么优势?
- HTTP 和 HTTPS 有什么区别?HTTPS 如何实现防窃听、防篡改和身份认证?数字证书在 HTTPS 中有什么作用?TLS 握手的大致流程是什么?
- DNS 中的 A 记录和 CNAME 记录分别是什么,有什么区别?
- TCP 连接建立后如果一端突然断网,另一端继续发送数据会发生什么?TCP 一直收不到 ACK 时会如何处理?TCP 的超时重传和滑动窗口机制是什么?TIME_WAIT 状态有什么作用?
- Redis 有哪些常见数据结构?Redis 为什么快?
- 多个客户端并发操作 Redis 时如何保证安全?Redis Lua 脚本为什么可以保证多个操作的原子执行?
- 什么是缓存穿透?会带来什么问题?如何解决?
- Redis 事务的 MULTI/EXEC 是如何工作的?Redis 事务是否支持回滚?它和传统数据库事务有什么区别?
- 什么是 Redis 分布式锁?如何使用 SET NX EX 实现?释放分布式锁时为什么通常需要 Lua 脚本?
- 算法题:小于 n 的最大数。
字节跳动 - 飞书/飞书云文档后端开发(一面)
- 请做一下自我介绍。
- 竞赛项目中 Redis Lua 的作用是什么,为什么要用(原子性)?原子性如何理解和保证,失败是否会回退?为什么不回退?
- 实习时 SQL 优化是怎么做的?讲讲索引,讲讲为什么要用 B+ 树,索引越多越好吗?为什么?
- 讲讲 TCP 3/4 次握手,目的是什么?
- 一次 URL 到返回渲染全过程。
- DNS 解析如何做(顶级域名服务器、逐级查询)?每次都要访问流程吗?缓存怎么实现?
- HTTPS 怎么实现安全?数字证书怎么实现?如果伪造(如声称是百度)怎么处理?
- 线上告警 CPU 满了怎么办(火焰图、top 命令)?了解 load 吗?
- 内存满了怎么办(检查 GC,检查临时变量溢出),怎么检测?
- 算法题:缺失的第一个正数。
- 场景题:几十 TB 数据用户 ID,内存 4G,如何找出最高 Top 10 频率 ID(哈希分堆 + Top 10 小根堆过滤;哈希函数设计、空间预留、过滤前统计闭环思考)。
字节跳动 - 飞书/飞书云文档后端开发(二面)
- 请做一下自我介绍。
- 实习项目拷打(AI 搜索/搜索引擎相关)。
- 拷打 MySQL 架构与数据库架构。
- 拷打 Redis 集群哨兵及各种 Redis 架构。
- Go 语言 GC 机制与 STW(Stop The World)。
- AI 方面:RAG 架构与应用。
- 场景题:黑产灰产打击、秒杀系统设计。
- 手撕算法:无重复字符的最长子串。
字节跳动 - 生态Agent后端开发工程师 - 火山引擎
- 请做一下自我介绍。
- 你最有代表性的项目是什么?介绍一下这个 AI 全栈挑战赛项目。
- 你在项目里主要负责什么?这个项目最大的难点与亮点是什么?
- 整体系统架构是怎样的?权限系统怎么设计?
- 为什么使用 WebSocket,而不是普通 HTTP?WebSocket 房间是怎么设计的?
- 一次用户加价请求是怎么走的?为什么竞拍裁决不直接操作 MySQL?
- 为什么要使用 Redis Lua?Lua 脚本里主要做哪些事情?Lua 中操作顺序为什么重要?为什么不直接在 Lua 里写 MySQL?
- 为什么用 Redis Stream,而不是 Kafka、RocketMQ?Redis Stream 后面的数据怎么落库?
- 这里的 Room 是一个真实实体吗?
- WebSocket 断线以后怎么恢复?怎么保证重连后还是进入原来的房间?
- Redis 中这些数据怎么组织?为什么参与用户适合用 Set?为什么排行榜使用 ZSet?Redis ZSet 底层是什么数据结构?
- WebSocket 是怎么建立连接的?WebSocket 属于哪一层协议?什么时候创建 WebSocket Room?
- 算法题:给定整数 N 和一组允许使用的数字,如何找到不超过 N 的最大整数?代码逻辑与边界校验。
- 一个经常按 create_at 和 user_id 查询的表,你怎么优化?索引有什么优点和缺点?
- TCP 和 UDP 有什么区别?TCP 的“有连接”是什么意思?一个 TCP 连接怎么唯一标识?TCP 和 UDP 分别适合什么场景?UDP 不可靠,怎么实现可靠传输?
- 你们项目里的 AI 功能是什么?为什么传统关键词搜索不够?AI 找拍品具体怎么实现?使用了什么模型和技术栈?
- 这个功能算 Agent 吗?你怎么理解 Agent 的设计?
- 你论文里的 Agent / Workflow 是怎么设计的?为什么需要 LLM 来设计启发式算法?一轮迭代具体是怎么进行的?下一轮一定会比上一轮好吗?谁负责选择最好的策略,是 Agent 吗?为什么这种 Agent 需要保存上一轮结果?
- ReAct 模式有什么优点和缺点?ReAct 和 Plan-and-Execute 怎么选?你怎么定义“复杂任务”?
- 你科研里的大模型 API 从哪里来?为什么你觉得 LLM 适合做算法设计?你说的“不同环境”具体指什么?你的论文做的是实际地图路径规划吗?这种算法能落地到真实路径规划吗?真实约束能直接加入你的求解框架吗?
字节跳动 - 后端开发工程师(字节云) - AI算力基础设施(一面)
- 进程和线程有什么区别?线程之间共享哪些资源、哪些资源是私有的?
- 协程和线程有什么区别?详细讲一下 Go 的 GMP 调度模型。
- 用户态和内核态有什么区别?从用户态切换到内核态有哪些方式?
- 详细讲一下虚拟内存机制;一个程序使用内存的完整过程是什么?缺页中断的处理流程是什么?
- 网络协议栈了解多少?OSI 七层模型分别是什么?
- UDP 为什么不可靠?TCP 为什么可靠?TCP 快速重传机制是什么?
- Cookie 和 Session 分别是什么、两者有什么关系?RESTful 是什么?
- MySQL 常用索引有哪些?MySQL/InnoDB 的索引是怎么实现的?B+ 树有什么特点?数据库/DBMS 的主要特点是什么?
- LangGraph 是什么样的框架?
- 如果设计一个安全系统,核心安全模块有哪些?
- 大模型如何与传统算法/领域工具结合并进行迭代?
- 复杂 Agent 流程能否直接封装成 Skill?
- 是否了解 Kubernetes/K8s?是否了解 Agent Sandbox?是否了解 DeepSeek 开源的 Harness 项目?
- 算法题:设计一个带统一 TTL 的 LRU Cache(容量为 n,超过容量时优先淘汰已过期 KV,如果没有过期 KV 则淘汰最近最少使用的数据,查询到过期 KV 时返回空)。
字节跳动 - 后端开发工程师(字节云) - AI算力基础设施(二面)
- 请做一下自我介绍。
- 介绍一个你认为做得比较好的项目。
- 高并发场景下,多个用户同时操作时,核心业务逻辑是怎么裁决的?「读取当前值 → 判断 → 写入」不是原子操作,并发情况下怎么避免竞态?
- 两个请求同时基于旧数据进行判断,怎么防止后写入的低值覆盖先写入的高值?
- Redis Lua 是怎么实现「判断 + 更新」原子操作的?Lua 脚本内部具体做了哪些校验和状态更新?
- Redis 操作成功以后,什么时候把数据写入 MySQL?
- Redis 到 MySQL 采用异步落库时,怎么保证数据最终一定能写入数据库?异步消费者挂掉、重启后,怎么保证消息不丢?
- 消息重复消费时,怎么保证 MySQL 写入幂等?
- 最终结算时,应该以 Redis 还是 MySQL 中的数据为准?Redis 和 MySQL 存在延迟时,怎么保证最终结果一致?
- 结算与最后一次并发操作同时发生时,怎么保证拿到的是最终状态?如何通过状态机/状态转换阻止结算之后的新请求?
- Redis Stream 或 Redis 出现异常、数据丢失时怎么办?
- 为什么采用 Redis + Lua,而不是 Redis 分布式锁 + MySQL?在这个架构中使用 Redis,核心目的是抗并发、低延迟,还是保证原子性?为什么要把实时热路径和 MySQL 写路径解耦?
- 幂等键是怎么设计的?在哪里生成?服务端拿到幂等键后,怎么判断这个请求之前是否已经处理过?
- 幂等键应该在请求处理的哪个阶段写入 Redis?幂等键写入时,怎么区分业务处理成功、失败、处理中等状态?如果业务请求被拒绝,失败结果需不需要也做幂等缓存?
- 幂等键应该放在 Lua 脚本内部一起写,还是 Lua 返回以后再写?如果 Lua 已执行成功,但幂等键还没写入,此时客户端重试怎么办?
- 如果重新设计一套幂等机制,你会怎么实现?SETNX 能不能直接解决幂等问题?它和业务处理结果之间如何保证一致性?
- 你平时是怎么使用 AI Coding 的?使用 AI Coding 和传统开发相比,项目开发流程有什么区别?用过哪些 Skill?Skill 是怎么工作的?
- 与 AI Coding 工具交互时,你一般怎么提供上下文、描述需求?你通常会让 AI 帮你完成哪些工作?哪些内容由人设计,哪些内容交给 Agent 生成?
- 项目的功能优先级/任务拆分是人定义的还是 Agent 自动定义的?使用过哪些 AI Coding 工具?能否现场演示一次完整的 AI Coding 开发流程?
- 编程题:启动三个线程,分别只打印 1、2、3,如何让它们循环输出 123123123…?可以使用什么同步机制实现线程之间的顺序协作?
- 代码中的 flag 状态变量有什么作用?多个线程是在「竞争资源」还是在「协作」?两者怎么理解?线程抢到锁后发现还没轮到自己,应该怎么办?wait 被唤醒返回以后,为什么还要重新判断 flag?什么是虚假唤醒?为什么条件判断通常要写在 while 中?
- 算法题:设计一个支持 get/set 的 LRU Cache。
- LRU 的核心数据结构应该怎么设计?为什么通常使用 HashMap + 双向链表?
- 如果要求某个 Key 在 X 秒内没有被访问就自动过期,应该怎么实现?过期数据采用惰性删除、后台定时清理,还是两者结合?写出 LRU Cache 的核心数据结构和伪代码。
- 如何严格保证缓存中的对象数量最多为 N?Cache 已满时,是应该先插入再淘汰,还是先淘汰再插入?更新一个已经存在的 Key 时,需要触发容量淘汰吗?
- 过期时间应该在什么时机设置?get 时发现 Key 已过期应该怎么处理?get 操作是否应该刷新过期时间?set 操作是否应该刷新过期时间?
- 并发执行 get/set 时,如何保证 HashMap、链表和容量的一致性?
- LRU(Least Recently Used)具体是什么意思?get 为什么也算一次「最近使用」?set 是否也应该改变节点在 LRU 链表中的位置?
- LRU 中的 Node 应该包含哪些字段?双向链表具体是怎么组织的?prev/next 如何维护?
- 删除节点时,如何保证 HashMap 与链表中的节点同步删除?节点删除不彻底可能产生什么内存/引用问题?
- 如果使用 C++ list,是否可以直接把它作为 LRU 的双向链表?
美团 - 财务平台-财务科技-全栈
- 请做一下自我介绍。
- 算法题:K 个一组翻转链表。
- 讲一下 K 个一组翻转链表的代码逻辑。
- 如何把题目通过自然语言或结构化 Prompt 描述给 AI,让 AI 自动生成代码?
- 这道 AI Coding 题的 Prompt 设计思路是什么?怎么保证 Prompt 能覆盖输入输出、边界条件和核心逻辑?
- 这道 AI Coding 题整体实现思路是什么?
- 从简历里挑一个最有意义或复杂度最高的项目讲一下(背景、目标、具体做法、过程中的问题与解决方法)。
- 为什么在竞拍系统里使用 Redis Lua 脚本?Lua 脚本操作了多少个 Redis Key?每个 Key 分别是干什么的?
- 竞拍实时状态的 Redis Key 里具体存了哪些数据?
- 竞拍排行榜是怎么实现的?排行榜的数据存在哪个 Key?排行榜使用什么 Redis 数据结构?排行榜具体怎么排序和维护?
- Lua、SETNX、WATCH 等方案有没有做过对比?为什么最终选择 Lua?
- 什么是 RAG?RAG 主要用来解决什么问题?你的项目里为什么使用 RAG?RAG 在项目里具体用在什么场景?
- 你对 DeepSeek Harness 了解多少?
- 你了解 LangChain 吗?LangChain 和 LangGraph 是什么关系?为什么会从 LangChain 发展到 LangGraph / Workflow?
- 你实际使用过哪些大模型?你还了解哪些大模型?哪些大模型的编程能力比较强?智谱、Kimi 这些模型了解吗?豆包了解或使用过吗?
- 有了 AI Coding 工具之后,你和 AI 分别扮演什么角色?相比没有 AI Coding 的传统开发方式,开发者的角色发生了什么变化?
- 测试驱动开发(TDD)是什么?规范驱动开发(Spec-Driven Development / Spec Coding)是什么?TDD 和 Spec-Driven Development / Spec Coding 怎么理解?
- 你用过业界的 Spec Coding 工具吗?亚马逊的相关 AI Coding / Spec Coding 工具了解或用过吗?你用过字节的 AI Coding 工具吗?
智驾新程 - 云平台后端研发工程师
- 实习经历与比赛项目深挖(纯项目与实战,无八股)