Airbnb CodeSignal ICA 2027:四个级别、90 分钟、评分和后续流程

本文译自 PracHub 的英文原文阅读英文原文

内容概览

用五道标注为 Airbnb 的 OA 练习题备考 Airbnb CodeSignal ICA,附文件存储示例,以及来源清晰的格式、评分和后续流程说明。

收到 Airbnb 的 CodeSignal 邀请后,备考方式可能和普通的算法初筛不太一样:你可能需要在多轮新增需求中,不断扩展同一个能跑的程序。官方说明里,CodeSignal 的 Industry Coding Assessment(ICA)包含一个项目、四个递进级别,最长 90 分钟。 Airbnb 的候选人也反馈过这种形式,但你具体要做哪种测评,以你收到的邀请为准。CodeSignal ICA 规则

对于准备 2027 年申请的候选人,本文在 2026 年 9 月 21 日核对时能找到的依据,来自当前的平台文档和 2026 年的候选人反馈。这些依据并不能说明 Airbnb 2027 年有统一的招聘流程。

先看 PracHub 上的 Airbnb Software Engineer 题目。下面五道标注为 Airbnb 的 OA(在线测评)题都围绕不断演进的有状态程序,后面还有一个例子,演示后加的功能怎么破坏之前的不变量。

四张相连的纸质步骤图,示意一个不断演进的 Airbnb CodeSignal 练习项目

Airbnb CodeSignal 的现有证据能说明什么

候选人反馈: 一条发布于 2026 年 8 月 17 日、描述 7 月面试的 Glassdoor 评论提到,有一道任务管理加调度的题,分四个部分,共 90 分钟。另一条 8 月 5 日的评论说,他做的是涉及云存储的四级 ICA。这些都是匿名用户对个人经历的描述,不是 Airbnb 测评的正式规格。Airbnb Software Engineer 面经

7 月 22 日,一位在 Airbnb 面试讨论帖里留言的网友也提到,要先通过某一级别的测试才能进入下一级。这说明值得练习逐步迭代式的实现,至于具体怎么解锁,仍以你拿到的测评为准。候选人讨论

选练习形式之前,先看清测评的名称。CodeSignal 的 General Coding Assessment(GCA) 是另一个产品:四道题,70 分钟,一开始就能全部看到。「先做哪道独立题」这类建议,不一定适用于 ICA 这种项目式测评。官方 GCA 结构说明

如果邀请里只写了「CodeSignal」,就去看测评详情,或者让 HR / recruiter 确认具体形式。不要只凭平台名字去推测时限、允许使用的工具或题目结构。

四个递进级别会怎样改变你的做法

递进式测评会随着需求增加,在同一份代码上继续扩展。之前的行为就成了兼容性约束:新操作可能需要更多状态,但已有的命令仍然必须给出要求的结果。

CodeSignal 公布的 Industry Coding 框架,从基础实现和边界情况出发,逐步到数据处理、高级功能,再到进一步的扩展。它强调在保留原有功能的前提下修改现有代码。这些只是能力类别,并不保证每个 Level 3 都带时间戳,也不保证每个 Level 4 都有账户合并。官方 Industry Coding 框架

备考建议: 选能把当前约定表达清楚的数据结构。以文件存储为例,用一条包含名称和大小的记录,比用几个互不相关的 map 更容易再加上所有者,因为后者的条目容易彼此脱节。抽象要在能让需求更清楚时才加,没必要去预测每一个可能的未来功能,那样只会浪费时间。

每次扩展之后,先把之前的测试重跑一遍,再继续写新代码。在支持递进式工作区的题目里,CodeSignal 的「Level changes」视图会列出级别之间新增、修改或删除的文件。要去看这些变更,别默认题目说明和辅助文件没变。级别差异文档

值得先做的五道 Airbnb 练习题

下面每条 PracHub 题目记录都标注为 Airbnb / Software Engineer / Online Assessment。这是题库里的归属标注,所以这些题和你的备考相关;但这不代表 Airbnb 一定会出这些题,也不代表这些记录能还原你将来的测评。下面的练习重点和检查项只是编辑部的建议。

