Question Study

xAI 面试题专题

本地面经库有 43 条来源 URL 去重后的记录,其中 43 条有正文;目前整理出 26 道代表练习题,其中 26 道已完成独立深文。题目清单仍在逐帖核对和补充。

Reading Guide

如何使用这份题目清单

题目根据面经方向重新表述,其中可能包含站内攻略建议的训练题;它们不是公司的官方题库,也不保证下一场面试重复出现。

先分岗位

xAI 的不同岗位和团队可能考不同内容。先核对 JD 与面试邀请,再选对应题型。

合并同题变体

相同核心考点只保留一条,后续的附加约束放在原题里练,避免把同一道题当成多道题刷。

练习顺序

先口述输入、输出和边界,再写核心方案;最后解释复杂度、失败路径和面试官可能追加的约束。

Deduplicated Question Map

按考点去重的代表题

同一题的追加条件合并在一条里。题目清单用于确定训练范围;具体流程和准备优先级见公司攻略。

System Design / Rate Limiter · 01

用分布式缓存中的用户 token bucket 处理差异化限额

用分布式缓存中的用户 token bucket 处理差异化限额:惰性 refill、检查并原子扣减、按 user-id 配置不同容量/速率,并讨论并发和缓存失效。

查看上方解题路线 ↑

阅读这道题的独立深文 →
Systems Coding / Database · 02

实现记录含多个 field 的内存数据库

实现记录含多个 field 的内存数据库:set/get/delete、按 field 字典序 scan 与前缀 scan、时间戳 TTL 半开有效区间,以及带剩余 TTL 的 backup/restore。

解题切入:内存 DB 各层按 field 字典序 scan;TTL 有效区间 [setAt,setAt+ttl),backup 保存剩余 TTL,restore 以恢复时刻重设到期时间,先确认同时间戳操作顺序。

阅读这道题的独立深文 →
Event Stream / Spaces · 03

按 (operation,space,user,timestamp) 流水配对 join/leave,累加每个 Twitter Space 的用户参与秒数

按 (operation,space,user,timestamp) 流水配对 join/leave,累加每个 Twitter Space 的用户参与秒数;追问实时 top-k 用户数最多的 space。

解题切入:空间活跃时长按 (space,user) 配对进出并求和;示例 abc 的 2200 是 2000+200 用户秒,不是去重墙钟时间。top-k 追问按用户数而非活跃时长排序。

阅读这道题的独立深文 →
Parallel Coding · 04

给整数数组写多线程排序

给整数数组写多线程排序:划分局部排序并并行归并,明确 worker 数、线程开销、数据竞争与最终有序性。

解题切入:并行排序先局部拆块、每块独立排序再分层归并;并发 worker 不得写重叠区间,线程启动/合并开销与内存带宽会影响加速。

阅读这道题的独立深文 →
Take-home / Backend · 05

四小时 Twitter Insight Platform

四小时 Twitter Insight Platform:Kaggle tweet 数据验证并写入本地库,经 inference worker 调 Grok 分类打分,补 API/consumer 限流、Docker 与 demo。

解题切入:Twitter Insight take-home 先做数据导入、校验、持久化与推理 worker 的最小闭环,再补 API/consumer 限流、Docker 与 demo;工具生成的代码仍要能解释并验证。

阅读这道题的独立深文 →
Systems Coding / Radix Tree · 06

实现存整数序列的 RadixCache.insert

实现存整数序列的 RadixCache.insert:按最长公共前缀拆分压缩边,支持已有序列是新序列前缀及两条序列中途分叉。

解题切入:RadixCache 插入用整数序列的最长公共前缀拆压缩边;新序列恰是旧序列前缀时需要 terminal 标记,旧子树不可丢。

阅读这道题的独立深文 →
Storage / Durable Cache · 07

实现可恢复 KV Cache 的 get/put

实现可恢复 KV Cache 的 get/put:写入持久化存储后更新内存缓存,重启时恢复,并讨论陈旧版本清理和少量 key、超大 value 的存储。

解题切入:Durable KV Cache 先明确 put 的持久化确认点,再用可校验日志或快照恢复;反复覆盖的旧版本需 compact,大 value 可只在内存留索引。

阅读这道题的独立深文 →
Systems Fundamentals · 08

