🇺🇸 Optiver面完了,说说感受。感觉在这种公司做SDE,“快”是基本线,“不能错”才是终极要求,分享点不一样的看法。
.
今年OA除了常规难度的算法,非常喜欢考工程落地的细节。有一道题是给了一段很短的C++代码片段,里面混杂着拷贝构造和移动语义,要求分析在特定编译器下到底触发了哪几个构造函数,怎么改能把这微秒级的开销给省出来。还有一道是设计一个极简的订单薄撮合引擎,限定了内存模型,要求用最优的数据结构在log复杂度内完成价格优先、时间优先的匹配,红黑树和哈希表的组合变形得玩得比较熟。
.
面试也是单刀直入,没有废话。Technial面会问怎么用内核旁路技术来加速网卡的数据处理,还探讨了如何设计一个能随系统时钟精确同步的定时器,误差要控制在纳秒级别。系统设计根本不问那种千万并发的CRUD,而是讨论如果要在FPGA和软件层之间做协同开发,API边界要怎么切分。
.
BQ面非常强调Owner意识,基本都在聊失败案例:“因为一个没注意的race condition导致报撤单异常,你是怎么在10分钟内止损并定位到bug的”。还有就是如何与Trader沟通那种“玄学”的延迟抖动,既要讲清楚技术瓶颈,又不能把非技术背景的人绕晕,真的很考验换位思考的能力。
.
我随手整哩了Optiver面试中高频出现的C++优化点和低延迟系统设计题,附带了详细的解体分析。准备冲这家或者想了解Trading firm技术栈的同学~
🙌【OP】✔
.