PracHub 上的 Airbnb 题目练习重点
Implement a Capacity-Aware In-Memory File Store配额、命名,以及被拒绝的操作。
Design a Stateful Working Hours Register已完成的工时段和延迟生效的晋升。
Implement a Time-Aware Banking System定时支付、合并和历史余额。
Implement a Time-Aware Task Management System时间边界和明确的状态转换。
Implement a Multi-Level Recipe Management Service搜索排序和索引一致性。

每个领域用不同的正确性检查。文件存储里,被拒绝的 resize 必须保持已用容量和命名不变。工时登记里,晋升不能改写已完成的工时。银行系统里,要检查合并之后的待执行支付,而不只是余额。任务管理器要写清每条命令前后的状态。食谱系统要验证一次编辑会更新所有受影响的搜索结果。有了这些检查,一份公司题单就变成了一次有针对性的练习。

想要一个具体的容量不变量,就从文件存储开始。接着做工时登记,练历史状态,再做银行系统,练多个转换之间的相互影响。食谱管理适合练输出的确定性和索引维护;任务管理器则多给了一个领域,用来检验你的方法能不能迁移。

做工时登记时,要把进行中的工时段和已完成的工时段分开。做银行系统时,要区分账户的当前余额、历史余额和待执行支付。分清这些,后面的新需求就不会逼你重新构造早已丢掉的信息。

打开每条记录,按它实际的约定来做。题目的公司标签只是背景信息,要是照搬从别的银行或存储题里记下来的规则,照样可能答错。

文件存储练习:守住容量不变量

下面是一个原创练习示例,灵感来自 Airbnb 文件存储那条记录里考察的能力。其中的数字、操作顺序和简化后的规则只是示意,不是 Airbnb 的真题。

假设一个用户的容量是 100 个单位。文件归这个用户所有;已用容量等于所有已存文件大小之和。压缩会把文件大小减半,并给名称加上压缩后缀。解压则恢复原来的大小和名称,前提是操作后不超出容量,也不会造成重名。

操作预期结果操作后的已用容量
添加大小为 60 的 notes成功60
把 notes 压缩到大小 30成功;存储的名称改变30
添加大小为 50 的 photo成功80
把 notes 解压回大小 60拒绝:结果的已用容量会变成 11080

被拒绝之后,压缩文件的大小必须仍是 30,名称也仍是压缩后的名称。如果解法先增加已用容量、先改名,最后才检查容量,就会留下改了一半的状态。事后返回「失败」,并不能把这个状态修回来。

一种安全的实现方式是先算出拟变更后的状态:

proposed_usage = current_usage - stored_size + restored_size
validate capacity and destination-name availability
if either check fails: return failure without mutation
otherwise: commit name, size, and usage together

再加一个回归检查:解压被拒绝之后,查询 photo 仍然要返回 50。然后再试一个合法的、更小的操作。这样能抓出那种返回了预期错误、却悄悄破坏了计数器或索引的实现。

文件存储练习从文件、搜索、配额扩展到压缩,同时不断重跑之前的测试

第二个有用的练习是确定性搜索。创建两个大小相同的文件,名称顺序和插入顺序相反,再按题目给的并列规则排序。压缩改变其中一个大小之后再做一次。这既测排序,也测搜索读到的是不是最新的数据。

这里的道理很具体:文件大小一旦影响容量、搜索和压缩,一次修改就会带来好几个可观察的后果。要把这些后果放在一起测,而不是给每个方法各写一个孤立的 happy path 测试。

把测评当作一个不断变化的程序来演练

编辑部建议: 练习时分阶段公布需求。先实现基础操作,再加搜索、配额和压缩。全程用同一个程序、同一套测试。这是一种演练设计,不是 Airbnb 官方的级别顺序。

每个阶段写代码之前,先搞清楚它的输入约定、返回值、非法操作的行为和排序规则。写一个成功用例和一个被拒绝的用例,并写明操作后的预期状态。对于带时间戳的题,要先确定:时间 t 的事件,发生在同样在 t 到期的定时动作之前还是之后。

