Optiver 2024 校招軟體工程師測試真題。oavoservice 分享完整題目和高頻考點,助你準備量化交易公司面試。
📋 題目一:訂單簿實作
實作一個簡化的訂單簿(Order Book)資料結構。
核心功能
import heapq
from collections import defaultdict
class OrderBook:
def __init__(self):
self.bids = [] # 買單(最大堆)
self.asks = [] # 賣單(最小堆)
self.orders = {} # {order_id: order_info}
def add_order(self, order_id, side, price, quantity):
order = {
'id': order_id,
'side': side,
'price': price,
'quantity': quantity
}
self.orders[order_id] = order
if side == 'buy':
heapq.heappush(self.bids, (-price, order_id))
else:
heapq.heappush(self.asks, (price, order_id))
def cancel_order(self, order_id):
if order_id in self.orders:
del self.orders[order_id]
return True
return False
def get_best_bid(self):
while self.bids:
price, order_id = self.bids[0]
if order_id in self.orders:
return -price
heapq.heappop(self.bids)
return None
def get_best_ask(self):
while self.asks:
price, order_id = self.asks[0]
if order_id in self.orders:
return price
heapq.heappop(self.asks)
return None
def get_spread(self):
best_bid = self.get_best_bid()
best_ask = self.get_best_ask()
if best_bid and best_ask:
return best_ask - best_bid
return None
📋 題目二:市場數據分析
計算移動平均和波動率。
實作
from collections import deque
class MarketDataAnalyzer:
def __init__(self, window_size):
self.window_size = window_size
self.prices = deque(maxlen=window_size)
def add_price(self, price):
self.prices.append(price)
def get_moving_average(self):
if not self.prices:
return None
return sum(self.prices) / len(self.prices)
def get_volatility(self):
if len(self.prices) < 2:
return None
mean = self.get_moving_average()
variance = sum((p - mean) ** 2 for p in self.prices) / len(self.prices)
return variance ** 0.5
💼 oavoservice 助力
量化知識 - 訂單簿和市場數據 資料結構 - 堆積和佇列的應用 性能優化 - 高頻交易場景
聯繫 oavoservice,專業量化面試輔助!
標籤: #Optiver #量化交易 #訂單簿 #OA #OA代做 #面試輔助 #一畝三分地
需要面試真題? 立刻聯繫微信 Coding0201,獲得真題。