上个月刚做完 Twitter 的 coding 轮面试,我是背着现在的工作低调在面。说下真实情况。
我没有先做 online assessment。他们直接 recruiter 初筛,然后 technical phone screen,然后 onsite。我看到有些帖子提 HackerRank OA,但我没遇到。可能看岗位或 seniority,不确定。
Phone screen(45 分钟): 一道 coding 题。旋转有序数组的二分搜索。经典题。我大概 25 分钟写完,剩下时间讲边界情况,follow-up 是怎么处理重复元素。面试官挺 chill,remote,开不开摄像头都行。
Onsite coding(两轮,每轮 45 分钟): 两题我都觉得是 medium-plus。不算 hard,但属于带点 twist 的 medium,需要真的想一想。
第 1 轮:图遍历。求连通分量数量。一开始很简单,但后来加了一个带权边的约束,还问了某个子集的最小生成树。能做,但在压力下不算轻松。
第 2 轮:字符串处理 + sliding window。sliding window 的思路很明显,难点是 window 会 wrap 的边界情况(循环字符串)。我差点漏掉。
两位面试官都要求我全程边想边说。其中一个人直接说:「我更在意你怎么思考,而不是你有没有得到答案。」我感觉他是认真的。我第 2 轮卡了一下,但自己抓到了边界问题并解释了修复方法,算是拉回来了。
难度: 我觉得就是扎实的 leetcode medium 刷题强度。没有深入的动态规划,也没有树上的 DP。图论 + BFS/DFS 基础、sliding window、一些数组操作。如果你能刷完 80-100 道 medium,状态就不错。
语言: Python 或 Java 都可以。我用的是 Python。他们不介意。
一个实用提醒: coding 环境是共享编辑器,没有自动补全。最好在纯文本编辑器或白板环境练习,别只在 IDE 里写。那种空白屏的感觉是真的。