
Stripe OA 题型依然是熟悉的那一套,整体来说变化不大: 时长:60 min 题目数量:1 题 类型:Hard OOD(面向对象设计) 虽然只有一道题,但千万不要被数量迷惑。
题面非常长、实现量也很大,基本属于一边读题一边设计类结构,同时还要快速完成代码实现,对 coding 速度和设计能力都有要求。 目前Stripe OA 题库其实非常小。这家公司这么多年下来,基本就反复在出三套题,很多同学做过几十套 OA 统计下来,也还是这几道经典题轮换。
Stripe OA 真题分享


解题思路
维护每台服务器的活跃连接数 cnt、连接明细 con、以及对象到目标机的绑定 obj_to_t 与引用计数 obj_use。
CONNECT:若对象已绑定则必须发往该机;否则在未禁用且未满的机器里选“最小负载,若并列取较小下标”。成功时输出一条日志。
DISCONNECT:从所在机器移除并更新对象引用计数;若对象计数归零则解除绑定。
SHUTDOWN:把目标机上的连接按“连接ID首次出现的顺序”驱逐,临时将该机加入 disabled,先全部断开再按既有规则逐个重连(依然受对象固定与容量限制约束),最后解除禁用
代码
def route_request(numTargets, maxConnectionsPerTarget, requests):
n, cap = numTargets, maxConnectionsPerTarget
cnt = [0] * n
con = {}
per_t = [set() for _ in range(n)]
obj_to_t = {}
obj_use = {}
disabled = set()
logs = []
seen_order = {}
order_seq = 0
def pick_target(exclude_disabled=True):
best_t, best_load = None, None
for i in range(n):
if exclude_disabled and i in disabled:
continue
if cnt[i] >= cap:
continue
if best_t is None or cnt[i] < best_load or (cnt[i] == best_load and i < best_t):
best_t, best_load = i, cnt[i]
return best_t
def attach(cid, uid, oid):
if oid in obj_to_t:
t = obj_to_t[oid]
if t in disabled or cnt[t] >= cap:
return False
else:
t = pick_target()
if t is None:
return False
con[cid] = (t, uid, oid)
per_t[t].add(cid)
cnt[t] += 1
obj_use[oid] = obj_use.get(oid, 0) + 1
obj_to_t[oid] = t
logs.append(f"{cid},{uid},{t+1}")
return True
def detach(cid):
v = con.pop(cid, None)
if not v:
return
t, _, oid = v
if cid in per_t[t]:
per_t[t].remove(cid)
cnt[t] -= 1
k = obj_use.get(oid, 0) - 1
if k <= 0:
obj_use.pop(oid, None)
obj_to_t.pop(oid, None)
else:
obj_use[oid] = k
for line in requests:
parts = [x.strip() for x in line.split(",")]
op = parts[0]
if op == "CONNECT":
_, cid, uid, oid = parts
if cid not in seen_order:
order_seq += 1
seen_order[cid] = order_seq
attach(cid, uid, oid)
elif op == "DISCONNECT":
_, cid, uid, oid = parts
if cid in con:
detach(cid)
else:
_, idx = parts
t = int(idx) - 1
disabled.add(t)
evict_list = sorted(
[cid for cid in per_t[t] if cid in con and con[cid][0] == t],
key=lambda c: (seen_order.get(c, float("inf")), c)
)
triples = []
for cid in evict_list:
_, uid, oid = con[cid]
triples.append((cid, uid, oid))
for cid in evict_list:
detach(cid)
per_t[t].clear()
for cid, uid, oid in triples:
attach(cid, uid, oid)
disabled.discard(t)
return logsOA代写|大厂笔试|HackerRank 包过专业服务
如果你正被 OA / 大厂笔试反复卡住,这里可以给你一个更稳、更省时间的选择。我们提供专业的OA代写服务,覆盖各类大厂笔试与 HackerRank / 牛客网 / CodeSignal 等主流平台。全程由经验丰富的北美工程师人工完成,确保所有测试用例 100% 通过,如未通过则不收费。
操作方式采用远程控制,无需共享账号,不留任何操作痕迹,流程稳定、安全、低风险。全程私域对接,响应快、沟通直接,适合临近截止、容错率极低的关键 OA 阶段,帮你把精力留给真正重要的面试环节。