最近刚整理了一场 Salesforce 的 OA,题目不算偏,但挺考基础稳定性的,简单记录下两道题的思路,给后面要做 Salesforce OA 的同学一个参考。这场 Salesforce OA 的题目设置整体偏基础,但非常典型。不是靠偏门技巧取胜,而是看你对常见数据结构和算法模型是否理解到位、实现是否稳定。
从我们 ProgramHelp 带过的情况来看,这类 OA 最大的风险不是“不会”,而是在细节上丢分。
Salesforce OA 整体流程与题型概览
从最近几批 Salesforce OA 的反馈来看,整体形式相对稳定,属于典型的大厂 Online Assessment 风格,主要考察候选人的基础编码能力和算法熟练度。
OA 通常通过第三方平台完成,题目数量以 2 道为主,个别批次可能出现 3 道题。整体时长一般在 60–90 分钟区间,对时间管理有一定要求,但不属于极限压缩型考试。
题型方面,Salesforce OA 以经典数据结构和算法题为主,很少出现特别偏门或需要复杂数学推导的内容,常见考察方向包括:
- 链表、数组、字符串等基础数据结构
- HashSet / HashMap 的合理使用
- 动态规划基础模型(如 LCS、子序列问题)
- 简单的边界条件与复杂度分析能力
语言支持相对友好,主流语言如 Java、Python、C++ 都可以使用。整体编码环境偏向“工程化实现”,比起追求算法难度,更看重代码的可读性、稳定性以及对边界情况的处理是否到位。
Salesforce OA 的筛选逻辑并不是用超难题卡人,而是通过这些高频母题,快速判断候选人是否具备扎实的基础和可靠的代码习惯。这也是为什么看起来不难,但实际通过率并不低估的原因。
T1:单链表去重(保留首次出现)

题目大意是:
给一个单链表,只保留每个值第一次出现的节点,后面所有重复值的节点都删掉,最后返回链表头。
这是非常典型的链表题,Salesforce 这种 OA 很爱考。
整体思路就是 HashSet + 指针遍历:
- 用一个 HashSet 记录已经出现过的值
- 用 curr 指针从头遍历链表
- 用 prev 指针指向当前已经保留下来的最后一个节点
遍历时分两种情况:
- 如果 curr.val 没出现过
- 加入 HashSet
- prev 移到 curr
- 如果 curr.val 已经在 HashSet 里
- 说明是重复节点
- 用 prev.next = curr.next 把当前节点删掉
注意点主要在指针更新上,尤其是删除节点的时候 prev 不要乱动,不然容易断链。
T2:最长公共子序列(LCS)

第二题是给两个字符串,求最长公共子序列的长度。
这是标准 DP 模板题,没什么花活,OA 里就是看你会不会写对。
常见解法是 n * m 的动态规划:
- dp[i][j] 表示
- x 的前 i 个字符
- y 的前 j 个字符
- 能得到的最长公共子序列长度
转移逻辑:
- 如果 x[i-1] == y[j-1]
- dp[i][j] = dp[i-1][j-1] + 1
- 否则
- dp[i][j] = max(dp[i-1][j], dp[i][j-1])
最后答案就是 dp[n][m]。
一些个人感受
整体来说 Salesforce OA 的风格就是:
- 不追求难题
- 但非常容易在细节上卡人
- 链表指针、DP 下标写错一次就直接挂
这两题如果平时刷过 LeetCode,其实都见过原型,但 OA 环境下时间紧,还是建议提前把这些基础母题写熟。
希望对准备 Salesforce OA 的同学有点帮助。
备战Salesforce OA怕栽在细节上?
ProgramHelp 帮你精准避坑、稳拿高分!要知道Salesforce OA不考偏题难题,却极度考验基础稳定性,链表指针混乱、DP下标出错都可能直接挂掉。我们结合大量真实辅导案例,深度拆解其高频考点,针对单链表去重、最长公共子序列这类典型题型,提供清晰解题思路与细节把控技巧,帮你吃透HashSet遍历、动态规划等核心方法,规避断链、下标混淆等常见失分点。无论你是担心OA时间紧没把握,还是想提前吃透基础母题稳心态,ProgramHelp都能为你提供针对性备考指导。更有OA代写、实时面试助攻、全套求职护航等服务,从备考到拿Offer全程助力,让你少走弯路,轻松攻克Salesforce求职第一关,冲刺心仪大厂!