Company Interview Questions · SaaS & Enterprise Software
Atlassian & Intuit: Machine Learning Engineer
Atlassian & Intuit: Machine Learning Engineer Interview Experiences (2025). Rounds, real reported questions and model answers, compiled from public candidate reports (sources at the end). Practice mode hides every answer: say your answer first, press Show answer, then rate yourself. Use 🔁 Review again to build your revision list and 🎲 Random question for a quick drill.
About this interview
Compiled from a public Atlassian MLE II report (April 2025, employee referral, about 4 weeks) and a public Intuit MLE technical phone-screen summary (project discussion + LeetCode-style coding). The questions are paraphrased, and the model answers are written by EasyLearnSpace.
| Atlassian | Intuit | |
|---|---|---|
| Role | Machine Learning Engineer II | Machine Learning Engineer |
| Rounds | Phase 1 (elimination): ML round = project (30 min) + ML system design (30 min). Phase 2: DSA coding (60 min, runnable code + unit tests) + code design (60 min) + ML system design | Technical phone screen: project discussion + LeetCode-style coding → onsite |
| Reported questions | Design a Confluence article recommender; a stock price fluctuation variant; a cinema scheduling code-design problem | Project deep dive + a coding challenge |
| Note | "The MLE bar is similar to SDE" | Expect craft-style rounds later |
01Rounds at a glance
- Atlassian's code design round values clean object-oriented design, edge cases and tests, not just algorithms.
- ML design is tied to the team's product (Confluence, Jira).
02Questions and model answers
Q1
Design a system that recommends Confluence articles to users.
- Contexts: the home feed ("for you"), "related pages" on a page, and search-adjacent suggestions.
- Signals: the user's space and team membership, recently viewed or edited pages, Jira issues they work on, collaborators, page popularity and freshness, permissions (never recommend pages the user can't see).
- Candidates: co-view graph (item-to-item), content embeddings (title + body), pages from the user's team and spaces, trending pages.
- Ranker: GBM or a two-tower model predicting P(click) and P(dwell longer than 30 s); diversity and freshness re-ranking.
- Cold start: new users get team and space popular pages; new pages get content similarity plus exploration.
- Evaluation: offline recall@k / NDCG on held-out views; online CTR, dwell time and return visits; guardrails on latency and permission leaks (zero tolerance).
Q2
Data structure: track stock prices with updates and corrections; support current, max and min price.
import heapq
class StockPrice:
def __init__(self):
self.p, self.latest = {}, 0
self.maxh, self.minh = [], []
def update(self, t, price):
self.p[t] = price; self.latest = max(self.latest, t)
heapq.heappush(self.maxh, (-price, t)); heapq.heappush(self.minh, (price, t))
def current(self): return self.p[self.latest]
def maximum(self):
while -self.maxh[0][0] != self.p[self.maxh[0][1]]: heapq.heappop(self.maxh) # lazy delete stale
return -self.maxh[0][0]
def minimum(self):
while self.minh[0][0] != self.p[self.minh[0][1]]: heapq.heappop(self.minh)
return self.minh[0][0]
- Two heaps with lazy deletion: O(log n) amortised. Add unit tests for corrections at the same timestamp.
Q3
Code design: can a new movie fit into a day's schedule (open 10:00, last end 23:00, setup and cleanup inside the duration)?
from dataclasses import dataclass
OPEN, CLOSE = 10 * 60, 23 * 60
@dataclass(frozen=True)
class Show: start: int; duration: int # minutes since midnight
def can_schedule(shows: list[Show], duration: int) -> int | None:
"""Return the earliest start minute that fits, or None."""
slots = sorted(shows, key=lambda s: s.start); t = OPEN
for s in slots:
if s.start - t >= duration: return t
t = max(t, s.start + s.duration)
return t if CLOSE - t >= duration else None
assert can_schedule([Show(600, 120), Show(780, 90)], 60) == 720
assert can_schedule([Show(600, 780)], 30) is None
- Discuss: validation (overlapping existing shows), multiple screens (a list per screen), time zones, extensibility (a pluggable rule set), and tests for boundary cases (exactly fits at 23:00).
Q4
Tell me about challenges in a past ML project and how you handled them.
Answer (a structure that works):
- Challenge 1 (data): "Labels were noisy. 15% disagreement found by an audit." Action: relabelling guidelines plus confident learning to flag likely errors. Result: +4 F1.
- Challenge 2 (serving): "p95 latency was 400 ms." Action: distilled the model and cached embeddings. Result: 80 ms.
- Keep each one to challenge → decision → measurable result, and be ready for "why not X?" follow-ups.
Q5
Intuit: how would you build an ML model to categorise financial transactions for small businesses?
- Inputs: merchant name and description text, amount, MCC code, date, the user's past categorisations, the business type.
- Model: text embeddings + tabular features → a classifier; personalisation from user corrections (a per-user override memory or fine-tuning).
- Cold start: global model priors by merchant; active learning that asks users about low-confidence items.
- Metrics: accuracy and macro-F1 by category, correction rate, time saved.
- Trust: explanations ("categorised as Travel because of the merchant 'IndiGo'"), easy undo, privacy controls.
03How to prepare
- Atlassian: runnable DSA with unit tests in 60 minutes, OO code design, product-specific ML design.
- Intuit: project depth, LeetCode medium, fintech ML (categorisation, fraud, forecasting).
Sources
Created by Ajeetkumar