今天分享这场是来自一位是北美计算机专业硕士在读的同学,平时 LeetCode 刷题大概 200+ 左右,目标岗位是 Databricks Software Engineer。这场测试 70 分钟一共 4 道题,整体难度偏中等,前两题接近 LeetCode easy,基本可以比较快写完,后面两题则是 medium 难度,需要稍微多一点思考。下面把这次 OA 的整体结构和题型整理一下,给后面准备 Databricks SDE 的同学做个参考。

奇偶位置元素和比较
题目描述
给定一个整数数组 numbers,比较偶数位置(0 基索引)上的元素之和与奇数位置上的元素之和:
- 如果偶数位置元素之和更大,返回
"even" - 如果奇数位置元素之和更大,返回
"odd" - 如果两者相等,返回
"equal"
说明
- 这里的位置是0 基索引(即数组第一个元素位置为 0)。
- 示例:
numbers = [1, 2, 3, 4, 5]- 偶数位置(0, 2, 4):
1 + 3 + 5 = 9 - 奇数位置(1, 3):
2 + 4 = 6 - 因为
9 > 6,所以输出"even"
- 偶数位置(0, 2, 4):
numbers = [-1, 4, 3, -2]- 偶数位置(0, 2):
-1 + 3 = 2 - 奇数位置(1, 3):
4 + (-2) = 2 - 因为
2 = 2,所以输出"equal"
- 偶数位置(0, 2):
- 时间复杂度不超过 O(n²) 即可通过(n 为数组长度)。
Unix 命令执行次数统计
题目描述
在 Unix 系统中,执行命令有两种常见方式:
- 直接输入命令名,例如
cp、ls、mv; - 输入
!<index>格式的指令,用于重复执行本次会话开始后第 index 条(1 基索引)命令。
例如,用户依次输入以下命令:
ls → cp → mv → mv → mv → !1 → !3 → !6
!1会重复执行第 1 条命令ls!3会重复执行第 3 条命令mv!6会先执行第 6 条命令!1,进而触发执行ls
给定一个命令序列 commands,其中每个命令只能是 "cp"、"ls"、"mv" 或 "!<index>" 格式。
请计算 cp、ls、mv 三种命令实际被执行的总次数,并返回形如 [cp 次数, ls 次数, mv 次数] 的整数数组。
注意:时间复杂度不超过 O (n³) 即可通过。
最长连续房屋段统计
题目描述
你正在监控一个住宅区的建筑密度。该住宅区可以看作一条数轴,只有当某个位置的至少一个相邻点未被占用时,才能在该点建造房屋。初始时,区域内没有任何房屋。
给定一个整数数组 queries,按顺序表示要建造的新房屋位置。在每栋房屋建成后,你需要找出当前区域内最长的连续房屋段长度。
返回一个整数数组,其中每个元素对应 queries 中每栋房屋建成后的最长连续段长度。
注意:
- 所有
queries中的房屋位置都是唯一的; - 保证不会在左右相邻点都已有房屋的位置建造新房屋。
示例
输入:queries = [2, 1, 3]
输出:[1, 2, 3]
数字串逆序逐位求和
题目描述
给定两个数字字符串 a 和 b,按以下规则计算各位之和并返回结果字符串:
- 从末尾开始,将两个字符串的第
i位数字相加; - 若其中一个字符串的第
i位不存在,则直接取另一个字符串的第i位作为和; - 将所有位的和按顺序拼接成一个新字符串返回。
示例
表格
输入 a |
输入 b |
输出 | 说明 |
|---|---|---|---|
"99" |
"99" |
"1818" |
从后往前:9+9=18,9+9=18 → 拼接为 "1818" |
"11" |
"9" |
"110" |
从后往前:1+9=10,1(第二个字符串无第二位)→ 拼接为 "110" |
一点真实建议
最后带这位同学顺利推进到VO。很多同学其实不是不会做题,而是 OA 环境很容易卡思路:写到一半突然发现 bug、边界条件没处理好,或者时间一紧就开始慌。这种情况在 70 分钟四题的 OA 里特别常见。所以也有不少人会提前找 面试辅助 一起准备,很多时候其实就差一个点拨,比自己卡在那里想半小时要高效得多。