SIG OA 复盘:为什么 90% 的人死在了那道“数学题”上?

245次閱讀

这套 SIG OA 是我最近跟学员一起做的,整体节奏偏快——70min 4道纯算法题,平台是 Codesignal,所以和 TikTok / Visa / Capital One / Robinhood 那套 70min OA 本质一样:都是 Codesignal 题库,靠题库出,不靠公司定制。

简单科普一句:

  • 70min = 4 道 Leetcode 风格算法题(可编可不编 OOD)
  • 90min = 4 道 OOD 题(类设计、接口实现)
    两套本质题库不同,但都属于 Codesignal 的商业题库,不是 SIG 专属。
SIG OA 复盘:为什么 90% 的人死在了那道“数学题”上?

SIG OA 真题回顾

Problem 1: Case Toggling Feature

Description Imagine you are developing a messaging application, and you want to include a feature that allows users to playfully toggle the case of text, making it more fun and engaging. Given a string inputText that includes uppercase and lowercase English letters, spaces, digits, and punctuation marks, your task is to write a function that toggles the case of each alphabetic character in the string (converting uppercase to lowercase, and vice versa), while leaving all other characters the same.

Return the processed string with the case of each alphabetic character toggled.

Example

  • For inputText = "Python 3.9 is SUPER cool!", the output should be solution(inputText) = "pYTHON 3.9 IS super COOL!".

Input/Output

  • [execution time limit] 3 seconds
  • [input] string inputText
  • [output] string

Problem 2: Consonant Substitution Cipher

Description You’re implementing a simple substitution cipher that only affects consonant characters in a memo. This cipher works by shifting every k-th consonant to the following consonant in the alphabet, while leaving vowels and other characters unchanged.

Notes:

  • Only consonant characters are affected: b, c, d, f, g, h, j, k, l, m, n, p, q, r, s, t, v, w, x, y, z.
  • When shifting from z, it wraps around to b.
  • The case of each character must be preserved (uppercase stays uppercase, lowercase stays lowercase).

Example

  • For memo = "Hello World" and k = 2, the output should be solution(memo, k) = "Hemlo XorMd".Explanation: The consonants in the memo are: ‘H’, ‘l’, ‘l’, ‘W’, ‘r’, ‘l’, ‘d’.
    • 1st consonant ‘H’: Unchanged.
    • 2nd consonant ‘l’: Shifts to ‘m’.
    • 3rd consonant ‘l’: Unchanged (counter resets).
    • 4th consonant ‘W’: Shifts to ‘X’.
    • 5th consonant ‘r’: Unchanged.
    • 6th consonant ‘l’: Shifts to ‘m’.
    • 7th consonant ‘d’: Unchanged.

Input/Output

  • [execution time limit] 3 seconds
  • [input] string memo
  • [input] integer k
  • [output] string

Problem 3: Matrix Restoration

Description The given matrix mat contains only one 4 x 4 square. Your task is to find the missing value denoted by ? in it and replace the ? with the correct value. It is guaranteed that the 4 x 4 square contains unique values from the range [1..16].

Example

  • For:
mat = [
  ["1",  "2",  "3",  "4"],
  ["5",  "6",  "?",  "8"],
  ["9",  "10", "11", "12"],
  ["13", "14", "15", "16"]
]

The output should be:

solution(mat) = [
  ["1",  "2",  "3",  "4"],
  ["5",  "6",  "7",  "8"],
  ["9",  "10", "11", "12"],
  ["13", "14", "15", "16"]
]
  • Explanation: The missing number in the sequence 1 through 16 is 7.

Input/Output

  • [execution time limit] 3 seconds
  • [input] array.array.string mat
  • [output] array.array.string

Problem 4: Molecular Bond Stability

Description You are a chemist working in a laboratory that studies molecular compounds. You have two arrays representing the atomic weights of elements in two different compounds: x represents the primary elements and y represents the secondary elements.

Your research has shown that when two compounds have the same “balance factor” (calculated as the difference between primary and secondary atomic weights), they can potentially form stable molecular bonds.

Your task is to analyze these compound arrays and determine how many unique molecular pairings could potentially form stable bonds. A stable bond occurs when the balance factor of one compound position matches the balance factor of another position.

Count the total number of valid molecular pairings (i, j) where i <= j and the balance factors are equal: x[i] - y[j] = x[j] - y[i].

Example

  • For x = [5, 2, 8, 4] and y = [5, 8, 4, 6], the output should be solution(x, y) = 7.Explanation: The condition x[i] - y[j] = x[j] - y[i] can be rewritten as x[i] + y[i] = x[j] + y[j]. Let’s calculate the sum for each index:
    • Index 0: 5 + 5 = 10
    • Index 1: 2 + 8 = 10
    • Index 2: 8 + 4 = 12
    • Index 3: 4 + 6 = 10

    Valid pairs (i, j) where sums are equal and i <= j:

    • Sum 10: (0,0), (0,1), (0,3), (1,1), (1,3), (3,3) -> 6 pairs.
    • Sum 12: (2,2) -> 1 pair.
    • Total = 7.

Input/Output

  • [execution time limit] 3 seconds
  • [input] array.integer x
  • [input] array.integer y
  • [output] integer

总体体验 & Codesignal 科普

SIG 的 OA 其实非常“题库感”——
没有奇怪模拟、没有公司特色难点,就是纯 Codesignal 算法题。
题量 4 题 / 70 分钟,属于必须熟悉题型才能稳过的那种,逻辑不难但时间卡得紧。

另外再强调一次:
Codesignal 平台所有公司(TikTok / Capital One / Visa / SIG / Robinhood …)在 70min 套题里,都是同一套算法题库。

所以准备方法也是共享的:

  • 高频字符串处理
  • 计数类 map
  • 简单数据结构
  • 模拟题
  • 一些基础组合 / 数学题

整体并不偏难,但容易在实现细节上翻车。

如果你最近也在准备 Codesignal 套题(TikTok / SIG / Visa / Capital One…)

想要:

  • 稳过
  • 不翻车
  • 不被 timer 逼崩
  • 不被边界细节坑
  • 或想提前刷“同款题库”

可以随时找我聊。
我们熟得不能再熟,70min 套题已经带过太多次了,你完全不用自己冒险压秒。

我们怎么助攻?

✔ 使用 ToDesk 无痕联机,全程安全稳定

✔ 你在前端专心写,我在语音里提醒关键细节

✔ 卡点会立刻提示方向,防止走错路

✔ 遇到坑点(边界、大小写、计数方式)提前预警

✔ Timer 压力大时帮你稳节奏

✔ Codesignal / HackerRank / Codility 各类题库都非常熟悉

✔ 目标就是:一次写过、零调试、稳稳交卷

能稳,就不要赌。
这就是 Programhelp 一直坚持的理念。

author avatar
Jory Wang Amazon资深软件开发工程师
Amazon 资深工程师,专注 基础设施核心系统研发,在系统可扩展性、可靠性及成本优化方面具备丰富实战经验。 目前聚焦 FAANG SDE 面试辅导,一年内助力 30+ 位候选人成功斩获 L5 / L6 Offer。
正文完