
ThousandEyes 是一家網路情報公司,通過監控、分析和排除網路性能故障,提供對數位體驗的可見性。 其平臺提供了對互聯網、雲和企業網路中應用程式和服務性能的洞察。 今天 PROGRAMHELP 分享下 ThousandEyes 面經經驗。
行為問題 (BQ):
面試過程中強調了“critical feedback”和“dive deep”。 面試官一再強調,他們期望候選人具備良好的協作能力,而不是在問題出現后獨自行動。 錯誤的敘述邏輯是:遇到問題、發現問題,然後獨自解決而不與團隊溝通。 無論採取何種解決方案,都必須與團隊討論、讓大家知曉並在事後進行總結。 這一點是絕對不能忽視的。
Coding 部分:
產品過濾器設計題
面試官要求設計一個類,用來根據多個條件(如類別、價格以及 Prime 資格)過濾網路產品。
題目中給出的示例是:過濾出類別為“Clothing > Women > Dresses”且價格不超過 20 美元的產品。
關鍵在於設計一個靈活的過濾機制,能根據多個搜索條件篩選數據。 面試官建議在澄清需求時,詢問多個過濾條件的組合邏輯,是“與”(AND)還是“或”(OR),這可以結合實際業務場景來確定。
Coding 題目一:Word Ladder
給定兩個單詞(beginWord 和 endWord)和一個單詞字典,要求返回從 beginWord 到 endWord 的最短轉換序列中單詞的個數(若不存在轉換序列則返回 0)。
雖然這題本身被歸為 Hard,但因其高頻出現,常用 BFS 可以輕鬆過題。
難點在於 follow-up 部分:BFS 在尋找鄰居時容易出現雙重迴圈和重複計算。
面試官提示需預處理,將單詞轉化為若干個 pattern,然後構建一個 pattern map,這樣在 BFS 中依據 pattern 查找鄰居能大幅減少重複計算。 面試官認可這一優化思路,下一題隨即展開。
總結來說,這題的難度在於如何實現面試官所期望的特定優化方法,而很多候選人往往在簡單 BFS 后就止步不前。
Coding 題目二:樹上兩節點距離
getAllAncestors- 基于
getAllAncestors实现findLCA - 最後用 LCA 計算兩節點間的距離
這其實相當於簡化版的 Binary Lifting。 雖然題目本身較為常見,但對解題要求比以往有所提高。
Coding 題目三:鏈表表示數位相加
給定兩個鏈錶,各自表示一個數位,要求對這兩個數字進行加法操作。 題目以口述形式給出,並沒有提供具體的例子,因此在解題過程中需要特別注意澄清問題。
關鍵在於確認數位是以“most significant digit”(高位在前)還是“least significant digit”(低位在前)的順序存儲。 面試官確認為「most significant digit」,因此有兩種常見的處理方式:
- 第一種方法是使用兩個棧,將鏈表中的數字壓入棧中,再依次求和;
- 第二種方法是編寫反轉函數,先反轉鏈表,再按低位相加。
注意在循環結束時,要確保鏈表和進位均處理完畢。
Follow-up: 若允許修改其中一個輸入鏈表,如何實現空間複雜度 O(1) 的演算法? 解法是對較短鏈表進行原地修改,再在必要時補充節點,流程與前面思路類似,但結果不再新建鏈表,而是複用已有的節點。
總體來看,這一輪面試 BQ 部分和 Coding 部分都頗具挑戰。 Coding 題目在難度上相對較高,特別是對某些特定優化方案的要求,需要候選人有一定的題目深度和實戰經驗。 行為問題則側重於團隊協作與溝通,考查候選人在面對問題時的綜合應變能力和總結反思能力
經過我們的強力面試輔助,OA 代寫,候選人通過這些面試題的解析和溝通,面試官不僅瞭解了候選人的程式設計能力,也看到了我在解決問題過程中清晰的思路和有效的溝通技巧。 這些不僅有助於應對 Thousand Eyes 的面試,同時也能提升我們解決實際程式設計問題的能力。 祝大家面試順利!