Atlassian Interview Questions (19+ Questions)
Last Updated: June 8, 2026 β’ 19 Questions β’ Real Company Interviews
Prepare for your Atlassian interview with our comprehensive collection of 19+ real interview questions and detailed answers. These questions have been curated from actual Atlassian technical interviews across various roles including DevOps Engineer, Data Engineer, QA Engineer, and more.
Table of Contents
- Trace Stalled Script Execution (medium) π
- Fix Multi-Issue ImagePullBackOff in Deployment (medium) π
- Dynamic Matrix from Script (medium) π
- Correlate Microservice Logs Across Services Using Request IDs (hard)
- Diameter of Binary Tree (easy)
- K Closest Points to Origin (medium)
- N-Queens (hard)
- Frequent Price Change Detector (medium) π
- Correlated Subquery for Ranking (easy) π
- Sync Product Catalog from CSV to SQLite Database (medium)
- CSV and Partitions (easy)
- Anonymize User PII Data for a Social Media Platform (medium)
- Group and Concatenate (medium) π
- Course Enrollment Ranker (medium) π
- Single Number (easy)
- Binary Tree Level Order Traversal (medium)
- Word Search II (hard)
- Meeting Rooms II (medium)
- Ride Sharing API Testing (medium) π
Our Atlassian interview questions cover a wide range of technical topics and difficulty levels, from entry-level positions to senior roles. Each question includes detailed explanations and answers to help you understand the concepts and prepare effectively for your interview.
π‘ Pro Tips for Atlassian Interviews
- Practice each question and understand the underlying concepts
- Review Atlassian's specific technologies and methodologies
- Prepare follow-up questions and edge cases
- Practice explaining your solutions clearly and concisely
Interview Questions & Answers
1. Trace Stalled Script Execution
Master strace system call tracing in Linux to diagnose hanging processes and network I/O issues. Learn how to capture and analyze syscalls to identify blocking operations, DNS resolution failures, network timeouts, and socket connection problems. This guide covers tracing application behavior at the kernel level, interpreting syscall sequences, identifying root causes of hangs, and debugging custom scripts without application logs. Essential for troubleshooting production integration failures, network connectivity issues, and mysterious application stalls.
2. Fix Multi-Issue ImagePullBackOff in Deployment
Troubleshoot and fix a Deployment in ImagePullBackOff state by identifying and resolving image pull errors related to registry authentication and image specification.
3. Dynamic Matrix from Script
Learn to generate GitHub Actions matrix values dynamically from script output. Create workflows that determine test configurations at runtime using job outputs and fromJSON for flexible parallel execution.
4. Correlate Microservice Logs Across Services Using Request IDs
Parse JSON log files from multiple microservices, correlate events by request ID, and trace requests across services chronologically using Python.
5. Diameter of Binary Tree
Definition for a binary tree node.
class TreeNode:
def init(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def diameter_of_binary_tree(root: Optional[TreeNode]) -> int:
diameter = 0
def height(node):
nonlocal diameter
if not node:
return 0
left_h = height(node.left)
right_h = height(node.right)
diameter = max(diameter, left_h + right_h)
return 1 + max(left_h, right_h)
height(root)
return diameter
6. K Closest Points to Origin
def k_closest(points: list[list[int]], k: int) -> list[list[int]]:
max_heap = []
for x, y in points:
dist = x**2 + y**2
heapq.heappush(max_heap, (-dist, [x, y]))
if len(max_heap) > k:
heapq.heappop(max_heap)
return [point for dist, point in max_heap]
7. N-Queens
def solve_n_queens(n: int) -> list[list[str]]:
cols = set()
pos_diag = set()
neg_diag = set()
res = []
board = [["."] * n for _ in range(n)]
def dfs(r):
if r == n:
res.append(["".join(row) for row in board])
return
for c in range(n):
if c in cols or (r + c) in pos_diag or (r - c) in neg_diag:
continue
cols.add(c)
pos_diag.add(r + c)
neg_diag.add(r - c)
board[r][c] = "Q"
dfs(r + 1)
cols.remove(c)
pos_diag.remove(r + c)
neg_diag.remove(r - c)
board[r][c] = "."
dfs(0)
return res
8. Frequent Price Change Detector
Identifying Products with Multiple Price Changes Using SQL
Objective
In this interview question, you are provided with two tables: products and price_history. Your task is to write an SQL query that identifies all products that have experienced at least two price changes. A price chan...
π Premium Content
Detailed explanation and solution available for premium members.
9. Correlated Subquery for Ranking
Objective
Construct a SQL query to fetch the order_id, customer_id, and total_amount of the top three highest-value orders from the orders table. If multiple orders share the same total_amount within the top three ranks, include all such orders in the result.
Additional Information...
π Premium Content
Detailed explanation and solution available for premium members.
10. Sync Product Catalog from CSV to SQLite Database
Compare CSV updates against an SQLite database to synchronously insert new products and update existing product prices using Python and SQL transactions.
11. CSV and Partitions
Read an orders CSV file into a Spark DataFrame and determine how many partitions Spark created for the data.
12. Anonymize User PII Data for a Social Media Platform
Practice data masking and string manipulation in Snowflake SQL with this PII anonymization interview question. You extract email domains using substring functions and mask phone numbers to protect user privacy. Covers SPLIT_PART, SUBSTR, CONCAT, and data anonymization techniques in Snowflake. Common in data engineering interviews at companies like Atlassian.
13. Group and Concatenate
Crafting an SQL Query to Retrieve Detailed Order Information with Alphabetized Product Names
Objective
For this SQL interview question, your task is to write a query to retrieve a comprehensive list of all orders. Each order's details should include the unique identifier for the order, th...
π Premium Content
Detailed explanation and solution available for premium members.
14. Course Enrollment Ranker
Interview Question: Write an SQL Query to Retrieve Courses by Enrollment with Ranking
Objective
Write an SQL query that retrieves the names of courses, their enrollment counts, and their ranks based on enrollment, from the provided courses and registrations tables. The courses should be ra...
π Premium Content
Detailed explanation and solution available for premium members.
15. Single Number
def single_number(nums: list[int]) -> int:
result = 0
for n in nums:
result ^= n
return result
16. Binary Tree Level Order Traversal
Definition for a binary tree node.
class TreeNode:
def init(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
from collections import deque
def level_order(root: Optional[TreeNode]) -> list[list[int]]:
if not root:
return []
res = []
queue = deque([root])
while queue:
level_size = len(queue)
current_level = []
for _ in range(level_size):
node = queue.popleft()
current_level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(current_level)
return res
17. Word Search II
class TrieNode:
def init(self):
self.children = {}
self.is_word = False
def find_words(board: list[list[str]], words: list[str]) -> list[str]:
root = TrieNode()
for word in words:
node = root
for char in word:
if char not in node.children:
node.children[char] = TrieNode()
node = node.children[char]
node.is_word = True
res = set()
ROWS, COLS = len(board), len(board[0])
def dfs(r, c, node, word):
if (r < 0 or r == ROWS or c < 0 or c == COLS or
board[r][c] not in node.children):
return
char = board[r][c]
next_node = node.children[char]
word += char
if next_node.is_word:
res.add(word)
next_node.is_word = False
board[r][c] = "#"
dfs(r + 1, c, next_node, word)
dfs(r - 1, c, next_node, word)
dfs(r, c + 1, next_node, word)
dfs(r, c - 1, next_node, word)
board[r][c] = char
if not next_node.children:
del node.children[char]
for r in range(ROWS):
for c in range(COLS):
dfs(r, c, root, "")
return sorted(list(res)) # Sorting for consistent testing validation
18. Meeting Rooms II
def min_meeting_rooms(intervals: list[list[int]]) -> int:
if not intervals:
return 0
start_times = sorted([i[0] for i in intervals])
end_times = sorted([i[1] for i in intervals])
s_ptr = 0
e_ptr = 0
active_rooms = 0
max_rooms = 0
while s_ptr < len(intervals):
if start_times[s_ptr] < end_times[e_ptr]:
active_rooms += 1
s_ptr += 1
else:
active_rooms -= 1
e_ptr += 1
max_rooms = max(max_rooms, active_rooms)
return max_rooms
19. Ride Sharing API Testing
Uber operates in over 10,000 cities worldwide with 130 million active users. QA testing of ride sharing APIs requires comprehensive validation of fare estimation, driver matching, trip tracking, and cancellation workflows to ensure reliable transportation experiences....
π Premium Content
Detailed explanation and solution available for premium members.
Ready to Practice More?
Explore interview questions from other companies or try our hands-on labs to build practical experience.