上周收到 Capital One 的 OA 邀请70 分钟 CodeSignal 4 题。当时正在准备别家的我立刻调整策略不刷题海只打高频考点。最后提前将近 40 分钟交卷4 题全部通过。把题目和思路整理出来给后面投 Capital One 的朋友参考。OA 基本信息平台是 CodeSignal时间 70 分钟共 4 道题难度按顺序递进Easy → Medium → Medium → Hard。题目全英文描述不需要处理输入输出直接写函数体。Capital One 的 OA 在 CodeSignal General 题库里出题考点分布非常稳定基本是数组/字符串基础、哈希计数、排序/双指针、模拟实现这个顺序。前两题要当送分题15 分钟内解决把时间留给后两题。Q1餐厅取餐调度模拟 二分题意两个取餐柜台 A 和 B各自的可取餐时刻存在两个有序数组里每次取餐固定耗时 30 个时间单位。需要完成 orders 次取餐每次都选当前最早可用的时刻求完成全部取餐时的时间点。解题思路纯模拟题逻辑不复杂关键是找当前时间之后最早的可用时刻这个子逻辑。数组已经有序二分找第一个大于等于当前时间的时刻即可O(orders × log n) 完全够用。注意处理数组越界以及当前时间正好等于可取时刻的情况。Q2长度为 4 且恰好含 2 种字符的子串滑动窗口题意给一个小写英文字母字符串统计长度为 4 的子串中不同字符数恰好为 2 的子串数量。解题思路窗口长度固定直接滑。维护窗口内的字符频次表右移一格就加一个字符、减一个字符频次表大小等于 2 时计数加一。O(n) 解法三分钟内应该能写完。唯一注意的是长度不足 4 时直接返回 0加个前置判断就行。Q3预算内双任务最大耗时排序 双指针题意给一个任务耗时数组和预算 budget选出两个不同的任务使耗时之和不超过 budget返回最大的合法和不存在则返回 -1。解题思路暴力解 O(n²) 枚举所有数对题目数据范围允许可以直接双层循环。如果想更优排序后双指针从两端往中间收O(n log n)。OA 里别为了优化浪费时间先跑通再说。注意结果要初始化为 -1以及两个不同任务意味着下标不能重复取。Q4方块下落与消行模拟 图形放置题意给一个 n×m 的全零网格按顺序下落一系列方块横条1×k、竖条k×1、方块2×2每个方块用它在 pieces 数组里的 1-based 序号标记。按重力规则从上往下落贴着底部或已有方块的顶部停住每当某一行被完全填满就消除上面的方块整体下移。返回最终的网格状态。解题思路这是 OA 里最费时间的一道逻辑不难但实现量大。核心是把每种方块的形状用相对坐标预定义好然后模拟下落过程——对每个方块从底部向上扫描找到第一个不重叠的合法位置落定后检查消行消完还要让上面的方块重新做重力下落。写完记得用例子手动验证一遍再提交坐标偏移和消行后的下移顺序最容易出错。备战建议Capital One 的 OA 题型非常稳定前两题基本送分第三题在边界条件上容易出错第四题实现量大但逻辑直白。时间分配建议Q1Q2 合计不超过 15 分钟Q3 给 15 分钟剩下 40 分钟留给 Q4写完之后一定要留时间跑测试用例。最后想分享一下我的备战心得Capital One OA 的信息差还是挺大的尤其是 Q4 这种图形放置加状态维护的题如果没有提前见过类似题型很容易时间不够。我在准备过程中找 oavoservice 做了 OA 辅助他们整理的 Capital One 高频题库覆盖率很高Q3 那道双指针变种题在题库里见过节省了不少卡壳时间最后也顺利通过了。