← 返回部落格列表 Atlassian Backend 面試複盤:多 gate 流程 + Code Design 貪吃蛇,高頻工程建模題全拆解
Atlassian

Atlassian Backend 面試複盤:多 gate 流程 + Code Design 貪吃蛇,高頻工程建模題全拆解

2026-06-06

Atlassian 的面試流程是典型的 多 gate 設計:每通過一個 gate 才進入下一階段,節奏偏穩,但對綜合能力考察非常全面。其中最有 Atlassian 風格、也最容易讓人措手不及的,是 Code Design Interview——偏 OOD 的 coding,而不是演算法題。本文拆解整個流程和這一輪的高頻題型。

一、Atlassian 面試流程(多 gate)

Gate 內容 時長 特點
Gate 1 Technical screen 簡短 coding + 輕量 system design,驗證基礎,不太卡人
Gate 2 完整技術輪 2h Code Design(1h)+ Data Structure(1h,常規 LeetCode 中等)
Gate 3 System Design 1h 需求拆解、架構、可擴展性、trade-off,senior 權重更高
Gate 4 Soft skill ~1.75h Values Interview(45min)+ Management Interview(1h),偏 BQ

通過所有 gate 後進入 hiring committee review,由 committee 綜合所有面試官回饋給結果。

二、Code Design Interview 的整體特點

這一輪需要在 本地 IDE 完成程式碼實作並全程 share screen。面試官只給題目描述和 function signature,不提供現成程式碼或測試框架,從零開始實作。它更像偏 OOD 的 coding,評估重點集中在:

三、貪吃蛇:最高頻經典題

在所有 code design 題裡,出現頻率最高、幾乎人盡皆知的就是 貪吃蛇。核心功能圍繞三點:

  1. 按鍵轉向:上下左右改變移動方向,要避免非法轉向(如直接從左轉右)。
  2. 自動增長:吃到食物時蛇 size 增長。
  3. 碰撞偵測:蛇頭撞到自己身體時遊戲正確結束。

邊界條件(是否有牆 / 是否穿牆 / 棋盤大小是否固定)通常需要你主動和面試官 confirm。下面是一個清晰可擴展的實作框架:

from collections import deque

class SnakeGame:
    def __init__(self, width, height, food):
        self.w, self.h = width, height
        self.food = deque(food)              # 預設食物位置佇列
        self.snake = deque([(0, 0)])         # 蛇身,head 在右端
        self.body = {(0, 0)}                 # 佔用格集合,O(1) 碰撞偵測
        self.dirs = {"U": (-1, 0), "D": (1, 0), "L": (0, -1), "R": (0, 1)}
        self.opposite = {"U": "D", "D": "U", "L": "R", "R": "L"}
        self.cur = "R"

    def move(self, direction):
        # 非法轉向(直接反向)忽略,沿用當前方向
        if direction != self.opposite[self.cur]:
            self.cur = direction
        hr, hc = self.snake[-1]
        dr, dc = self.dirs[self.cur]
        nr, nc = hr + dr, hc + dc

        if not (0 <= nr < self.h and 0 <= nc < self.w):
            return -1                        # 撞牆,遊戲結束

        ate = self.food and self.food[0] == [nr, nc]
        if ate:
            self.food.popleft()              # 吃到食物,蛇增長(不彈尾)
        else:
            tail = self.snake.popleft()      # 沒吃到,先移除尾部
            self.body.discard(tail)

        if (nr, nc) in self.body:            # 撞到自己身體
            return -1
        self.snake.append((nr, nc))
        self.body.add((nr, nc))
        return len(self.snake) - 1           # 當前得分

設計要點:用 deque 維護蛇身、set 做 O(1) 碰撞偵測;先移尾再判碰撞,避免誤判剛離開的尾格。面試最後通常要 實際運行證明正確性——時間有限,幾乎不可能寫 GUI,最穩妥是在 terminal 裡用字元打印一個 textual UI。

四、除貪吃蛇外的三大高頻 Code Design 題型

表面差異很大,但本質都在考 工程建模能力

1)偏業務建模的設計題

讓你實作一個簡化但邊界清晰的業務系統:任務管理、評論系統、審批流、RBAC 權限。重點不是寫完所有功能,而是 一開始如何拆分 domain object——能否清晰區分 entity / service / repository 職責,會不會把邏輯硬塞進一個大類。面試官常追問 "What if we want to support X later?",考驗 public API 設計是否留了擴展空間。

2)偏狀態機 / 流程驅動的設計題

電梯、會議室預訂、排隊系統、事件驅動工作流。重點看你能否 識別系統中的狀態及其轉換關係:某物件在不同狀態下允許哪些操作、非法轉換如何處理、狀態變化集中管理還是分散。常見坑是用一堆 if-else 控制流程——功能對但設計扣分;能抽象出 狀態 + 事件 + 轉換 才算高級。

3)偏工具 / 函式庫設計的題目

rate limiter、cache、in-memory store、規則引擎。刻意弱化演算法複雜度,把重點放在 API 設計和內部結構:能否把「對外介面」和「內部實作」分離清楚,是否過早暴露實作細節,是否考慮測試 / 可維護性 / 可替換性。這類題最容易寫成「能跑但很難改」的程式碼。

五、備考建議

重點 做法
貪吃蛇 練到能在 terminal 跑通 + 主動 confirm 邊界
業務建模 先拆 domain object,分清 entity/service/repository
狀態機 抽象「狀態 + 事件 + 轉換」,別堆 if-else
函式庫設計 介面與實作分離,考慮測試與可替換性

FAQ

Q1:Atlassian 面試一共幾個 gate?

四個 gate:technical screen、完整技術輪(Code Design + Data Structure)、System Design、Soft Skill(Values + Management)。每通過一個才進下一關,最後由 hiring committee 綜合評估。

Q2:Atlassian 的 Code Design 和普通演算法題有什麼區別?

Code Design 更像偏 OOD 的 coding,在本地 IDE 全程 share screen,從零實作,只給題目和 function signature。評估重點是程式碼結構、抽象、職責劃分和擴展性,而不是演算法最優解。

Q3:貪吃蛇要寫到什麼程度?

要實作按鍵轉向(含非法轉向處理)、吃食物自動增長、撞牆 / 撞自己的碰撞偵測,並主動 confirm 是否有牆、棋盤大小等邊界。最後通常要在 terminal 用字元 textual UI 實際運行證明正確性。

Q4:怎麼高效準備 Atlassian Code Design?

把貪吃蛇練熟,再覆蓋業務建模 / 狀態機 / 函式庫設計三大題型,重點訓練「動手前先拆模型」。如果想要這幾類題的限時陪練、OOD 抽象專項,或需要 VO 輔助 / VO 代面 的即時對接,可以發職缺 JD 先做題型預測再排練習計畫。


正在準備 Atlassian Backend 面試?

Atlassian 考的是工程建模能力 + 清晰抽象 + 可擴展設計,不是演算法 trick。oavoservice 提供 Atlassian 全 gate 陪練:貪吃蛇 / 業務建模 / 狀態機限時模擬、Code Design OOD 專項、System Design 與 Values 故事打磨,也支援 VO 輔助 / VO 代面 的即時對接。教練含前大廠資深工程師,熟悉 Atlassian「從零實作 + 追問擴展」的評分風格。

立即新增微信 Coding0201獲取 Atlassian 真題與陪練

聯絡方式