## 第一题:删除元音字母后反转剩余字母
### 题目描述
给定一个字符串,删除其中所有元音字母,然后把剩余字符反转后返回。元音字母包括 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) -> (next_r, next_c)`。然后从 `(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 中常见的项目追问和系统设计,都可以获得更有针对性的准备方案。
[CSVOSUPPORT · 服务详情](https://csvosupport.com)
## 参考来源
– [CodeSignal – General Coding Assessment Rules and Setup](https://support.codesignal.com/hc/en-us/articles/360051960134-General-Coding-Assessment-GCA-Rules-and-Setup)
– [CodeSignal – General Coding Skills Evaluation Framework](https://discover.codesignal.com/rs/659-AFH-023/images/General-Coding-Skills-Evaluation-Framework-CodeSignal-Skills-Evaluation-Lab-Short.pdf)
– [Exponent – TikTok Software Engineer Interview Guide](https://www.tryexponent.com/guides/tiktok-software-engineer-interview)
– [Glassdoor – TikTok Software Engineer Interview Questions](https://www.glassdoor.com/Interview/TikTok-Software-Engineer-Interview-Questions-EI_IE2230881.0%2C6_KO7%2C24.htm)