目录
正在加载目录...

Goldman Sachs Engineering OA 最新分享|题型有变动

刚做完 Goldman Sachs Engineering OA ,趁还记得简单记一下。现在结构大概是三块,而且带 proctoring 监考,注意环境。

  • Software Fundamentals:30 分钟,自选语言,数据结构与算法
  • Software Diagnostics:45 分钟,在真实工程环境里修 Bug(Django / Node / Spring 等),只能用 HackerRank 内置 AI Assistant,不能外挂
  • Math:22 分钟,数学选择题
Goldman Sachs Engineering OA 最新分享|题型有变动

第一part:Software Fundamentals(30 分钟)

Goldman Sachs Engineering OA 最新分享|题型有变动

自选语言,数据结构与算法,这场碰到的是统计回文子串个数。

题意

给定字符串,统计有多少个子串是回文。单字符也算。长度 ≤ 2000。

示例:”abcbd” → 6(a、b、c、b、d、bcb);”abdaa” → 6。

思路

回文关于中心对称,枚举每个中心再向两边扩展。分奇数中心(一个字符)和偶数中心(两个字符之间的缝)两种情况,每次扩展成功就计数 +1。时间 O(n²),n=2000 完全能过。

单字符本身就是回文不要漏,两种中心的扩展不要混,这两个细节写清楚就行。

参考代码(Python)

def count_palindromes(s: str) -> int:
    n = len(s)
    count = 0

    def expand(l, r):
        nonlocal count
        while l >= 0 and r < n and s[l] == s[r]:
            count += 1
            l -= 1
            r += 1

    for i in range(n):
        expand(i, i)      # 奇数中心
        expand(i, i + 1)  # 偶数中心

    return count

第二part:Software Diagnostics(45 分钟)

Goldman Sachs Engineering OA 最新分享|题型有变动

这块是这场最有意思的部分——在真实工程环境里修 Bug,只能用 HackerRank 内置 AI Assistant,不能外挂其他工具。

这次的场景

偏 Django 模型:Event 带状态、开始/结束时间等字段,要在现有框架里补校验与状态流转,而不是从零写大段逻辑。

做法

先读对应的 markdown 和架构说明,搞清楚已有的钩子和状态机再动手。这题重点不是堆代码量,是读懂现有框架——在哪里拦截、什么时候抛 ValidationError、和 SoftDelete / 钩子怎么配合。

要补的逻辑大致是这几块:正确展开 args / kwargs,在 __init__ 里记下原始状态;save 之前走模型校验(clean 等);按状态转换表拒绝非法跳转(比如 draft→completed 不合法,draft→published 合法);日期规则(end_date 必须晚于 start_date、新建时 start_date 不能是过去时间)。

最有效的定位方式:看测试用例的名称。invalid transition、end before start、start in past 这些测试名基本就是检查清单,对着测试名补逻辑比通读所有代码快得多。

内置 AI 可以问语法和定位文件,但逻辑判断还得自己想清楚。

参考代码(Django,补关键逻辑)

from django.core.exceptions import ValidationError
from django.utils import timezone

VALID_TRANSITIONS = {
    'draft': ['published'],
    'published': ['archived'],
    'archived': [],
}

class Event(models.Model):
    status = models.CharField(max_length=20, default='draft')
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._original_status = self.status  # 记录原始状态

    def clean(self):
        # 日期校验
        if self.end_date <= self.start_date:
            raise ValidationError("end_date must be after start_date")
        if self._state.adding and self.start_date < timezone.now():
            raise ValidationError("start_date cannot be in the past")

        # 状态流转校验
        if not self._state.adding:
            allowed = VALID_TRANSITIONS.get(self._original_status, [])
            if self.status != self._original_status and self.status not in allowed:
                raise ValidationError(
                    f"Invalid transition: {self._original_status} -> {self.status}"
                )

    def save(self, *args, **kwargs):
        self.clean()
        super().save(*args, **kwargs)
        self._original_status = self.status

核心逻辑就是三块:__init__ 记原始状态、clean 做日期和状态校验、saveclean 再持久化。不同场次的字段名可能不同,按题面的 model 定义对着改就行。

第三块:Math(22 分钟)

选择题,覆盖基础数学和量化常见考点。时间紧,会的先秒,卡住的不要死磕,留时间给后面的题。具体题因场次而异。

FAQ

Goldman Sachs Engineering OA 用什么平台?
HackerRank 平台,全程带 proctoring 监考,需要开摄像头,提前检查好环境和网络。

三块的时间分配是固定的吗?
是的,Software Fundamentals 30 分钟、Software Diagnostics 45 分钟、Math 22 分钟,每块独立计时,不能挪用其他块的时间,节奏要提前规划好。

Diagnostics 那块只能用内置 AI,有什么限制?
只能用 HackerRank 内置的 AI Assistant,不能开其他浏览器标签查资料或用外部工具。内置 AI 可以帮你问语法、定位文件,但逻辑判断和修复思路还得自己想,不能直接让 AI 生成解答。

Software Fundamentals 的算法题难度大概什么水平?
偏 LC Medium,这场是回文子串,O(n²) 中心扩展就能过。GS 的算法题不追求极难,更看重你能不能写出干净正确的实现。

Diagnostics 没接触过 Django 怎么办?
这块考的不是 Django 框架本身有多熟,而是能不能快速读懂现有代码结构、找到需要补的地方。核心是用测试用例名定位断点,测试名基本就是功能清单,看懂测试比通读所有代码有效率。其他场次也出现过 Node.js 和 Spring,框架不同但思路一样。

Math 那块考什么方向?
覆盖基础数学和量化常见考点,包括概率、统计、数列、逻辑推理等。因场次而异,没有固定题库,建议把基础数学和简单概率题过一遍。

OA 通过之后流程是什么?
通过后通常是 recruiter 电话确认背景,然后安排技术面试,Goldman Sachs 工程岗一般是 Superday 形式,多轮集中在同一天打完。

几点体会

这场最大的变化是 Diagnostics 这块——不再是纯算法,而是在现有代码库里修对。逻辑要想清楚再改,改少而准比改多而乱强。

三块的时间分配很重要,每块之间没有缓冲,提前规划好节奏。Math 那块会的先秒,别在一道题上耗太久。

GS 这套三块组合的 OA 出现时间不长,网上面经很少,信息差是真实的。InterviewShow 长期跟进 Goldman Sachs、Optiver、Jane Street 这类公司的 OA 题型更新,算法题库、Diagnostics 常见框架和数学考点都有整理,有在准备的可以去看看。

END