Cisco Online Assessment 整體來說確實不算特別難,我也是剛剛做完,趁著記憶還很新鮮,想把整個過程和自己的真實體驗記錄下來。這篇主要會分享我從拿到 OA 到完成測試的整個經歷,包括遇到的題型、時間分配,以及我當時的一些應對策略,給後面準備的同學一個參考。

題目 1:FizzBuzz
題目描述
當給定一個數字 N 時,對於從 1 到 N(包含 1 和 N)的每個整數 i,每行列印一個值,規則如下:
- 如果 i 是 3 和 5 的倍數,列印 FizzBuzz。
- 如果 i 是 3 的倍數但不是 5 的倍數,列印 Fizz。
- 如果 i 是 5 的倍數但不是 3 的倍數,列印 Buzz。
- 如果 i 既不是 3 的倍數也不是 5 的倍數,列印 i 的值。
編寫一個演算法,按照上述指令列印所需的輸出。
解題思路
拿到這道題時,我的第一反應就是:這是一道非常基礎的程式設計題,主要考察迴圈和條件判斷的運用。
我用 Java 來實現:先讀取輸入的整數 N,然後從 1 迴圈到 N。對於每一個數字 i,我按以下順序判斷:
- 如果 i 同時能被 3 和 5 整除,就列印 “FizzBuzz”;
- 如果只能被 3 整除,就列印 “Fizz”;
- 如果只能被 5 整除,就列印 “Buzz”;
- 否則直接列印數字 i 本身。
整個程式碼結構很簡單,主要就是 for 迴圈加 if-else 判斷。時間複雜度是 O(N),空間複雜度是 O(1)。
我特意用輸入 5 測試了一下,輸出結果完全符合預期。
題目 2:外觀數列
題目描述
編寫一個演算法,以如下方式找出給定數字的下一個序列: 將給定數字視為一個字串(由數字組成)。對於每組連續相同的數字 D(出現 N 次),在輸出字串中追加 N 後面跟著數字 D。
例如: 數字 1211 由一個 1、一個 2 和兩個 1 組成,因此序列中的下一個數字是 111221。
輸入 輸入由一個整數 inputNum 組成,表示給定的數字 N。
輸出 列印一個字串,該字串是將給定數字作為數字字串讀取後形成的下一個序列。
示例 輸入: 225
輸出: 2215
解釋: 給定的數字由兩個 2 和一個 5 組成,因此我們得到 ’22’ 和 ’15’,輸出為 “2215”。
解題思路
我採用的是雙指標的方法來解決:
- 先把輸入數字轉成字串;
- 用兩個指標 i 和 j 從左到右遍歷,i 固定在當前數字的起始位置,j 一直往後移動,直到遇到不同的數字為止;
- 這樣就能統計出當前連續相同數字的個數,然後把「個數 + 數字」拼接到結果中;
- 重複這個過程直到遍歷完整個字串。
題目 3:二叉搜尋樹中兩個節點的距離
題目描述
編寫一個演算法,求二叉搜尋樹(BST)中兩個鍵之間的距離。
輸入
- 第一行輸入是一個整數 tree_size,表示二叉搜尋樹中元素的數量(N)。
- 下一行是 N 個空格分隔的整數,表示二叉搜尋樹中每個節點的值。
- 第三行是一個整數 key_size,表示鍵值的數量(K)。
- 最後一行是 K 個空格分隔的整數,表示需要求距離的鍵值。
輸出 列印一個整數,表示給定兩個鍵值之間的距離。
注意
- K 的值始終為 2,即始終有兩個鍵值。
- 二叉搜尋樹中的節點數量不超過 100。
- 每個節點的值是非零正整數。
- BST 中沒有環。
- BST 中的鍵是唯一的,即沒有兩個節點具有相同的值。
- 兩個鍵值都存在於 BST 中。
示例 輸入: 8 30 20 15 25 24 40 37 45 2 20 40
輸出: 2
解釋:
text
30
/ \
20 40
/ \ /
15 25 37
/ \
24 45
給定兩個鍵值 20 和 40,從 20 → 30 → 40 的路徑長度為 2,因此輸出 2。
解題思路
先找到兩個節點的最近公共祖先(LCA),然後分別計算每個節點到 LCA 的距離,再把兩個距離相加。
利用 BST 的有序特性,尋找 LCA 的過程非常高效:
- 從根節點開始遍歷,
- 如果兩個節點的值都小於當前節點,就往左子樹走;
- 如果兩個節點的值都大於當前節點,就往右子樹走;
- 否則,當前節點就是它們的最近公共祖先。
找到 LCA 之後,再寫一個遞迴函式,分別從兩個節點向上(或向下)走到 LCA,統計經過的邊數。最後把兩段距離加起來就是答案。
Cisco Online Assessment 心得總結
以上就是我這次 Cisco Online Assessment 的完整經歷和題目分享。總的來說,Cisco OA 難度相對適中,但 Networking MCQ 佔比很高,Coding 部分也越來越注重樹和圖的應用。提前刷好高頻題型 + 合理分配時間,是透過的關鍵。
特別感謝 Programhelp的 OA無痕助攻 ,實時思路和提示讓我少走了很多彎路,最終順利透過。如果你也正在準備 Cisco OA,希望這篇面經能幫到你,早日拿到心儀的 Offer!