焦点关键词相关的博文配图,直观展示文章核心观点

Optiver QR Intern 面经 2026:三道高频题实战拆解

SEO Title: Optiver QR Intern 面经 2026:三道高频量化题深度拆解与备考策略

Optiver QR Intern 面经 2026:三道高频题实战拆解

Optiver QR Intern 面经 2026 是本篇主线。
首先,三题都不长。
其次,三题都很考建模。
更关键的是边界处理能力。

此外,这对应 2026年最新 面试经验。
并且,这是我们学员贡献的最新面经
因此,题型和追问都很贴近实战。
与此同时,你可以直接按题训练。

2026 面试流程深度复盘:Optiver QR Intern 面经 2026

首先,Optiver QR Intern 面经 2026 的节奏很快。
常见顺序是 OA、技术面、终面。
与此同时,每轮都看推导表达。
最后,面试官会临场改条件。

其次,OA 题面通常很短。
但是,约束会非常密。
比如,是否允许负持仓。
因此,先做最小样例最稳。

另外,技术面重视口头建模。
你要先给状态定义。
然后,再讲状态转移。
换句话说,结构先于代码。

最后,终面看工程意识。
你要主动讲异常处理。
同时,说明数值稳定策略。
因此,可读性和鲁棒性都重要。

面试节奏建议:
- 先读题并圈定约束。
- 先写状态,再过样例。
- 先讲正确性,再谈优化。
- 先给边界,再给代码。

核心题目解析

题目一:有限步持仓路径计数

首先,设 dp[t][h] 为走 t 步到 h 的方案数。
每步只能买一股或卖一股。
因此,转移来自相邻持仓。
若禁负持仓,就截断 h<0

其次,目标是从 kn
步数最多为 m
因此,答案是 t<=m 时到 n 的总和。
但是,tn-k 需同奇偶。

同时,可用组合数学做校验。
若走 t 步,净变化是 n-k
买入次数是 (t+n-k)/2
若不是整数,则该 t 无解。

另外,复杂度要主动说明。
若持仓上界为 H,时间是 O(mH)
同时,空间可滚动到一维。
因此,工程上可稳定落地。

from collections import defaultdict

def count_trade_sequences(n: int, k: int, m: int, allow_negative: bool = True) -> int:
    # dp[h]: current step ways to reach holding h
    dp = defaultdict(int)
    dp[k] = 1
    ans = 0

    for step in range(1, m + 1):
        nxt = defaultdict(int)
        for h, cnt in dp.items():
            nxt[h + 1] += cnt  # Buy one share
            if allow_negative or h - 1 >= 0:
                nxt[h - 1] += cnt  # Sell one share
        dp = nxt

        # Parity pruning: only valid when step and net change parity match
        if (step - (n - k)) % 2 == 0:
            ans += dp.get(n, 0)

    return ans

# Example: n=2, k=1, m=3 => 4

题目二:目标权重下的资金分配与调仓

首先,这题是再平衡系统设计。
输入是目标权重和价格矩阵。
第一步先归一化权重。
这样可避免权重和漂移。

其次,每日先算组合总市值。
然后计算目标股数。
交易量等于目标减当前。
并且,要考虑整股与现金约束。

此外,数据质量决定上限。
缺失价格可做前值填充。
停牌标的可暂缓调仓。
与此同时,要持续记录跟踪误差。

但是,小权重会引发抖动交易。
可设置最小交易门槛。
小于门槛时先不下单。
因此,交易成本会更可控。

