← 返回部落格列表 Atlassian 技術面複盤:三階段流程,Min Stack / 無限有序陣列二分 + 通知系統設計 + 兩輪 BQ
Atlassian

Atlassian 技術面複盤:三階段流程,Min Stack / 無限有序陣列二分 + 通知系統設計 + 兩輪 BQ

2026-06-06

Atlassian 的面試整體非常清晰,按順序分三個階段:兩輪 coding → 一輪 system design → 兩輪 BQ。節奏比較友好,面試官來自不同產品組、不會很 push,但會一直引導你深入細節。演算法題並不刁鑽,但 edge case 處理和 ownership 是評分關鍵。下面完整複盤三個階段。

一、Atlassian 技術面概覽

階段 輪次 內容
階段一 2 輪 coding Min Stack / 無限有序陣列二分
階段二 1 輪 system design In-app Notification System
階段三 2 輪 BQ collaboration / leadership / ownership
風格 溫和但摳細節 面試官故意給 edge case 追問

二、階段一 · 題 1:O(1) 最小堆疊

實作一個支援 push、pop、min 的堆疊,三個操作均為 O(1) 時間複雜度。

思路轉化:用兩個堆疊——主堆疊保存所有值,輔助堆疊保存「當前最小值」。每次 push 更新輔助堆疊(push 進當前值和已有最小值中較小者),pop 時兩堆同步彈出,min() 直接返回輔助堆疊頂。

class MinStack:
    def __init__(self):
        self.stack = []
        self.mins = []                      # 與 stack 同步,頂為當前最小值

    def push(self, x):
        self.stack.append(x)
        cur_min = x if not self.mins else min(x, self.mins[-1])
        self.mins.append(cur_min)

    def pop(self):
        if not self.stack:
            return None                     # 空堆疊保護
        self.mins.pop()
        return self.stack.pop()

    def min(self):
        return self.mins[-1] if self.mins else None

面試官的 edge case 追問:重複 push 相同最小值(輔助堆疊要同步存,pop 才不會錯)、連續 pop 導致輔助堆疊為空(要做空堆疊保護)。複雜度:三個操作均 O(1),空間 O(n)。

三、階段一 · 題 2:無限長有序陣列二分查找

在一個無限長的 sorted array 中查找目標值的位置,只能透過 get(i) 存取,無法直接獲得陣列長度。

思路轉化:先用 指數增長找上界(i = 1, 2, 4, 8... 直到 get(i) > target),把無限問題縮小到一個有限範圍 [lo, hi],再在該範圍內做標準二分。

def search_infinite(reader, target):
    # 1) 指數找界
    lo, hi = 0, 1
    while reader.get(hi) < target:
        lo = hi
        hi *= 2
    # 2) 範圍內二分
    while lo <= hi:
        mid = (lo + hi) // 2
        val = reader.get(mid)
        if val == target:
            return mid
        elif val < target:
            lo = mid + 1
        else:
            hi = mid - 1
    return -1                               # 不存在

面試官在意的邊界:target 不存在、陣列為空(get(0) 越界)、所有值都小於 target。要講清楚 get 越界返回什麼、指數找界為何是 O(log n)。時間複雜度:O(log n);空間複雜度:O(1)。

四、階段二 · System Design:In-app Notification System

設計一個站內通知系統,支援發送、儲存和展示通知,包括讀 / 未讀狀態、展示順序和 TTL 過期。

時間比較緊,我先從 high-level component 講起:

組件 職責
Producer 業務服務觸發通知
Notification Service 去重 + 調度
Storage MySQL(持久化)+ Redis(快取熱資料)
Frontend Query 支援分頁與篩選

面試官的關注點:資料模型怎麼設計、Redis 快取怎麼做、一個使用者有幾千條通知時怎麼優化 query latency。我補充提到用 Kafka 做非同步 pipeline、支援 batched write 到 DB,整個方案盡量簡單可落地——Atlassian 的 system design 希望你 接地氣,不是只談理論。

五、階段三 · 兩輪 BQ

第一輪:collaboration / communication

第二輪:leadership / ownership

BQ 評分關鍵:Atlassian 兩輪 BQ 很關鍵,是評估 culture fit 和 leadership potential 的核心,每個故事都要能體現 影響力 + 反思

六、備考建議

階段 重點
Coding Min Stack / 二分變種練熟,主動覆蓋 edge case
System Design 講接地氣的落地方案,Redis 快取 + 分頁 + Kafka
BQ 準備 collaboration / mentoring / ownership / 失敗反思故事

整體風格溫和但很摳細節和 ownership:演算法題不刁鑽,system design 要落地,BQ 兩輪很關鍵,每一輪都可能影響最終結果,準備時要注意 balance。


FAQ

Q1:Atlassian 技術面分幾個階段?

三個階段:兩輪 coding、一輪 system design、兩輪 BQ。面試官來自不同產品組、風格溫和,但會持續引導你深入 edge case 和設計細節。

Q2:Atlassian 的 coding 難嗎?

不刁鑽,難在 edge case。比如 Min Stack 會追問重複最小值、連續 pop 空堆疊;無限有序陣列二分會追問 target 不存在、陣列為空。把邊界講清楚比寫出主邏輯更重要。

Q3:Atlassian 的 system design 看重什麼?

接地氣的落地方案,不是只談高層理論。以 notification system 為例,要講清資料模型、Redis 快取、幾千條通知的 query latency 優化,以及 Kafka 非同步 pipeline + batched write。

Q4:Atlassian 的兩輪 BQ 怎麼準備?

圍繞 collaboration / communication 和 leadership / ownership 各準備故事:向非技術 stakeholder 解釋複雜概念、幫 teammate unblock、超出職責範圍主動推進、失敗反思。每個故事都要體現影響力和反思。需要的話,我們的 VO 輔助 / VO 代面 / 面試輔助 可以幫你打磨這兩輪 BQ 故事並做限時演練。


正在準備 Atlassian 技術面?

Atlassian 三階段考的是 edge case 嚴謹度 + 落地系統設計 + ownership 故事。如果你想要 Min Stack / 二分變種的限時陪練、notification system 設計推演,或兩輪 BQ 的故事打磨,歡迎交流:發職缺 JD 先做題型預測,再排練習計畫,也支援 VO 輔助 / VO 代面 / 面試輔助 的即時對接。

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

聯絡方式