# High-Score Atlassian Principal Engineer Interview: LRU Cache, Web-Scraping & Org-Tree LCA

# High-Score Atlassian Principal Engineer Interview — What Happened and What to Learn

<img src="https://hcti.io/v1/image/019ce9e9-5262-7870-9dc7-f53c95e772a0" alt="Interview cover" style="max-width:100%;height:auto;" />

A Bugfree user shared a detailed, 6-round remote loop for an Atlassian Principal Engineer role. Below is a concise recap of each round, the technical expectations, recommended approaches, and practical tips you can use while preparing.

## Quick summary
- Format: 6 rounds (phone screen + 5 onsite-style rounds)
- Phone screen: LRU cache design + quick designs (Google Docs conflict handling/WebSockets; file storage + search)
- Deep dives: Values + Leadership Craft
- System design: Web-scraping pipeline with APIs for submitting jobs, checking status, and retrieving results
- Code design: Cinema scheduling — place a new movie into a fixed-day schedule without removing existing shows
- Data structures: Employee org-tree — find the closest common parent (LCA)
- Outcome: Candidate was down-leveled after one weak round and ultimately declined

---

## 1) Phone screen: LRU cache + quick designs
Phone screen tested fundamentals and quick architecture intuition.

LRU cache: expected approach
- Typical solution: hash map + doubly linked list.
  - Hash map provides O(1) access by key.
  - Doubly linked list maintains recency order; head = most recent, tail = least recent.
  - On read/write, move node to head; if over capacity, evict tail.
- Discuss concurrency: coarse-grained lock, segmented locks, or lock-free approaches depending on requirements.
- Edge cases: zero capacity, duplicate keys, TTL vs pure LRU, metrics and eviction policy variants (LFU, size-based).

Quick design prompts (good to mention these points briefly):
- Google Docs conflict handling / real-time edits
  - High-level choices: CRDTs vs Operational Transform (OT).
  - Use WebSockets (or WebRTC) for low-latency updates and presence; fall back to polling for unreliable clients.
  - Versioning, causal ordering, and merge strategies are key. Consider offline edits and reconciliation.
- File storage + search (object store + Elasticsearch)
  - Store blobs in an object store (S3) and index metadata/content in Elasticsearch.
  - Ingestion pipeline: pre-processing, text extraction, indexing, and refresh strategy.
  - Consider consistency (eventual), reindexing, ACLs, and query patterns.

Tip: For phone screens, be concise. Explain the approach, trade-offs, and call out edge cases quickly.

---

## 2) Values + Leadership Craft
These rounds probe culture fit, ownership, and leadership judgment.
- Expect behavioral questions and deep dives into past decisions, trade-offs, and ambiguous situations.
- Use structured storytelling (context, action, result). Emphasize impact, trade-offs, and what you learned.
- For senior roles, highlight stakeholder management, hiring/growth decisions, and system-level thinking.

Tip: Prepare 4–6 strong stories across technical leadership, delivery under risk, program management, and mentoring.

---

## 3) System design: Web-scraping pipeline (POST /jobs, status, results)
Design goal: robust, scalable pipeline that accepts scraping jobs, reports status, and returns results.

Core API surface
- POST /jobs: submit job (URLs, frequency/schedule, parsing rules, credentials, max depth)
- GET /jobs/{id}/status: return job state (queued, running, failed, completed), progress, and logs
- GET /jobs/{id}/results: return structured results (JSON, links to raw HTML stored in object store)

Architecture components
- API layer: validates requests, authenticates users, enqueues jobs
- Job queue: durable work queue (Kafka, RabbitMQ, SQS)
- Scheduler & workers:
  - Workers perform fetches (HTTP client or headless browser like Puppeteer for JS-heavy sites)
  - Respect robots.txt, rate limits, per-host backoff, proxy pools and retry policies
- Parsing/Extraction: configurable scrapers/parsers; consider schema extraction and robustness to layout changes
- Storage:
  - Raw payloads to an object store (S3).
  - Structured results indexed in a DB or search engine if queries are required.
- Monitoring & Observability: metrics (success/failure), per-site health, error classification
- Security & Legal: credential storage encryption, access controls, and compliance with scraping policies

Scaling and reliability
- Horizontal scale by adding workers; use partitioning to avoid double-scraping the same host.
- Deduping URLs and results to avoid wasted work.
- Circuit breaker per-host to avoid hammering fragile servers.

Tip: When designing, ask about SLAs, expected throughput, whether pages are JS-heavy, and how results are consumed.

---

## 4) Code design: Cinema scheduling
Problem sketch: given a fixed-day schedule of shows in one or more theaters, fit a new movie into the day without removing existing shows.

Interpretation and assumptions to clarify
- Are there multiple auditoriums? Are show durations equal? Is there a required buffer (cleaning/turnover) between shows?
- Is the goal to place a single new show (one screening), or multiple showtimes for a new movie?
- Is optimization required (maximize number of shows, maximize utilization, or first-fit)?

Simple approach (if single screening):
- Model existing shows as closed intervals [start, end].
- Compute free intervals by scanning sorted shows and finding gaps between end_i and start_{i+1}.
- If new movie duration + buffer fits into any gap, schedule into earliest gap (first-fit) or highest-utilization gap depending on objective.

Multiple screenings / optimization:
- This becomes an interval-packing / scheduling problem. Options:
  - Greedy heuristics: earliest-fit across auditoriums, or sort gaps by size and fit biggest items first.
  - Dynamic programming or backtracking if the search space is small and exact optimality is required.

Tip: Clarify constraints first. Interviewers want to see clear assumptions, edge-case handling, and time/space complexity reasoning.

---

## 5) Data structures: Employee org-tree — closest common parent (LCA)
Classic problem: given two employees in a tree representing org structure, find their lowest common ancestor (closest common manager).

Common solutions
- Depth + parent pointers
  - Bring both nodes to the same depth (move the deeper one up), then move both up until equal. Time: O(h) where h is tree height.
- Binary lifting (preprocess ancestors up to log N)
  - Preprocess in O(N log N), query in O(log N). Good for many LCA queries.
- Euler tour + RMQ
  - Preprocess in O(N)–O(N log N) and answer queries in O(1) with RMQ; good for static trees and many queries.

Tip: Start with the simple approach (depth+parents) and discuss binary lifting if interviewer cares about multiple queries or complexity at scale.

---

## Outcome and learning
The candidate was down-leveled because one round was weak; they declined the offer.

Key takeaways
- A single weak round can change the overall outcome for senior roles. Prepare across all areas: systems, coding, and leadership.
- Clarify assumptions early. Interviewers evaluate both technical correctness and communication.
- For system design, be explicit about scale, trade-offs, and failure modes. For coding/design rounds, show test cases and edge-case thinking.

Practical preparation checklist
- Practice LRU and common data structure patterns (hashmap + list, sliding windows, union-find).
- Review LCA algorithms and be ready to explain trade-offs between simple and optimized solutions.
- Build a few end-to-end system designs (ingestion pipelines, auth, search index) and practice sketching components and data flow.
- Prepare leadership stories using structured formats and quantify impact.

---

If you want, I can:
- Expand any of the above sections into a full mock whiteboard script you can rehearse.
- Provide sample code for LRU cache or a binary-lifting LCA implementation.

Good luck with your prep — focus on clear assumptions, trade-offs, and calm communication.

