最近剛剛帶學員刷完 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!