← 返回博客列表 Goldman CoderPad 四大题型拆解:算法 / LRU 设计 / 代码优化 / 撮合
Goldman Sachs

Goldman CoderPad 四大题型拆解:算法 / LRU 设计 / 代码优化 / 撮合

2026-06-12

CoderPad 是 Goldman Sachs 首选的编程面试平台。这篇按真实候选人复盘整理,把 CoderPad 上四大题型和应对策略讲清楚,帮你把准备的方向对上 GS 真正考的东西。


一、面试前准备

  1. 公司与技术调研:了解 GS 的业务领域(交易、风控、数据)和技术栈(Java、Python、C++)。
  2. 在 CoderPad 上练手:熟悉它的界面——运行代码、调试、注释、快捷键,别在面试时第一次摸平台。
  3. 复习核心 CS 基础:数据结构(链表、树、哈希表)和算法(排序、查找、DP)。LeetCode、牛客刷题都推荐。

二、四大题型

1. 算法题

中上难度、带现实场景的变体(例如「找出所有和为 target 的不重复子数组」)。用哈希表 + 双指针 / 前缀和,先讲思路再写带注释的干净代码。

def subarrays_with_sum(nums, target):
    res, prefix = [], 0
    seen = {0: [-1]}                 # 前缀和 -> 左端索引列表
    for r, x in enumerate(nums):
        prefix += x
        for l in seen.get(prefix - target, []):
            res.append(nums[l + 1 : r + 1])
        seen.setdefault(prefix, []).append(r)
    return res

含负数时不能滑窗,前缀和 + 哈希才是正解,整体 O(n)

2. 数据结构设计

典型如 LRU 缓存:要求 get / putO(1)。做法是哈希表 + 双向链表——哈希表存 key→节点定位,双向链表维护使用顺序,最近用的移到头部,淘汰从尾部出。

from collections import OrderedDict

class LRUCache:
    def __init__(self, capacity: int):
        self.cap = capacity
        self.cache = OrderedDict()            # key -> value,维护使用顺序

    def get(self, key: int) -> int:
        if key not in self.cache:
            return -1
        self.cache.move_to_end(key)           # 标记为最近使用
        return self.cache[key]

    def put(self, key: int, value: int) -> None:
        if key in self.cache:
            self.cache.move_to_end(key)
        self.cache[key] = value
        if len(self.cache) > self.cap:
            self.cache.popitem(last=False)    # 淘汰最久未用

面试时要能说清为什么选这两个结构、各操作的复杂度。如果面试官要求手写双向链表(不用 OrderedDict),也得能现场实现节点的插入 / 摘除。

3. 代码优化

给一段慢代码(如嵌套循环 O(n²)),让你提优化方案:

例如「两数之和」从双重循环 O(n²) 优化到哈希表一遍扫 O(n),就是这类题的缩影。

4. 金融场景题

模拟交易撮合引擎:处理订单的创建、撮合、撤单。要展现贴合业务的技术设计,包括可靠性与并发。

import heapq

class MatchingEngine:
    def __init__(self):
        self.buys = []    # 最大堆:存 (-price, ts, qty)
        self.sells = []   # 最小堆:存 (price, ts, qty)

    def submit_buy(self, price, ts, qty):
        while qty > 0 and self.sells and self.sells[0][0] <= price:
            sp, sts, sqty = heapq.heappop(self.sells)
            traded = min(qty, sqty)
            qty -= traded
            if sqty > traded:
                heapq.heappush(self.sells, (sp, sts, sqty - traded))
        if qty > 0:
            heapq.heappush(self.buys, (-price, ts, qty))

三、样题速览

四、总结

GS CoderPad 的四大题型——算法、数据结构设计、代码优化、金融场景——覆盖了从基础功底到工程权衡再到业务建模的完整光谱。准备时别只盯算法,要练讲清结构选型、复杂度和 trade-off 的能力。


FAQ

Q1:Goldman Sachs CoderPad 主要考哪几类题?

四类:算法(带现实场景的中上难度题)、数据结构设计(如 LRU)、代码优化(给慢代码提速)、金融场景(如交易撮合)。

Q2:LRU 为什么用哈希表 + 双向链表?

哈希表负责 O(1) 定位节点,双向链表维护使用顺序、O(1) 移动和淘汰。两者配合才能让 get/put 都 O(1)。Python 里可用 OrderedDict 简化,但要能手写底层。

Q3:撮合引擎题的关键追问是什么?

并发下的原子性(锁或单线程撮合 + 队列)、撤单的快速定位、幂等与持久化。要把可靠性和并发讲到位。

Q4:怎么高效准备 GS CoderPad?

按四大题型分别准备,重点练「先讲思路、说清复杂度与 trade-off」。如需按岗位线做题型预测 + CoderPad 限时 mock + 复盘,可联系 oavoservice 定制陪练计划。


正在准备 Goldman Sachs CoderPad?

GS CoderPad 四大题型各有重点。oavoservice 提供 GS 全流程陪练:算法 / LRU 设计 / 代码优化 / 撮合引擎题限时模拟,CoderPad 实时讲思路演练,复杂度与 trade-off 表达训练,按岗位线做题型预测。教练含前大厂资深工程师,熟悉 GS 判分风格。

立即添加微信 Coding0201获取 GS 真题与陪练

联系方式