焦点关键词实战指南配图:核心步骤与效果对比

Range take-home 面经 2026:90分钟 TypeScript 笔试全解与高分策略

Range take-home 面经 2026:90分钟 TypeScript 笔试全解与高分策略

引言

Range take-home 面经 2026 是近期很典型的题型。
这是我们学员贡献的最新面经。
因此,这份复盘以实战为主。
并且会明确 2026年最新 的考察口径。

如果你正准备 Range take-home 面经 2026,这篇会很省时间。
此外,文章会覆盖代码修复与测试设计。
也会讲清 IRR 数值求解的稳定写法。
最后给你可复用的答题模板。

2026 面试流程深度复盘:Range take-home 面经 2026

这轮题目通常给你约 90 分钟。
因此,前 10 分钟先跑测试并定位红灯。
重点先看 test/holdings.test.ts
先复现,再锁定最小改动面。

10 到 35 分钟要修基础方法。
具体来说,要先稳住 getCurrentHoldings()
与此同时,校验零仓位过滤。
再确认键值映射是否一致。

35 到 65 分钟进入新功能。
但是,先写 hasWashSale(symbol, days=30) 的规则。
你要抓住亏损卖出与时间窗口。
并且处理边界日与同日交易。

65 到 85 分钟处理 moneyWeightedReturn
换句话说,要先建现金流再求 IRR。
此外,起始和期末持仓估值必须并入。
无有效现金流时要返回 0.0

最后 5 到 10 分钟补单测与文档。
因此,test/newFeature.test.ts 建议至少 2 例。
一例正向,一例反向。
并且更新 CHANGELOG.md 保证可追溯。

核心题目解析

在 Range take-home 面经 2026 中,主线是“时序正确”。
因此,交易必须先排序。
否则平均成本会漂移。
后续 Wash Sale 与 IRR 都会错。

先看持仓与成本。
具体来说,getCurrentHoldings() 是买加卖减。
getCostBasis() 用平均成本法。
getUnrealizedPnl() 复用成本结果更稳。

再看 Wash Sale。
此外,判定分两步。
第一步是亏损卖出。
第二步是 ±days 内同标的买入。

亏损卖出的核心很明确。
但是,要用“卖出时点平均成本”比较。
sell price < avg cost at sale
这要求你按历史交易逐步回放。

最后看 IRR。
因此,买入记负流,卖出记正流。
起始持仓估值记负,期末估值记正。
数值法优先二分,收敛更稳。

from dataclasses import dataclass
from datetime import datetime
from typing import List, Tuple

@dataclass
class Trade:
    symbol: str
    side: str  # BUY or SELL
    qty: float
    price: float
    ts: datetime

def has_wash_sale(trades: List[Trade], symbol: str, days: int = 30) -> bool:
    # 先排序,保证成本与时序一致
    rows = sorted([t for t in trades if t.symbol == symbol], key=lambda x: x.ts)
    buys = [t for t in rows if t.side == "BUY"]

    qty, avg_cost = 0.0, 0.0
    for t in rows:
        if t.side == "BUY":
            total = avg_cost * qty + t.price * t.qty
            qty += t.qty
            avg_cost = total / qty
            continue

        if qty <= 0:
            continue
        is_loss_sale = t.price < avg_cost  # 亏损卖出
        if is_loss_sale:
            for b in buys:
                if abs((b.ts.date() - t.ts.date()).days) <= days:
                    return True

        qty -= t.qty
        if qty <= 0:
            qty, avg_cost = 0.0, 0.0
    return False

def money_weighted_return(
    trades: List[Trade],
    start_date: datetime,
    end_date: datetime,
    start_value: float,
    end_value: float
) -> float:
    flows: List[Tuple[datetime, float]] = [
        (start_date, -start_value),
        (end_date, end_value),
    ]
    for t in trades:
        if start_date <= t.ts <= end_date:
            amt = -t.price * t.qty if t.side == "BUY" else t.price * t.qty
            flows.append((t.ts, amt))

    if not any(c > 0 for _, c in flows) or not any(c < 0 for _, c in flows):
        return 0.0

    def npv(r: float) -> float:
        return sum(c / ((1 + r) ** ((d - start_date).days / 365.0)) for d, c in flows)

    lo, hi = -0.9999, 10.0
    if npv(lo) * npv(hi) > 0:
        return 0.0

    # 二分法鲁棒,适合面试限时场景
    for _ in range(120):
        mid = (lo + hi) / 2
        val = npv(mid)
        if abs(val) < 1e-7:
            return mid
        if npv(lo) * val <= 0:
            hi = mid
        else:
            lo = mid
    return (lo + hi) / 2

建议新增单测如下。
因此,覆盖正反两面最关键。
loss sell + 30天内买回 -> true
仅单向现金流 -> IRR 为 0.0

系统流程图(Mermaid)

flowchart TD
A[读取CSV] --> B[解析与类型化]
B --> C[按时间排序]
C --> D[交易回放]
D --> E[getCurrentHoldings]
D --> F[getCostBasis]
D --> G[getUnrealizedPnl]
D --> H[亏损卖出判定]
H --> I[±days买入窗口]
I --> J[hasWashSale]
D --> K[现金流构建]
K --> L[二分法IRR]
L --> M[moneyWeightedReturn]
M --> N[新增单测]
N --> O[更新CHANGELOG]

专家备考策略与高频考点:Range take-home 面经 2026

准备 Range take-home 面经 2026 时,先练“读测修复”。
因此,先从失败断言反推业务规则。
此外,再补最小测试锁回归。
这比盲改源码更稳。

高频核心考点如下。
- 因此,先看交易时序与排序稳定性。
- 此外,检查平均成本是否逐笔更新。
- 但是,卖出后仓位归零要重置成本。
- 与此同时,Wash Sale 要做同标的过滤。
- 具体来说,IRR 要处理无根与不收敛。
- 总而言之,文档更新要可审计可追溯。

Range take-home 面经 2026 的 BQ 也会卡人。
换句话说,你要把技术动作讲成业务价值。
STAR 可以直接这样说。
并且每段控制在 20 到 40 秒。

  1. S:线上收益统计偶发偏差,且影响报表。
  2. T:在截止前修复计算,并补测试防回归。
  3. A:先重放交易,再修成本与 IRR 求解器。
  4. R:测试全绿,结果与对账一致,后续零事故。

总结与行动号召(CTA)

Range take-home 面经 2026 的破题关键是三点。
因此,先保时序正确。
此外,现金流建模要完整。
最后用测试与 Changelog 收口。

如果你想做一轮实战模拟,直接预约。
- 联系我们的专家进行一对一面试辅导
- 权威算法参考