Apple Software Engineer 技術面試 |Apple 三輪技術面試覆盤

最近不少同學都在問 apple 的面試題到底是什麼風格。這段時間 apple 的面經在各個論壇也出現得比較多,很多人私信問真實技術面會問什麼型別的問題。正好最近覆盤了一場比較典型的 apple software engineer 技術面試,題型其實挺有代表性。這篇就把這場三輪技術面試的過程整理出來,給準備 apple 面試的同學做個參考。

Apple Software Engineer 技術面試 |Apple 三輪技術面試覆盤

Timeline

11.28 第一輪技術面
12.12 第二輪 + 第三輪(同一天完成)

整體節奏不算特別快,但後兩輪是背靠背完成的,中間基本沒有緩衝時間。第一輪結束之後隔了一段時間才安排後面的面試,不過第二天連續兩輪強度還是挺大的。

Round 1:Event Log 壓縮儲存系統

第一題給了一個持續接收 event log 的系統。日誌按 timestamp 遞增,每條包含 timestamp 和 eventType。同一個 eventType 可能在短時間內連續出現很多次,如果全部原樣儲存,會浪費大量記憶體。

要求在實時 append 的同時完成壓縮儲存,並支援後續查詢。

語音提示學員:想想連續重複事件,有沒有必要存一萬條?

學員回答用 segment:eventType、startTime、endTime、count。

面試官追問:“查詢某時間區間怎麼辦?”
語音提示:二分查詢。

面試官繼續問:
“如果 timestamp 不遞增呢?插入複雜度是多少?”

Round 2:多版本配置系統

第二題是一個多版本配置系統。系統有多個配置源,每個都是 key-value map。每次更新都會生成新的版本號。現在需要支援在任意歷史版本下查詢某個 key 的最終生效值,並且配置源之間有優先順序覆蓋關係。

語音提示學員:別存完整快照,只存 delta。

學員回答:每次只記錄修改過的 key,查詢沿 version chain 向上查詢。

面試官追問:“version chain 很長怎麼辦?”
語音提示:可以加索引或跳躍查詢。

Round 3:帶 Group 約束的任務排程

給定一組任務,它們之間存在依賴關係形成 DAG。同時每個任務屬於某個 group,同一個 group 內的任務必須嚴格按照提交順序序列執行,不同 group 之間可以並行。

要求輸出一個合法執行順序,並且在合法的前提下儘量讓任務更早開始執行。

語音提示學員:group 順序也可以轉成依賴邊。

學員回答:同 group 相鄰任務加依賴邊,再做拓撲排序。

面試官追問:“這樣建圖會產生環嗎?”

瞭解更多

整場面試下來可以發現,Apple 的題更多考的是抽象能力和建模思路,不是單純刷演算法題。像日誌壓縮、版本化儲存、DAG 任務排程這種題,如果第一次碰到,很容易卡在思路上。如果你也擔心在 Apple 或其他大廠面試中遇到類似情況,不如瞭解一下我們的 VO遠端助攻服務 ,目前已經幫助數百名學員順利拿下 offer,讓面試不再慌亂,思路清晰,成功率大大提升。

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0