OfferForge 导师 Dr. W. — 博士毕业,前 FAANG Senior MLE。研究方向为大规模分布式机器学习系统,曾在顶级国际学术会议发表多篇论文。负责团队学术方向把控与 MLE 面试辅导。
OfferForge 导师 Dr. S. — 前大厂 Senior SDE,精通分布式系统与大规模数据处理。曾在顶级技术会议发表多篇技术报告,专注于系统可扩展性与可靠性。负责课程体系设计与 System Design 面试辅导。
OfferForge 导师 Dr. L. — 前大厂 Senior SDE,深耕分布式系统与微服务架构。在服务治理、事件驱动架构方面有丰富实战经验。负责求职策略制定与 SDE 面试辅导。
前不久完成了 Citadel 的 Software Engineering Online Assessment,整体体验下来比较紧张,但也能感受到他们对工程能力的高标准要求。这篇笔记记录了我完整的做题体验、平台机制、注意事项,以及具体题目的分析,希望对准备 Citadel OA 的同学有所帮助。
我是在投递简历后一周内收到 OA 邀请的,邮件中写明需要在 10 天内完成测试。一旦开始计时,总时长为 75 分钟,平台使用的是 HackerRank。
整个测试由三部分组成:一道选择题(非常简单,形式类似“你是否愿意使用数据进行决策”之类的问题,选 yes 就好)+ 两道代码题,难度在 LeetCode 中等偏上或接近 Hard 的水平,涉及字符串处理、动态规划、贪心、并查集等考点。75 分钟完成全部三题,时间分配一定要合理。建议选择题 1 分钟内完成,然后将 70 分钟平均分给两道编程题。
第一题:Palindrome with Period k
这是一道带有实际应用背景的密码规则更新问题。题目要求将当前的密码(一个只包含小写字母的字符串)转换成满足新规则的密码,要求如下:新密码必须是一个回文。同时它还要满足“周期为 k” 的性质,也就是说 s[i] == s[i + k] 对所有合法位置 i 都必须成立。这道题的关键点是同时处理两个等值约束条件:回文约束和周期约束。本质上是多个字符位置之间必须统一成同一个字符的问题。最优策略是将所有必须相等的字符位置聚类(可以用并查集),然后对每一组统一为出现次数最多的字符,其他都要修改,累加这些修改次数就是答案。这题乍看复杂,其实只要想到用 union-find 来聚合字符位置,整体实现还算清晰。我用了 Python 实现,AC 用时 25 分钟左右。