顶级技术积累,独家面试资源,免费Mock直播展示
Senior @ Meta
UCSD博士毕业,前Pinterest senior MLE。在CVPR、ECCV等顶级学术会议上以第一作者身份发表过十余篇论文。研究方向集中在可解释的人工智能和鲁棒模型架构的研究。对MLE的面试技巧和得分点了如指掌,培训了团队内的数十名新同事。
Luke P
Senior @ 谷歌
前谷歌高级软件开发工程师,精通分布式系统、云计算和大规模数据处理。在顶级技术会议KubeCon和Google Cloud Next上发表多篇技术报告。专注于提升系统的可扩展性和可靠性。在Github上发布了System Design面试手册,收获上千 🌟
3-1 @ Tiktok
前TikTok工程老兵,擅长大规模互联网应用的开发与优化,专注于提升应用的性能、用户体验和平台安全性。在分布式系统、微服务架构和实时数据处理领域有深厚的技术积累。专做Amazon和Meta的SDE面试辅助,一年内曾拿下超过30个 L5 offer。
Citadel VO面经真题|Citadel 一亩三分地|Citadel NG 面经|Citadel Software Engineer
想要和我们的技术团队进行一次免费的沟通?
我们会直击要点,回答你的所有疑问,并介绍我们的服务。
还有顾虑?
我们可以提供免费的vo mock直播展示,我们的团队到底有多少水平,你说了算。
Citadel 面试挂了,决定攒一波人品写下这个面经。面试之前一直在网上找 Citadel 的三轮 video interview 题目,但资源非常少,尤其是针对 new grad 的版本。这篇就来详细记录我整个流程,尤其是三轮 VO 的 coding 内容,希望能帮到后来人。
从投递到首轮面试
我是通过海投拿到的机会,完全没有内推。甚至没有做 OA,就直接收到了第一轮的 screening 电话邀请。可能他们是根据简历挑了一批直接进 screening 的人。
第一轮是一个 45 分钟的 screening,整体氛围很轻松。面试官先简单聊了一下我的项目经历,然后顺带问了几个行为问题,类似 Why Citadel?、“你觉得自己在哪个项目中学到最多”,这些问题我当时没有提前准备,但用自己的实习经历随便聊聊就过了,完全没有压力。
技术题的部分是一个排列组合类问题,题目形式非常像 LeetCode 上的 backtracking 基础题:给定数字 1 到 9,把它们分别填入 ABC、DEF、GHI 三个三位数的位置,要求 ABC + DEF = GHI,不能重复数字,问总共有多少种有效组合。我用的是 Python 回溯法去暴力枚举所有 9 位排列,然后每 3 位划分成 ABC、DEF、GHI,判断是否满足等式即可。面试官当时说:“你的方法是对的,有些人会卡在如何生成合法 permutation 上。”最后还一起跑了几个 sample,验证都通过了,整个环节结束得挺顺利。
三轮back to back VO:整体节奏与面试形式
几天后我收到了正式的三轮 video interview 安排,2 小时 15 分钟,三轮连着面完,中间没有休息时间。每一轮都包含了两部分内容:开头是简历/BQ问题,后半段是算法题 coding。总体时间分配大概是每轮 45 分钟左右。
所有面试都在一个 Citadel 的专属系统上进行,不是 HackerRank,也不是常见的 Zoom + CoderPad,而是他们自己的 video + 编辑器一体的平台。界面比较干净,体验还可以。
第一轮:任务分配与员工 multiplier
第一轮的题目背景是一个 DMV 办公室。每个员工都有一个 multiplier,代表他的工作速度,比如 multiplier=2 意味着该员工处理一个任务要花 double 时间。同时,系统中还有多个任务,每个任务有一个 base duration,也就是 multiplier=1 时的标准耗时。面试会给一个任务列表,每个任务有 base duration,要你写一个函数计算“最少多少时间可以完成所有任务”。每个员工只能串行做任务(不能并行),每个任务必须被某个员工完整处理,不能被拆开。你需要自己决定如何把任务分配给不同的员工,然后模拟整个过程,返回最短的总完成时间。这题其实是一个典型的 load balancing 问题。我的做法是先按照任务耗时从大到小排序,然后用一个 min heap 去模拟每个员工当前的工作累积时间,greedily 把任务分配给当前最空闲的员工。需要注意的是分配的时候要乘以 multiplier。总体实现比较冗长,因为所有 I/O 也要自己写,但逻辑不算特别难,最终我的代码是对的,面试官也确认通过了,还跟我说这题有很多不同的分配方式,只要逻辑合理就行。
第二轮:不熟悉的题 + 沟通卡壳
这一轮感觉是挂的主要原因。题目是一个我之前没刷过的leetcode原题,一上来我就有点懵。面试官从头到尾都很冷漠,不主动给提示。我的思路其实是可行的,我想用一种结构来存储状态,但面试官 insist 我用另一个类型。我们俩在representation上纠结了很久,导致我不得不硬着头皮去迁就他的方式。后面虽然勉强写完了,但由于类型转换搞得我很晕,逻辑上出现了 bug,最后没时间 debug,眼睁睁看着代码错在那里。最气的是,后来我自己复盘了一下,发现我的方法本来是能跑通的,只是我俩的理解和代码风格差太多,加上时间压力,完全没法沟通好。这一轮整体体验很差,不仅题不熟,节奏也被打乱。
第三轮:Topological Sort(字符版)
最后一轮的题是一个有点变种的 topological sort 问题。输入是多个字符对,代表有向边 A -> B,同时还会提供一个字符全集(表示会出现的所有字符)。题目要求你输出一个合法的字符顺序,满足这些顺序约束。可以有多个解,返回任意一个合法顺序就行。这题我之前在 LeetCode 上刷过类似题(Alien Dictionary),核心就是构建 graph,然后 BFS + in-degree map 做 Kahn 算法。我比较熟练地写了出来,面试官一边输入不同样例一边验证,全部返回正确,表现比较顺利。这轮的面试官很 chill,也很愿意和我讨论思路细节,最后还给了一些优化建议,整个交流体验很好。
面后总结与建议
三轮下来,我觉得第一轮和第三轮我都发挥得还不错,和面试官的交流也很顺畅,题目都写出来了,答得也算干净利落。但第二轮真的出了问题,遇上了不熟的题 + 沟通不畅 + 时间吃紧,最后导致有 bug 没修复完。面完三四天后收到 rejection,算是意料之中但仍有些遗憾。整场 Citadel 的流程其实蛮快,技术含量也比较高,面试题目不只是刷题那么简单,很多都贴近实际工作中的模型设计、系统模拟、贪心策略这些能力。最重要的是沟通能力真的很关键,特别是面对不熟悉或复杂题目时,你怎么让面试官跟得上你的节奏,怎么在冲突中找到折中,可能比题本身更影响面试的成败。
求职辅助服务,是关于时间和品质的较量。咨询 Alpha 小助手,获取最专业的Tech求职辅助。