解释 reference counting 的强/弱引用、引用转移、循环引用与跨线程计数开销

解释 reference counting 的强/弱引用、引用转移、循环引用与跨线程计数开销;举出资源泄露和过早释放的边界。

解题切入:引用计数把共享所有权计在强引用上,弱引用不延长寿命;必须处理环、析构时机及跨线程原子更新成本。

阅读这道题的独立深文 →
Distributed Systems · 09

两台机器上的服务如何通信

两台机器上的服务如何通信:比较 RPC、消息队列与共享存储在同步性、失败恢复、顺序和背压上的取舍。

解题切入:机器间通信先分同步 RPC、异步消息和共享存储三种契约,再按超时、重试、幂等、顺序和背压选择,而非只列协议名。

阅读这道题的独立深文 →
Concurrency Fundamentals · 10

解释 async 与 multithread 的区别,比较单线程事件循环、线程池和 async+线程组合适用的 I/O 与 CPU 场景

解释 async 与 multithread 的区别,比较单线程事件循环、线程池和 async+线程组合适用的 I/O 与 CPU 场景。

解题切入:async 表示任务可在等待时让出执行权,multithread 表示多个执行线程;I/O 密集与 CPU 密集场景的并行、阻塞与取消策略不同。

阅读这道题的独立深文 →
LLM Reliability · 11

如何降低生成式 AI 的 hallucination

如何降低生成式 AI 的 hallucination:按可验证事实、检索证据、拒答阈值与线上评估讨论,并明确无法保证完全消除。

解题切入:防幻觉先区分可核查事实与开放生成;检索证据、引用核验、置信/拒答策略和真实任务评测结合,不能承诺完全消除。

阅读这道题的独立深文 →
Concurrency Debug · 12

BankAccount.deposit 并发 500 与 700 后可能只剩 700

BankAccount.deposit 并发 500 与 700 后可能只剩 700:找出读改写竞态,并用共享锁在原有类不能直接修改时包装更新。

解题切入:BankAccount 的 read+sleep+write 不是原子操作;原类不可改时包装器必须确保所有 deposit/read 经过同一锁,绕过包装器仍会竞态。

阅读这道题的独立深文 →
Behavioral / Role Fit · 13

短筛选中说明当前岗位是否为 IC、最近负责什么、与目标团队需求的重合点

短筛选中说明当前岗位是否为 IC、最近负责什么、与目标团队需求的重合点;给可核对的个人贡献。

解题切入:短筛选介绍 IC/当前工作先给岗位职责和最近交付,随后按目标 JD 选一条可量化贡献,避免用泛泛公司名代替个人行动。

阅读这道题的独立深文 →
Behavioral / Project Deep Dive · 14

选最有挑战或最重要的真实项目,讲清本人 ownership、规模、关键取舍、失败与验证,并准备现场追问

选最有挑战或最重要的真实项目,讲清本人 ownership、规模、关键取舍、失败与验证,并准备现场追问。

解题切入:最挑战/最重要项目用问题、约束、本人决定、取舍、验证和复盘组织;现场能解释技术细节与失败,而不杜撰指标。

阅读这道题的独立深文 →
Behavioral / Career Change · 15

为什么现在换工作

为什么现在换工作:从当前工作的成长瓶颈、目标岗位任务和可贡献能力出发,给具体且诚实的理由。

解题切入:换工作回答为何现在离开当前岗位:以真实成长需求和目标职责为主线,不能把未经证实的团队传闻当原因。

阅读这道题的独立深文 →
Behavioral / Why xAI · 16

为什么申请 xAI

为什么申请 xAI:将自己的真实项目证据与具体目标岗位问题对齐,区分已核实信息和个人动机。

解题切入:Why xAI 回答为何选择该岗位:用已核实 JD 任务和本人项目证据对应,职位、团队或政策未核实时不猜测。

阅读这道题的独立深文 →
Inference Coding · 17

给批量 next-token 模型接口,实现动态 batch 解码

给批量 next-token 模型接口,实现动态 batch 解码:结束请求触发回调并立即补位,维护 slot 与 sequence 的稳定映射。

解题切入:动态 batch 每轮以 slot→request 映射给模型入参,处理 token 和结束条件后回调,再在空槽补等待请求;stop sequence 要检查跨 token 边界。

阅读这道题的独立深文 →
Group Testing · 18