flowchart TD
A[读取当日收盘价] --> B[更新持仓市值与现金]
B --> C[归一化目标权重]
C --> D[计算目标持仓股数]
D --> E[生成买卖交易量]
E --> F[执行交易并更新账户]
F --> G[记录跟踪误差与风控指标]
G --> A
def rebalance_portfolio(prices, target_weights, init_cash):
    """
    prices: List[List[float]], shape = [T][N]
    target_weights: List[float], length N
    return: daily logs with holdings, cash, and tracking error
    """
    n = len(target_weights)
    w_sum = sum(target_weights)
    w = [x / w_sum for x in target_weights]  # normalize weights

    shares = [0] * n
    cash = float(init_cash)
    logs = []

    for day, px in enumerate(prices):
        total_value = cash + sum(shares[i] * px[i] for i in range(n))

        # target shares with integer constraint
        target_shares = [int((total_value * w[i]) // max(px[i], 1e-12)) for i in range(n)]
        trade = [target_shares[i] - shares[i] for i in range(n)]

        # enforce cash constraint on buy side
        buy_cost = sum(max(trade[i], 0) * px[i] for i in range(n))
        if buy_cost > cash and buy_cost > 0:
            ratio = cash / buy_cost
            trade = [int(t * ratio) if t > 0 else t for t in trade]

        # execute trades
        cash -= sum(trade[i] * px[i] for i in range(n))
        shares = [shares[i] + trade[i] for i in range(n)]

        new_value = cash + sum(shares[i] * px[i] for i in range(n))
        cur_w = [(shares[i] * px[i]) / max(new_value, 1e-12) for i in range(n)]
        tracking_error_l1 = sum(abs(cur_w[i] - w[i]) for i in range(n))

        logs.append({
            "day": day,
            "cash": cash,
            "shares": shares[:],
            "tracking_error_l1": tracking_error_l1
        })

    return logs

题目三:均匀分布价格下的最优成交期望

首先,这题是序贯决策模型。
价格服从 Unif(a,b) 且 iid。
你要完成 n 单位成交。
并且,最多可用 k 次固定价 p

其次,设 V[i][j] 为最优总收益。
i 是剩余成交单位。
j 是剩余固定价次数。
因此,状态定义很直接。

具体来说,每步先观测 x
然后比较两种动作收益。
其一是按市场价成交。
其二是按固定价成交。

此外,这是阈值策略。
阈值可写成常数 c
x<c 时,用固定价更优。
否则,按市场价更优。

同时,可先做极端值自检。
p<=a,固定价价值很低。
p>=b,固定价通常更优。
因此,结果应符合该直觉。

def e_max_uniform(a: float, b: float, c: float) -> float:
    # E[max(X, c)] for X ~ Unif(a, b)
    if c <= a:
        return (a + b) / 2.0
    if c >= b:
        return c
    return c * (c - a) / (b - a) + (b * b - c * c) / (2.0 * (b - a))

def expected_fill_price(n: int, k: int, a: float, b: float, p: float) -> float:
    # V[i][j]: max expected total revenue with i units left and j fixed-price rights
    k = min(k, n)
    V = [[0.0] * (k + 1) for _ in range(n + 1)]
    ex = (a + b) / 2.0

    for i in range(1, n + 1):
        V[i][0] = V[i - 1][0] + ex

    for i in range(1, n + 1):
        for j in range(1, min(i, k) + 1):
            c = p + V[i - 1][j - 1] - V[i - 1][j]
            V[i][j] = V[i - 1][j] + e_max_uniform(a, b, c)

    return V[n][k] / n  # expected average fill price

专家备考策略与高频考点:Optiver QR Intern 面经 2026

首先,Optiver QR Intern 面经 2026 的共性很明显。
题目看似交易问题。
核心却是状态建模能力。
因此,要先练“状态-转移-边界”模板。

其次,你要准备口头证明。
先讲不变量。
再讲边界与反例。
同时,补上复杂度上界。

此外,行为题也很关键。
面试官会看协作方式。
你要把结果数据化表达。
这样更像真实工程实践。

最后,可按四周冲刺。
第一周刷路径计数。
第二周刷再平衡实现。
第三周刷 Bellman 推导。

核心考点:
- 约束条件下的状态定义能力。
- 路径计数与奇偶约束判断。
- 价格矩阵下的持仓更新能力。
- 数值稳定与交易成本权衡。
- 口头推导与代码一致性。

STAR 应对策略:
- S:波动加剧,组合偏离阈值。
- T:两周内重构调仓模块。
- A:先归一化权重,再加现金缓冲。
- R:跟踪误差下降,成交更稳定。

总结与行动号召(CTA)

总而言之,Optiver QR Intern 面经 2026 值得反复刷。
它同时考数学直觉。
也考工程细节。
而且,2026年最新题风更偏实战。

因此,建议你先做限时复盘。
先独立写三题。
再做对拍与压力测试。
随后,做一次口头讲解演练。

最后,可先看权威算法参考
同时,预约联系我们的专家进行一对一面试辅导
然后,用 Optiver QR Intern 面经 2026 做二次模拟。