OA辅助 / 面试训练复盘

Ramp Banking OA 面试复盘|账户合并以后,旧余额还能查对吗

Ramp 的 Banking OA 有一类要求容易写到最后才发现存储结构不够用:两个账户合并后,还要查询过去的余额。 2024 年的候选人讨论 提到了四阶段银行系统,包含交易、历史记录和账户合并。这里聚焦这一道渐进题的合并部分,不把四个。

Ramp Banking OA 面试复盘|账户合并以后,旧余额还能查对吗主题图解
训练主题配图 · 非客户现场证明

Ramp 的 Banking OA 有一类要求容易写到最后才发现存储结构不够用:两个账户合并后,还要查询过去的余额。 2024 年的候选人讨论 提到了四阶段银行系统,包含交易、历史记录和账户合并。这里聚焦这一道渐进题的合并部分,不把四个阶段写成四道独立算法题。 原帖没有给出完整接口。以下用一组自拟练习约定把边界讲清楚:请求时间严格递增,账户 ID 不复用;B 合入 A 后,B 不能再交易,但仍能查 B 在合并之前的余额。具体考试按题面定义执行。

第一题:账户合并后的历史余额

题目描述

实现创建、存款、转账、合并和历史余额查询。练习中的 merge(t, A, B) 把 B 的当前余额加到 A,并在 t 时刻结束 B 的存续期。 balance_at(id, q) 返回账户在 q 时刻、该时刻操作结束后的余额;账户尚未创建或已经关闭时返回空值。查询时间不得晚于当前请求时间。 自拟例子:t=1 时 A 存入 90,t=2 时 B 存入 40,t=3 时 B 合入 A。此后查询 A 在 t=2 的余额是 90,在 t=3 的余额是 130;B 在 t=2 是 40,在 t=3 则返回空值。合并不能把 A 的过去也改成 130。

解题思路

每个账户分开保存当前余额、创建时间、关闭时间和有序快照。存款、成功转账和合并完成后,在受影响账户的快照末尾追加 (时间, 余额) 。失败操作不改余额,也不追加成功记录。 合并时先验证两个 ID 不同且都仍有效,再更新 A 的余额和快照,记录 B 的关闭时间。保留 B 的旧快照。历史查询先检查 created_at <= q < closed_at ,再二分找时间不超过 q 的最后一条快照;仍有效的账户把关闭时间视为正无穷。 只用并查集把 B 永久指向 A,会丢掉历史身份。若接着把 A 合入 C,查询过去的 B 仍要读 B 自己当时的记录,不能一路跳到 C。这个练习不需要把 B 的全部历史复制给 A,A 只在合并时增加一条余额快照。 复杂度 :在顺序时间戳和上述接口约定下,单次写入与合并摊销 O(1),历史查询 O(log h),h 为该账户快照数;总空间 O(m),m 为成功写入影响的账户记录总数。

Ramp OA 练习如何验收

先画一条含两次合并的时间线,再跑查询。必须覆盖合并前一刻、合并当刻、创建前、自合并、重复合并,以及转账失败后余额不变。每次操作后把所有有效账户余额相加:转账和合并不应改变这个总和。 Ramp 也有数据清洗与解析的 CodeSignal 经历,2025 University Grad Backend 的候选人则记录了 Industry Coding Framework。准备时分别练接口状态和字符串处理,不要把某一道银行题当成所有岗位的固定试卷。

FAQ

合并时要把两份历史快照拼起来吗?

这组练习约定下不用。A 在合并前只拥有自己的余额,合并时新增快照即可;B 的旧快照单独保留。

历史余额为零和账户不存在如何区分?

存在但余额为零返回 0;查询时间落在账户存续区间之外返回空值。不要都用 0 表示。

如果允许同名账户重新创建呢?

给每次创建分配独立版本,并保存各版本的存续区间。先按查询时间找到版本,再查快照;仅以名字作主键会覆盖旧记录。

参考来源

Reddit:Ramp New Grad OA 与银行系统合并经历 Taro:纽约 SWE 的 CodeSignal 数据解析经历,2024 年 5 月 Glassdoor:Ramp University Grad Backend 的 Industry Coding Framework 记录

联系 VOPathway

如果你希望把这套方法用于自己的 OA 或 VO 准备,可以把目标岗位、当前阶段、面试时间和主要难点发给 VOPathway,我们会据此安排针对性的练习与复盘。

  • 微信:Coding0201
  • 邮箱:[email protected]
  • Telegram:@OAVOProxy
  • WhatsApp:+86 178 6396 8105

可提供 OA辅助、OA辅导、VO辅助与 VO辅导。文章用于训练参考,不代表相关公司的官方流程;实际安排请以候选人收到的通知为准。

每一步,都更接近准备充分的自己。

本文用于面试准备与训练复盘。公司名称仅用于标识题型素材主题,不代表官方合作或录用承诺。

预约一次训练复盘 ↗