If your time is limited, rather than grinding blindly, first figure out what the Optiver OA loves to test most. This article ranks Optiver OA's high-frequency question types from most to least common (by experience-based estimates), so you spend review energy where the payoff is highest.
Optiver OA Overview
| Dimension | Detail |
|---|---|
| Platform | HackerRank / CodeSignal / proprietary |
| Duration | 60–75 minutes |
| Questions | 2–4 |
| Difficulty | LeetCode Medium+ |
| Focus | Simulation, sliding window, expected value |
Tier 1 (Almost Guaranteed)
Order Book / Event Simulation (~60% appearance)
The most Optiver-flavored. Given an order stream, simulate matching or maintain book state. Cue: the prompt mentions BUY/SELL, bid/ask, matching, remaining orders.
import heapq
def best_bid_ask(orders):
buy, sell = [], [] # buy: max-heap (neg price); sell: min-heap
snapshots = []
for side, price in orders:
if side == 'BUY':
heapq.heappush(buy, -price)
else:
heapq.heappush(sell, price)
best_buy = -buy[0] if buy else None
best_sell = sell[0] if sell else None
snapshots.append((best_buy, best_sell))
return snapshots
Time complexity: O(n log n)
Tier 2 (High Frequency)
Sliding Window / Monotonic Queue (~40% appearance)
Window extremes and interval statistics on a price stream. Cue: "consecutive k," "max/min within window."
def max_avg_window(prices, k):
window_sum = sum(prices[:k])
best = window_sum
for i in range(k, len(prices)):
window_sum += prices[i] - prices[i - k]
best = max(best, window_sum)
return best / k
Time complexity: O(n)
Expected Value / Probability (~40% appearance)
Expectation over dice, coins, sampling. Cue: "expected," "on average," "until ...". Prefer linearity of expectation or stopping-time equations over brute simulation.
Tier 3 (Occasional)
Knapsack / Allocation Variants (~20% appearance)
Capital/position allocation wrapped as 0-1 or unbounded knapsack. Cue: "maximize return within a budget."
def knapsack(weights, values, capacity):
dp = [0] * (capacity + 1)
for w, v in zip(weights, values):
for c in range(capacity, w - 1, -1): # reverse: each item used once
dp[c] = max(dp[c], dp[c - w] + v)
return dp[capacity]
Time complexity: O(n × capacity)
Allocate Review Time by Frequency
| Priority | Type | Suggested Review Time |
|---|---|---|
| ⭐⭐⭐ | Order book simulation | 35% |
| ⭐⭐⭐ | Sliding window | 25% |
| ⭐⭐⭐ | Expected value | 25% |
| ⭐⭐ | Knapsack variants | 15% |
Master the top three and you cover 80%+ of the Optiver OA. Spend the rest on knapsack and miscellany.
FAQ
What does the Optiver OA test most often? Order-book/event simulation is most frequent, followed by sliding window and expected-value problems. These three are the main course of nearly every OA.
Are these frequency numbers accurate? They're experience-based estimates from past reports, not official data — use them to allocate review energy, but expect randomness in actual questions.
Is grinding only high-frequency types enough? Covering 80% gets a solid score, but to pass reliably, also skim Tier 3 (knapsack) so an off-meta question doesn't break your rhythm.
Why are expected-value questions so common? Market making is fundamentally about probability; Optiver wants candidates with probability intuition, so expectation problems recur in both the OA and the screen.
How do I tell which type a question is? While practicing, deliberately memorize the cues: see bid/ask → simulation, see windows → monotonic queue, see "until" → stopping-time equation. Build reflexes.
Preparing for the Optiver OA?
Allocating energy by frequency is the fastest way to raise your score in limited time. Our mentors offer deep dives and timed mocks on the three high-frequency types: order-book simulation, sliding window, and expected value. For a systematic plan, reach out — contact WeChat Coding0201 to get real questions and prep materials.
Contact
Email: [email protected] Telegram: @OAVOProxy