最近刚刚带学员刷完 Cisco Software Engineer SDE 的 Online Assessment,顺利通过 OA 进入下一轮。Cisco OA 是很多同学的拦路虎,尤其是 Coding 题的边界处理和 MCQ 的计算机网络部分,容易失分。为了帮助大家高效备战,我结合 2024-2026 年 LeetCode Discuss、1Point3Acres、Blind、PrepInsta 等平台以及我们学员的真实反馈,整理出了近两年最高频的 5 道 Coding 真题,并附上完整 Python 代码模板和解题思路。

Cisco OA 整体情况
- 平台:HackerRank(主流)
- 题量:2-3 道 Coding + 大量 MCQ
- 时长:60-90 分钟
- 通过关键:Coding 至少 2 道接近全 AC,MCQ(尤其是计算机网络)正确率要高
Cisco OA 的 Coding 题以 Medium 为主,重点考察边界处理、代码清晰度和时间复杂度。下面是近两年出现频率最高的 5 道真题。
Cisco OA 高频真题详解 & 代码模板
1. Coin Game / Minimum Starting Amount
题目:给定一个整数数组 nums(正负值代表硬币),求初始最少需要多少资金,才能保证任意前缀和都不为负数。
def minStartAmount(nums):
min_balance = 0
current = 0
for num in nums:
current += num
min_balance = min(min_balance, current)
return max(0, -min_balance)
# 测试
print(minStartAmount([1, -2, 3, -4, 5])) # Output: 2
思路:维护前缀和的最小值,答案为 max(0, -min_prefix)。
2. Device Name System / Unique Folder Names
题目:按顺序为文件夹生成唯一名称,重复时在后面加 (k)。
def getUniqueFolderNames(names):
seen = {}
result = []
for name in names:
if name not in seen:
result.append(name)
seen[name] = 1
else:
k = seen[name]
while f"{name}({k})" in seen:
k += 1
new_name = f"{name}({k})"
result.append(new_name)
seen[name] = k + 1
seen[new_name] = 1
return result
# 测试
print(getUniqueFolderNames(["kaido", "kaido", "kaido", "kaido"]))
# Output: ["kaido", "kaido(1)", "kaido(2)", "kaido(3)"]
3. Coloured Zenga / Minimum Moves to Remove Blocks
题目:消除连续相同颜色 ≥3 个木块,求最少操作次数(或是否能全部消除)。
def minimumMoves(blocks):
stack = [] # [(color, count)]
for color in blocks:
if stack and stack[-1][0] == color:
stack[-1][1] += 1
else:
stack.append([color, 1])
while stack and stack[-1][1] >= 3:
stack.pop()
return 0 if not stack else -1 # -1 表示无法全部消除
4. Make It Palindrome
题目:通过最少删除/替换操作使字符串变成回文,返回最少操作次数。
def makePalindrome(s: str) -> int:
left, right = 0, len(s) - 1
operations = 0
while left < right:
if s[left] == s[right]:
left += 1
right -= 1
else:
operations += 1
left += 1 # 可尝试左右两种情况取最小值(进阶版)
return operations
print(makePalindrome("abca")) # Output: 1
5. Apple Grouping / Group Apples
题目:将苹果分组,每组内最大重量 – 最小重量 ≤ diff,求最少分组数。
def minimumGroups(weight, diff):
if not weight:
return 0
weight.sort()
n = len(weight)
groups = 0
i = 0
while i < n:
groups += 1
j = i
while j < n and weight[j] - weight[i] <= diff:
j += 1
i = j
return groups
# 测试
print(minimumGroups([1, 5, 3, 8, 2, 10], 3)) # Output: 3
备战建议
- 重点方向:Array、String、Two Pointers、Greedy、Stack
- 时间分配:第一题 20 分钟解决,留足够时间给第二题和 Follow-up
- 代码要求:命名清晰、边界处理完整、适当注释
- MCQ:计算机网络是重灾区,必须重点复习 TCP/IP、子网划分、OSPF 等
Cisco OA 题型相对固定,提前 3-4 周针对性准备,通过率会大幅提升。
写在最后
这次很高兴能帮助这位同学顺利通过 Cisco OA。如果你也在准备 Cisco、Amazon、Stripe 或其他大厂的 OA,感觉一个人复习比较吃力,或者想针对性地提升 OA 通过率,欢迎来找我。
我是 Programhelp 的学长,专注提供 OA 实战辅助 服务(HackerRank、CodeSignal 等平台),会根据你的实际情况,给你一对一的面试帮助、模拟练习和答题技巧指导。有需要的同学可以直接联系 Programhelp 详谈,我会亲自跟你沟通,制定适合你的 OA 备战方案。
感谢阅读,祝大家早日通过 OA,拿到心仪 Offer!