OfferForge 导师 Dr. W. — 博士毕业,前 FAANG Senior MLE。研究方向为大规模分布式机器学习系统,曾在顶级国际学术会议发表多篇论文。负责团队学术方向把控与 MLE 面试辅导。
OfferForge 导师 Dr. S. — 前大厂 Senior SDE,精通分布式系统与大规模数据处理。曾在顶级技术会议发表多篇技术报告,专注于系统可扩展性与可靠性。负责课程体系设计与 System Design 面试辅导。
OfferForge 导师 Dr. L. — 前大厂 Senior SDE,深耕分布式系统与微服务架构。在服务治理、事件驱动架构方面有丰富实战经验。负责求职策略制定与 SDE 面试辅导,已帮助多位候选人斩获 Senior 级别 Offer。
整场面试大约三十分钟,分为三个部分。开头五分钟是自我介绍,主要考察沟通能力和背景亮点。如果你的项目经历比较有意思,面试官会追问一到两个小问题,通常不会深入到细节,只是确认你能流畅表达。中间二十分钟是核心的做题环节,这部分时间非常紧张,要求你快速听懂题目、提出解题思路并实现。最后五分钟是 QA,流程比较走形式,通常是你向面试官提问,或者简单回答几个非技术问题。
一个特别需要注意的点是,面试官不会把完整的题面贴在 HackerRank 编辑器里,而是通过口头描述来传达题目要求。编辑器中只会提供 sample input 和 sample output。
也就是说,几乎没有时间或者可能性去依赖外部工具或 AI,而是必须在听题时抓住关键点,并在动手之前主动复述一遍自己的理解。这种形式考察的不仅是算法能力,还包括快速理解需求和沟通确认的能力。
我们遇到的题目是一个二维迷宫问题,目标是找到收集所有钥匙的最短步数。迷宫中包含五类元素:起点、空地、墙、钥匙和门。钥匙用小写字母表示,门用大写字母表示,必须先获得对应的小写字母钥匙才能通过对应的大写字母的门。题目的 sample input 较长,输入规模看上去也不小,这意味着需要写出时间复杂度相对合理的算法。
本质上这是一个 BFS 问题,但与传统的最短路径搜索不同。常规 BFS 只需要考虑位置 (x, y),而在这里我们还必须记录当前收集到的钥匙状态。因此需要把状态设计为 (x, y, keys_mask)。