用至少两个 GPU 节点的 test(S) 找坏节点,并行测试集合不得重叠

用至少两个 GPU 节点的 test(S) 找坏节点,并行测试集合不得重叠;先判断哪些隐藏状态根本不可辨识,再设计有好节点锚点时的测试。

解题切入:GPU group test 的 |S|≥2 使全坏与仅一好均产生全 False,不能无条件找出所有坏节点;先明确额外先验,再用已知好节点配对测试。

阅读这道题的独立深文 →
OS Fundamentals · 19

比较 process 与 thread 的地址空间、共享内存、隔离与调度开销,并解释共享内存上的数据竞争

比较 process 与 thread 的地址空间、共享内存、隔离与调度开销,并解释共享内存上的数据竞争。

解题切入:process 默认地址空间隔离,thread 通常共享同进程堆;共享不等于有序,多个线程对同一可变状态仍需同步。

阅读这道题的独立深文 →
Streaming Order Statistic · 20

对高流量事件的每个时间窗口求第 k 个值

对高流量事件的每个时间窗口求第 k 个值:队列过期、范围桶计数与内存预算;明确第 k 大/小和时间窗边界。

解题切入:时间窗第 k 元素先确定第 k 大/小、事件时间和闭开边界;queue 保存仍在窗内的事件,若值域已知才可用精确 bucket/frequency 计数。

阅读这道题的独立深文 →
Greedy / Intervals · 21

每个 a_i 可改成 [a_i-k,a_i+k] 内整数,最大化所有输出中不同整数的个数

每个 a_i 可改成 [a_i-k,a_i+k] 内整数,最大化所有输出中不同整数的个数;以 [0,0,0],k=1→3 检验。

解题切入:数组 ±k 可看作等长整数区间,按中心排序后给每项贪心选大于上个已用值的最小可用整数;若输入无序则排序成本通常 O(n log n)。

阅读这道题的独立深文 →
Behavioral / Role Motivation · 22

想做什么 role、为什么

想做什么 role、为什么:在短初筛中说明目标岗位的任务、个人已有证据和需要确认的工作范围。

解题切入:role 动机从具体岗位任务出发,给个人项目证据与未知项;RTO/地点/status 是行政约束,按真实情况直接回答。

阅读这道题的独立深文 →
OOD / Game Backend · 23

设计 Checkers 棋类游戏后端

设计 Checkers 棋类游戏后端:棋盘与棋子状态、合法移动/吃子、升王、回合和胜负检查,区分未给的规则变体。

解题切入:Checkers 后端先固定具体规则版本和状态机,再集中验证移动/吃子/升王/胜负;不同规则变体不应暗中混用。

阅读这道题的独立深文 →
ML System Design · 24

用 agentic workflow 生成一小时电影

用 agentic workflow 生成一小时电影:先固定剧本/角色与镜头规划,再生成、检验跨镜头一致性,迭代拼接并估算规模。

解题切入:一小时电影先用角色、场景、剧情和镜头的层级规划,视频生成后做身份/服装/空间/剧情一致性检测;预算按镜头数与重试率估算。

阅读这道题的独立深文 →
ML Project Deep Dive · 25

解释一个项目的数据如何采集、清洗、标注并影响下游任务

解释一个项目的数据如何采集、清洗、标注并影响下游任务:追溯数据版本、切分泄漏、质量问题与线上指标。

解题切入:项目数据深挖沿来源→处理→标注→切分→模型→线上任务追溯,说明数据质量变化怎样影响目标指标,而非只讲模型架构。

阅读这道题的独立深文 →
Troubleshooting · 26

xAI 域名故障到Nginx权限

xAI 域名故障到Nginx权限:分层定位与恢复渠道:沿域名、机房LB和L7链路定位故障,区分Nginx不能执行与chmod本身不可用。

解题切入:画出客户端→DNS→机房LB→L7→上游链路,比较不同机房、客户端及已知健康请求的失败范围。携带请求ID核对每层是否接收与转发;无日志只能提示请求没到、进程没运行或日志链路坏,不能直接断言是权限。

阅读这道题的独立深文 →

Next Step

把题目放回面试流程

题目只是准备的一部分;按公司攻略核对轮次、岗位差异和常见失分点。

查看 xAI 面试全攻略 →
✓已复制微信号!