1 月 25 日参加了 TikTok 的 OA ,整体体验还不错,题目是 CodeSignal 经典四题模式。难度中等偏下,题型比较常规,只要刷过一些 CodeSignal 或常见算法题,基本不会太慌。现在分享一下这次 TikTok OA CodeSignal 的题目类型和解题思路,供之后准备 TikTok OA / 字节跳动 OA 的同学做个参考,希望能对大家的刷题和备考有所帮助。
TikTok OA 面试概览
- 平台:CodeSignal
- 题目数量:4 题
- 题型:模拟 / 数组处理 / 网格放置 / 图遍历
- 整体难度:偏基础
- 时间压力:不算大,思路清楚基本能写完
TikTok OA 真题分享
第一题:分数统计与历史最高分
题目给定一个初始分数 1500,以及一系列分数变动的操作记录。需要在按顺序执行这些操作的过程中,计算最终的分数,同时找出整个过程中出现过的最高分数。
解题思路
这是一道典型的模拟题。使用一个变量记录当前分数,初始为 1500,再用一个变量记录历史最高分。遍历操作记录时,每一步先更新当前分数,再用当前分数更新最大值。遍历结束后返回最终分数和最高分即可。
第二题:按规则将数字分配到两个数组
题目给了两个初始数字 num0 和 num1,分别放入两个不同的数组中。随后会依次给出新的数字 num[i],需要按照规则将其加入其中一个数组。规则是先比较两个数组中大于 num[i] 的元素个数,将数字放入该数量较少的数组;如果数量相同,则放入当前长度更短的数组。最终返回两个数组拼接后的结果。
解题思路
直接按照题目规则进行模拟即可。初始化两个数组后,逐个处理新数字,对两个数组分别统计其中大于当前数字的元素个数,再根据比较结果决定加入哪个数组。由于数据规模不大,直接遍历统计即可,逻辑清晰也不容易出错。
第三题:在网格中按顺序放置图形
给定一个 n×m 的网格,以及五种固定形状的图形(A、B、C、D、E)。要求按照行优先、列优先的顺序依次在网格中放置这些图形,并判断是否能够将所有图形全部放入网格中而不发生重叠
解题思路
这道题本质是二维网格模拟。可以先用一个映射表保存每种图形相对于左上角 (0,0) 所占据的坐标。之后按行优先、列优先遍历网格,对于每个位置尝试作为当前图形的左上角,检查是否越界或与已放置图形冲突。若可以放置,就标记网格并继续放下一个图形;如果整个网格都尝试过仍无法放置当前图形,则直接返回失败。
第四题:链式结构的遍历顺序
给定一条链式结构,本质上是一个无向图,其中每个节点最多只有两个邻居。需要从正确的起点开始,输出遍历完整条链的节点顺序。
解题思路
可以先将图构建成邻接表,并统计每个节点的度数。由于是链结构,起点一定是度数为 1 的节点。从任意一个这样的节点开始遍历即可。遍历过程中记录上一个访问的节点,在当前节点的邻居中跳过前一个节点,剩下的那个就是下一个要访问的节点。不断向前推进,直到所有节点都被访问完。
关于 OA 准备的一点经验分享
如果你在准备 TikTok OA / CodeSignal 或其他大厂笔试时感觉没什么信心,其实很正常。OA 更考验的是对常见题型的熟悉度和实现稳定性,而不是临场发挥。Programhelp 长期提供 OA代写 、面试辅助、VO辅助 ,已经帮助不少同学理清常考套路、提升通过率并顺利进入下一轮。如果你也在准备阶段,欢迎联系我们。