最近,我們的一位學員剛結束 TikTok MLE Intern 的視訊面試。面試官是國人,交流很順暢,但整體難度明顯高於預期。學員面試前刷了不少一畝三分地上的 TikTok 帖子,很多人都說 Intern 面不會太難,但這場明顯是「Hard 模式」,被連續深挖了將近一小時。
面試官的風格非常直接:只要是履歷上寫過的技術棧,都會逐條問到。Python、JavaScript、C、Java、CSS 幾乎一個不落,不只是停留在使用層面,而是追到原理、場景和細節,回答稍微泛一點,馬上就 follow up。
整場面試約 60 分鐘,節奏非常緊湊,基本沒有緩衝時間。從履歷專案深挖到技術追問,整體強度更接近正式的 TikTok 技術面,而不是網上很多帖子裡提到的「偏輕鬆 Intern 面」。
一、TikTok MLE Intern VO 概覽
| 維度 | 詳情 |
|---|---|
| 時長 | 約 60 分鐘,單輪高強度 |
| 平台 | 視訊 + 共享編輯器 |
| 結構 | 履歷深挖 + BQ + 八股(前 30 分鐘)+ 程式兩題(後 20 分鐘)+ 反問(10 分鐘) |
| 難度 | 明顯高於「輕鬆 Intern 面」預期,接近正式技術面 |
| 考察重點 | 履歷廣度 + CS 基礎原理 + 乾淨程式 + 表達 |
關鍵認知:雖然是 MLE 崗位,但這場 VO 非常側重基礎和履歷的廣度——大模型知識反而問得少,跨語言的 CS 基礎八股才是主戰場。
二、第一部分:履歷深挖 + BQ + 八股轟炸(前 30 分鐘)
上來先詳細覆盤了履歷專案,然後問了幾個 BQ。接著就開始了漫長的 Trivia(八股)環節。因為履歷上寫得比較雜,面試官真的一個一個語言抓著問。
Python
很久沒用了,第一題問的啥都沒聽懂。問了 Decorator(裝飾器)。(實在記不得了,就說現在主要用 Java,結果他立刻轉火 Java。)
Java
- Why do you think Java is an object-oriented language?(標準答案應該有三點,只答上來兩點。)
- How does garbage collection work in Java?(Java GC 原理。)
- When do we use
finalas a keyword?(final 關鍵字的使用場景。)
C 語言
- Why doesn't C support function overloading?(為什麼 C 不支援函式重載——C 沒有名稱修飾 name mangling,符號表裡同名函式會衝突。)
- How to convert a string to an integer in C?(C 裡怎麼把字串轉整型——
atoi/strtol,或手寫逐字元累加。)
JavaScript
- What is the rest parameter in JavaScript?(JS 裡的剩餘引數
...args是什麼。)
測試相關
- List six types of software testing.(列舉 6 種軟體測試類型,還要舉例說明。)
- Have you used Selenium before?(沒用過,就沒深問。)
- List five ways for catching the element.(列舉 5 種抓取頁面元素的方法,需舉例——id / class / tag / xpath / css selector。)
後面還問了三四個完全沒聽過的工具或技術,看不懂就跳過了。
心得:履歷寫什麼就一定要準備什麼。 面試官會根據你履歷上的技術棧做全方位「拷打」,考察的是廣度大於深度——會跨語言跳來跳去。
三、第二部分:程式考核(後 20 分鐘)
被八股整懵之後開始寫程式碼。萬幸程式部分比較常規,一道 Medium 一道 Easy。
題 1:最長迴文子串(LeetCode Medium 原題)
中心擴展法:枚舉每個中心(含奇偶兩種),向兩側擴展。
class Solution:
def longestPalindrome(self, s: str) -> str:
if not s:
return ""
start, end = 0, 0
for i in range(len(s)):
# 奇數長度迴文,中心是單個字元,如 "aba"
len1 = self.expand(s, i, i)
# 偶數長度迴文,中心在兩字元之間,如 "abba"
len2 = self.expand(s, i, i + 1)
max_len = max(len1, len2)
if max_len > end - start:
start = i - (max_len - 1) // 2
end = i + max_len // 2
return s[start:end + 1]
def expand(self, s: str, left: int, right: int) -> int:
# 只要兩端字元相等且下標合法就繼續擴展
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
# 迴圈結束後 left/right 已越界一步,長度 = right - left - 1
return right - left - 1
複雜度:時間 O(n²),空間 O(1)。面試官可能追問 Manacher O(n) 解法,但中心擴展能講清就夠。
題 2:反轉單鏈結串列(LeetCode Easy 原題)
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
prev = None
curr = head
while curr is not None:
next_temp = curr.next # 1. 暫存下一節點,避免丟參照
curr.next = prev # 2. 反轉方向:當前節點指向前驅
prev = curr # 3. 指標整體前移
curr = next_temp
# 迴圈結束 curr 為 None,prev 即新頭
return prev
複雜度:時間 O(n),空間 O(1)。面試官可能追問遞迴寫法,能兩種都寫最穩。
心得:程式都是很正常的力扣類型題目,不用慌,正常發揮就行。重點是無 bug、邏輯清晰、邊寫邊講。
四、第三部分:反問環節(最後 10 分鐘)
問了什麼時候出結果。面試官回覆:需要把資料和分數提交給上級,然後他們再評估,流程中可能還會回頭看履歷,所以時間不確定,可能比較久。
五、面 TikTok MLE 要注意這幾點
| 要點 | 說明 |
|---|---|
| 履歷寫什麼就準備什麼 | 不要寫沒深入用過的語言或工具,會被逐條追問 |
| 八股問原理不是問會不會寫 | 特別愛問為什麼、怎麼實現、底層怎麼做 |
| 考察廣度大於深度 | 跨語言跳來跳去,要備「多語言基礎知識點」 |
| Coding 基礎但要求乾淨 | TikTok 不用很 trick 的題篩人,但要無 bug、邏輯清晰 |
| 表達重要度極高 | 卡殼、停頓、繞圈都會直接影響判斷 |
雖然申請的是 MLE,但這次問了很多通用 CS 基礎和不同語言特性。準備時除了大模型知識,基礎也千萬不要落下。
FAQ
Q1:MLE Intern 面真的「不難」嗎?
不一定。這場明顯是 Hard 模式——履歷深挖 + 跨語言八股連環追問,強度接近正式技術面。網上「Intern 面輕鬆」的說法別全信,按正式面準備更穩。
Q2:MLE 崗為什麼不怎麼問大模型?
這場面試官把重心放在履歷廣度和 CS 基礎上。MLE Intern 階段更想確認你的工程基礎和學習能力扎不扎實,ML 深度問題反而靠後。兩塊都要準備,別押寶。
Q3:八股怎麼準備最有效?
對著自己履歷上寫的每一個語言/工具,逐條過原理:Java GC / final、C 為什麼不支援重載、JS rest 引數、軟體測試類型。問的是「懂不懂原理」,不是「會不會用」。
Q4:程式兩題難度如何?
一道 Medium(最長迴文子串)+ 一道 Easy(反轉鏈結串列),都是力扣原題。骨架不難,重點是無 bug、能講清複雜度、應對遞迴/Manacher 追問。
Q5:緊張的 60 分鐘單輪,有沒有即時輔助?
有。單輪 60 分鐘高強度、跨語言八股 + 程式連軸轉,節奏極易亂。我們提供真人專家的 VO 輔助 / VO 代面:按你履歷預測八股清單、限時 mock、卡殼時給方向、幫你穩住表達和節奏。
正在準備 TikTok MLE Intern 的虛擬 Onsite?
這條線最容易翻車的不是程式,而是「履歷上每個字都要負責」的八股轟炸 + 單輪 60 分鐘的節奏。如果你想要按履歷客製的八股清單、程式兩題限時陪練,或需要 VO 輔助 / VO 代面 的即時節奏對接,歡迎聯繫交流,發履歷和崗位 JD 先做考點預測,再排練習計劃。
立即新增微信 Coding0201,獲取 TikTok MLE VO 真題與陪練。
聯絡方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy