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!