最新 Two Sigma OA 2026 经验分享 | 两道真题 + 解法解析 + 高频题型总结

6 Views
No Comment

最近带同学刷了一套 Two Sigma OA ,题目不难,但非常考思维建模。和普通大厂 OA 不一样,它更偏真实场景(比如流量统计、资源优化),关键不在写代码,而在于能不能快速把问题抽象成正确模型。很多同学不是卡在实现,而是卡在“怎么想”。这套 OA 区分度挺高:会建模的很快 AC,不会的容易直接卡住。

下面整理一下这次的真题和核心思路,给大家一个参考。

最新 Two Sigma OA 2026 经验分享 | 两道真题 + 解法解析 + 高频题型总结

Two Sigma OA 基本信息

  • 平台:通常是 HackerRank / CodeSignal
  • 时长:75分钟
  • 题量:2题
  • 难度:Medium → Medium+(偏思维)

题目 1:服务器流量监控

Question description

在一个客户端 – 服务器架构中,有 N 个客户端和 1 台服务器。每个客户端与服务器的交互从时间 start[i] 开始,到时间 end[i] 结束(端点时间也计入交互时长)。

最大流量的定义是:服务器同时处理的最大并发交互数。

请找到最早出现最大并发客户端数的时间点。

Example

Given start = [1, 6, 2, 9],end = [8, 7, 6, 10]

Sheet

Time 连接状态 活跃客户端数
1 客户端 1 接入 1
2 客户端 3 接入 1,3 → 2
3 1,3 → 2
4 1,3 → 2
5 1,3 → 2
6 客户端 2 接入 1,2,3 → 3
7 客户端 3 断开 1,2 → 2
8 客户端 2 断开 1 → 1
9 客户端 1 断开、客户端 4 接入 4 → 1
10 4 → 1
11 客户端 4 断开 0

最大并发数为 3,最早出现在第 6 秒,因此返回 6.

Problem-solving ideas

事件拆分:将每个客户端的开始时间转为(时间, +1)连接事件,结束时间转为(时间, -1)断开事件。

事件排序:优先按时间升序排列;时间相同时,连接事件(+1)排在断开事件(-1)前面,保证端点时间计算准确。

遍历计算:顺序处理排序后的事件,动态维护当前并发连接数。每当并发数刷新最大值时,记录当前时间,该时间即为答案。

题目 2:最大吞吐量

Question description

我们的系统中有一条由多个数据处理单元组成的流水线,每个单元的吞吐量由 throughput[i] 表示。这些单元按顺序串联,数据必须依次经过每个单元。因此,流水线的总吞吐量由吞吐量最小的单元决定,这个单元就是限制整体处理速度的瓶颈。

每个服务都可以独立扩容:

  • I 个服务扩容 1 次的成本为 scaling_cost[i]
  • 对服务扩容 X 次后,它的吞吐量变为 throughput[i] * (1 + x) 条消息 / 分钟

给定两个长度为 N 的数组 throughput(各服务初始吞吐量)、scaling_cost(各服务单次扩容成本),以及一个整数 budget(总预算),请找到最优的扩容方案,使得最终服务的吞吐量(即流水线的总吞吐量)最大化。

Example

Given throughput = [4, 2, 7],scaling_cost = [3, 5, 6],budget = 32

最优扩容方案如下:

Sheet

服务索引 扩容前吞吐量 扩容后吞吐量 扩容次数 单次扩容成本 总花费
0 4 12 2 3 6
1 2 10 4 5 20
2 7 14 1 6 6

扩容后,三个单元的吞吐量分别为 12、10、14,流水线的总吞吐量由最小值 10 决定,这是该预算下能达到的最大值,因此答案为 10.

函数要求

完成函数 getMaximumThroughput,参数如下:

  • int throughput[n]:每个服务的初始吞吐量
  • int scaling_cost[n]:每个服务单次扩容的成本
  • int budget:可用总预算

Problem-solving ideas

用二分答案法,核心是猜测最终流水线的吞吐量T,寻找最大的可行值。具体而言,先确定T的合理范围,再对每个候选T进行可行性验证,计算每个服务至少需要扩容多少次才能使吞吐量不低于T,汇总所有服务的扩容总花费,若总花费不超过预算,则该T可行。之后根据可行性调整二分方向,可行则尝试更大的T,不可行则尝试更小的T,二分结束后,最大的可行T即为流水线能达到的最大吞吐量。

Two Sigma OA 2026 FAQ

Two Sigma OA 做完之后下一步是什么?

我这边后面接的是 Tech Screen。这一轮主要考察基础数据结构实现,面试官要求手写一个 hashmap,不能使用任何现成的 hashtable 库,需要自己实现 get 和 put 两个核心操作。整体思路是基于 bucket array配合 linked list 来解决 hash 冲突问题,同时还需要考虑设计的合理性,比如冲突处理方式、时间复杂度,以及是否支持扩容。难度不算特别高,但对基础掌握和代码细节要求比较扎实。

Two Sigma OA 支持哪些编程语言?有版本限制吗?

Two Sigma 的 OA 一般支持主流编程语言,比如 Python、Java、C++ 等,具体可选语言会在 OA 邀请邮件中明确说明。版本方面也不用太担心,常见的 Python 3.x、Java 8 及以上版本都是默认支持的。不同版本之间差异非常小,基本不会影响做题过程,也不需要做额外的兼容性处理,按照平时习惯使用即可。

关于 Two Sigma OA 的准备建议

如果你在准备 Two Sigma 这种偏建模、偏思维的 OA,很多时候卡的不是代码,而是思路怎么转化。这也是为什么不少同学刷了很多题,到了真正 OA 还是会卡住。我们这边长期在陪跑量化 / 大厂 OA,已经整理了一套比较成熟的题型框架和 OA assistance 经验。如果你时间比较紧,或者想更稳一点通过 OA,可以来聊聊,针对你目前的水平给你一套更有针对性的准备方案。

author avatar
Jory Wang Amazon Senior Software Development Engineer
Amazon senior engineer, focusing on the research and development of infrastructure core systems, with rich practical experience in system scalability, reliability and cost optimization. Currently focusing on FAANG SDE interview coaching, helping 30+ candidates successfully obtain L5/L6 Offers within one year.
END
 0