对反复出现的判断,用小的辅助函数包起来,比如查找对象、检查容量、比较排序键或处理到期事件。不要把同一条规则散落在好几个 handler 里。需求变了的时候,你要的是一个可以检查的地方,再加一个能证明效果的简短回归测试。

模拟时用官方给的时长,但不要给每一级分配相同的时间。记下你读题、实现和 debug 实际各花多久。如果前两个阶段就用掉了大部分时间,先简化模型,再去练下一个难的扩展。

好的复盘会把失误说得很准确,比如「我更新了当前工资,把历史费率弄丢了」,或者「被拒绝的解压改掉了文件名」。这样下次练习就有了目标。「我得写快一点」就没有这个作用。

测试失败时,把命令序列缩短,直到你能手算解释哪里对不上。在文件存储练习里,添加、压缩、再添加、解压这四步就足以暴露容量 bug。一百个随机操作反而可能把它盖住。把缩短后的序列留作回归测试,然后再恢复完整的测试集。

最后,对照题目给的约束复核复杂度。小练习里扫描所有文件可能没问题;但在很多条命令里反复给不断增长的集合排序,可能就需要换一种索引。这个决定要根据题目提供的限制和要求的排序来做。在没搞懂更新之前就加一个复杂的索引,只会多出一个你必须保持正确的结构。

如何理解 ICA 分数

官方说明: CodeSignal 列出的 ICA Coding Score 范围是 200–600,分数越高,对应完成的测评内容越多。它还说,候选人不一定需要在规定时间内全部做完。ICA 评分与规则

这段描述并没有说明 Airbnb 的及格线,也没有说明每一级的分值是否相同。我们没有找到适用于所有岗位和招聘季的 Airbnb 公开分数线。像「500 分保证进下一轮」这样的说法,除非你的 HR / recruiter 明确给出这条规则,否则就当作没有依据。

备考时,除了分数,也要记录完成了多少条需求,以及回归失败的次数。如果某次扩展破坏了原本能用的行为,先查它改动过的共享状态或辅助函数,再继续加功能。这是一种工程上的做法,不代表隐藏的评分权重。

CodeSignal 说明了认证测评的结果会显示在账户的哪个位置。文档里也区分了定制测评:招聘公司可能选择不公开分数。所以看不到分数时,要去确认测评类型,而不是自己猜结果。查看你的测评结果

开始之前:环境设置和允许使用的工具

检查邀请里的截止时间、测评名称、支持的语言和规则。真正开始之前,先在平台的练习环境里熟悉跑测试和切换文件的操作。

官方说明: 部分 CodeSignal 测评要求身份验证,并需要使用你的摄像头、麦克风和屏幕。平台会在测评开始前说明是否需要监考。要准备好要求的证件和设备,并遵守该次测评显示的规则。CodeSignal 监考说明

别因为练习时用过外部编辑器、AI 助手或在线资料,就默认测评里也能用。如果环境问题让你没法继续,要通过平台或 HR / recruiter 说明具体的报错,不要反复开始新的测评。

提交之后会怎样?

要把三件事分开:提交答案、审核验证,以及 Airbnb 的招聘决定。官方说明: CodeSignal 称,监考测评的验证通常需要一到三个工作日。这只是平台的审核时间窗口,并不代表 Airbnb 的 HR / recruiter 会在三天内联系你。监考测评时间线

保存好提交确认,并留意页面上能看到的状态。如果 HR / recruiter 说的回复时间已经过了,可以有针对性地跟进一下,问问结果有没有收到、下一步是什么。光看分数,没法判断下一轮面试是什么形式。

为自己做复盘时,记下数据模型、一个棘手的边界情况,以及有更多时间的话你会改的一处。这些要和任何保密的测评内容分开。如果之后的面试问到你的思路,就讲你实际做过的决定。

下一次练习,从 Airbnb Software Engineer 题库里选一道题,先自己实现再看解答,并加一个测试,证明被拒绝的操作不会改动状态。这个练习正好针对在计时下扩展一个能跑的程序这一难点。

来源与延伸阅读

研究并修订于 2026 年 9 月 21 日。候选人的经历因岗位、地点和招聘季而异,请以你自己的邀请为准。

练习 Airbnb 面试题

练习 Airbnb 面试题