第一题:删除元音字母后反转剩余字母
题目描述
给定一个字符串,删除其中所有元音字母,然后把剩余字符反转后返回。元音字母包括 a、e、i、o、u,不区分大小写。
解题思路
这题属于 CodeSignal 前两题常见的基础字符串处理。先把所有元音字母放进一个 set,方便 O(1) 判断。然后从字符串末尾往前扫描,如果当前字符不是元音,就加入结果数组,最后 join 返回。
注意大小写元音都要删除,所以判断时可以统一转成 lowercase。不要用字符串反复拼接,Python 里建议先 append 到 list,最后再拼接,避免额外开销。整体复杂度是 O(n),空间复杂度也是 O(n)。
第二题:字符串辅音替换
题目描述
给定一个字符串和一个整数 k,从左到右扫描字符串。每遇到连续 k 个辅音字母,就把这 k 个辅音替换成它们字母顺序上的“下一个辅音”,并且保留每个原字母的大小写形式。
解题思路
这题核心是连续辅音分组和大小写还原。先定义元音集合,再写一个函数判断某个字符是不是辅音字母。遍历字符串时维护当前连续辅音的起点和长度。遇到辅音就继续累计;当长度达到 k 时,对这一段做统一替换。遇到元音或非字母字符时,连续计数重置。
找“下一个辅音”时,可以从当前字母的下一个字符开始循环往后找,跳过 a/e/i/o/u,超过 z 后回到 a。替换时只用小写字母计算目标字符,最后根据原字符是否大写恢复大小写。
这道题容易错在三个地方:连续 k 个替换之后计数如何重置、大小写是否逐个保留、z 后是否循环。整体是一趟模拟,时间复杂度 O(n),空间复杂度 O(n)。
第三题:网格传送行走计数
题目描述
给定一个 n × m 的网格,从左上角 (0, 0) 出发,目标是走到右下角 (n - 1, m - 1)。每次只能向右移动一格,如果到达当前行末尾,则自动换到下一行开头。网格中可能存在传送门,可以从当前位置传送到指定坐标。遇到障碍物返回 -1,进入循环返回 -2,正常到达终点则返回走过的总步数。普通移动和传送都算一步。
解题思路
这题是典型过程模拟。先用哈希表保存传送门映射,比如 (r, c) -> (nextr, nextc)。然后从 (0, 0) 开始模拟,每到一个格子先判断是否越界、是否是障碍、是否访问过。访问过说明进入循环,直接返回 -2。如果是障碍,返回 -1。
每次处理当前位置时,把它加入 visited,并累加步数。如果当前位置是终点,直接返回当前步数。如果当前位置有传送门,就跳到传送目标,并且传送算一步。否则按规则向右走;如果当前列已经是最后一列,就移动到下一行第 0 列。
这道题最容易错在“什么时候加步数”和“传送后是否继续检查 visited”。建议把每一次到达新格子都视为一次状态更新,统一在循环开头做合法性检查。复杂度最多访问每个格子一次,所以时间复杂度 O(n m),空间复杂度 O(n m)。
第四题:满足条件的最长子数组
题目描述
给定数组 a 和整数上限 k,要求找到最长子数组长度,使得它满足:
pref[r] - 2 * pref[l] <= k
其中 pref 是前缀和数组。
解题思路
这题看起来像前缀和不等式,实际可以按双指针窗口维护。先构造前缀和,右指针不断向右扩展窗口。每次扩展后检查当前条件是否满足,如果不满足,就移动左指针收缩窗口,直到重新合法。每次窗口合法时,用 r - l 更新最大长度。
写的时候要统一前缀和下标含义:如果子数组是 [l, r),那么长度是 r - l,对应条件就是 pref[r] - 2 * pref[l] <= k。这样可以避免 off-by-one 错误。
这题的关键不是公式复杂,而是边界清楚。空数组返回 0;如果没有任何合法窗口,也返回 0。左右指针各移动最多 n 次,所以时间复杂度 O(n),空间复杂度 O(n)。
备考建议
TikTok OA 可以按四组题准备:字符串处理、模拟题、网格行走、前缀和加双指针。CodeSignal 的 General Coding Assessment 常见结构是 70 分钟 4 道 coding questions,所以练习时要控制节奏,不能在前两题花太久。
第一题和第二题通常追求快速写对,重点是大小写、空字符串、特殊字符这些边界。第三题这类模拟题要先写清楚状态转移,再处理 visited、障碍和传送。第四题要熟悉前缀和、滑动窗口和不等式变形,写完后用小样例 dry run 一遍。
刷题时可以把普通字符串题改成 feed/comment/message 场景,把网格题改成页面浏览或任务流转场景,把数组题改成播放量、请求量、延迟窗口这类业务语境。TikTok 面试题面经常带业务包装,但底层还是常见数据结构和算法。
FAQ
TikTok SWE OA 要重点练哪些题型?
重点练字符串、数组、哈希表、排序、双指针、前缀和、网格模拟和简单图搜索。CodeSignal 平台题不一定很难,但很考验限时内写出干净代码和处理边界的能力。
CodeSignal 70 分钟 4 题怎么分配时间?
前两题最好控制在 20 分钟以内,第三题模拟题可以给 20 分钟左右,最后一题留 25 到 30 分钟。不要一开始就追求最优写法,先保证正确,再优化复杂度。
模拟题怎么减少 bug?
先明确状态,再写转移。比如当前位置、下一步位置、是否传送、是否访问过、是否障碍,这些判断顺序要固定。写完后用正常到达、遇到障碍、传送到终点、传送成环这几个 case dry run。
前缀和题最容易错在哪里?
主要错在下标。建议统一用 [l, r) 表示窗口,长度就是 r - l。这样 pref[r] - pref[l] 就是窗口和,不容易写乱。
关于 CSVOSUPPORT
进 TikTok OA 或 VO 之前,可以找 CSVOSUPPORT 做面试备考辅导和模拟面试。CSVOSUPPORT 专注北美 IT 求职支持,覆盖 OA 题型解析、CodeSignal 平台练习、VO 模拟面试、 VO辅助、项目深挖、系统设计准备和行为面试复盘。
针对 TikTok 这类高频考察算法基础和工程表达的公司,CSVOSUPPORT 会帮助学员把常见题型拆成可复用模板,并结合真实业务语境训练解题表达。无论是字符串、模拟、图搜索、前缀和,还是 VO 中常见的项目追问和系统设计,都可以获得更有针对性的准备方案。