← 返回博客列表 HackerRank OA 各公司题型地图与备考策略
HackerRank

HackerRank OA 各公司题型地图与备考策略

2026-07-16

HackerRank 是很多公司的第一轮筛选平台,从大厂到量化基金再到初创都在用它做在线笔试。同样是 HackerRank,不同公司的出题风格、时长、难度差别很大:有的考标准算法,有的考解析与实现,有的直接上高难度 + 紧时间。如果你按同一套模板准备所有公司,很容易在最该拿分的地方失手。

这篇文章不讲平台机制(那部分见我们的平台机制全解析),而是回答一个更实际的问题:哪家公司爱考哪类题,你应该怎么分桶准备。核心是一张"公司 → 题型地图",配上每个桶的备考重点,最后给一段完整可运行的代表性题目解法。OA 通常是后续所有轮次的入口,笔试挂了就直接失去了面试机会,所以值得按公司精准准备。

公司 → 题型地图(核心速查表)

公司 / 分桶 典型时长 高频题型 备注
大厂:Google / Amazon / Meta 60-90 分钟 标准算法与数据结构,中等难度 数组、哈希、图、DP,覆盖面广
大厂:TikTok(SDE Intern) 60-90 分钟 滑动窗口 + 哈希表偏多 字符串/子数组窗口类高频
大厂:Uber 60-90 分钟 图、设计类、中等算法 偏工程实现感
量化:Citadel / Two Sigma 75 分钟左右 高难解析 + 优化,偶带概率/数学 时间紧,题面长,读题即难点
量化:Jane Street / Optiver 60-90 分钟 高难实现 + 数学建模 对细节与边界要求苛刻
初创:Stripe 90-120 分钟 前缀和 + 解析 + 校验逻辑 实用/实现导向,题面贴近真实业务
初创:Airbnb 60-90 分钟 SQL + Python 混合数据分析 数据处理 + 查询能力
初创:Palantir 90-120 分钟 数据建模 + 实现 偏"把复杂需求写对"

说明:同一家公司不同岗位、不同批次会有浮动,上表是公开经验的集中趋势,用来定"主攻方向",不是绝对规则。

一、分桶备考策略:不同公司主攻不同

大厂桶(Google / Amazon / Meta / TikTok / Uber)

大厂 OA 最标准,考的是基础算法与数据结构的熟练度,难度多为中等。备考重点:

量化金融桶(Citadel / Two Sigma / Jane Street / Optiver)

量化 OA 的特点是高难度 + 长题面 + 紧时间(Citadel/Two Sigma 常见 75 分钟)。备考重点:

初创桶(Stripe / Airbnb / Palantir)

初创偏实用与实现,题面贴近真实业务。备考重点:

二、代表题精讲:窗口内最多 K 种不同元素

TikTok/大厂桶的高频代表题:给一个数组和整数 K,求"最多包含 K 种不同元素的最长连续子数组"的长度。它是滑动窗口 + 哈希表的经典组合,值得吃透。

思路

  1. 用一个哈希表记录当前窗口内每种元素的出现次数,right 指针不断向右扩张。
  2. 当窗口内不同元素种类超过 K 时,left 指针右移收缩,直到种类数重新 ≤ K。
  3. 每一步用当前窗口长度更新答案。每个元素最多进出窗口各一次,整体线性。

Python 解法(完整可运行)

import sys
from collections import defaultdict

def longest_subarray_k_distinct(nums, k):
    # 窗口内每种元素的计数;left 为窗口左边界
    count = defaultdict(int)
    left = 0
    best = 0
    for right, x in enumerate(nums):
        count[x] += 1
        # 种类超过 k 时,从左侧收缩窗口
        while len(count) > k:
            count[nums[left]] -= 1
            if count[nums[left]] == 0:
                del count[nums[left]]
            left += 1
        best = max(best, right - left + 1)
    return best

def main():
    data = sys.stdin.read().split()
    if not data:
        return
    # 输入:第一行 n k,第二行 n 个整数
    n, k = int(data[0]), int(data[1])
    nums = list(map(int, data[2:2 + n]))
    print(longest_subarray_k_distinct(nums, k))

if __name__ == "__main__":
    main()

用样例 n=7 k=2、数组 1 2 1 2 3 3 4 跑,答案是 4(子数组 1 2 1 2)。若无 stdin,可直接调用 longest_subarray_k_distinct([1,2,1,2,3,3,4], 2) 验证。

时间复杂度:O(n),每个元素最多进出窗口一次。 空间复杂度:O(k),哈希表最多存 k+1 种元素。

三、按桶排一份两周计划

阶段 大厂桶 量化桶 初创桶
第 1 周 数组/哈希/滑窗基础 高难解析 + 概率入门 前缀和/解析/SQL 基础
第 2 周 图 + DP + 全真限时模拟 限时优化 + 长题面拆解模拟 业务型实现 + 数据分析模拟

无论哪个桶,最后都要做限时全真模拟:按目标公司的时长与题型跑一遍,把节奏、读题、边界都练到位。HackerRank 按全部隐藏用例计分(涵盖运行时间、边界、内存),目标是尽量把每题的用例全过。

如果你想更高效,我们的 OA辅助 / OA代面 服务提供按公司做题型预测、完整解法 + 复杂度讲解,以及实时陪练/协作辅导,让你的 OA 和后续 VO 风格保持一致,是从笔试到面试的端到端陪跑。


FAQ

Q1:HackerRank 和 LeetCode 有什么区别? LeetCode 多是给好函数签名、你只填核心逻辑;HackerRank 很多题要自己读 stdin、自己处理输入输出,题面也更贴近各公司业务风格。备考时除了刷算法,也要练 IO 模板与读题拆解。

Q2:哪些公司用 HackerRank? 覆盖很广:大厂如 Google、Amazon、Meta、TikTok、Uber;量化金融如 Citadel、Two Sigma、Jane Street、Optiver;初创如 Stripe、Airbnb、Palantir 都常用它做第一轮在线笔试。具体题型见上文地图表。

Q3:OA 一定要全部用例都过吗? HackerRank 按通过用例数计分,部分正确也有分,但分数越高越安全。建议先 AC 掉样例和简单 case 拿基础分,再冲隐藏用例;能全过当然最好,尤其量化桶竞争激烈时。

Q4:不同公司差别真的大到要分开准备吗? 主攻方向确实要分:TikTok 偏滑窗哈希、Stripe 偏前缀和解析、量化偏高难优化。基础算法是共同底座,但把有限时间按目标公司的高频题型倾斜,性价比最高。

Q5:时间紧只来得及准备一类怎么办? 先确定你最想去的公司属于哪个桶,按那个桶主攻。大厂桶的滑窗+哈希+DP 覆盖面最广,是通用性最强的起点;有余力再补量化的高难解析或初创的解析/SQL。


正在准备 HackerRank OA?

不确定目标公司爱考哪类题、想要按公司做题型预测并配完整解法讲解,可以聊聊我们的 OA辅助 / OA代面 方案——从公司题型地图到实时陪练,帮你把 OA 和后续 VO 一起准备到位。

立即添加微信 Coding0201获取按公司定制的题型清单与备战计划

联系方式