RejectedSoftware Engineer at Atlassian
- Difficulty
- Process took
- 2-3 Weeks
- Rounds
- 4
- Format
- Remote
- Applied via
- Company Website
How it went
Not gonna lie, this was one of the toughest interview processes I've been through, but also one of the most educational. The interviewers were all really smart and asked thoughtful questions that made me think deeply about the problems. What I learned:
- The importance of thinking about extensibility from the start
- How to handle complex data structure problems with multiple constraints
- System design is not just about architecture, but also about user experience
- Communication is just as important as technical skills
What they would tell you
Not gonna lie, this was one of the toughest interview processes I've been through, but also one of the most educational. The interviewers were all really smart and asked thoughtful questions that made me think deeply about the problems. What I learned:
- The importance of thinking about extensibility from the start
- How to handle complex data structure problems with multiple constraints
- System design is not just about architecture, but also about user experience
- Communication is just as important as technical skills
How to prepare
- LeetCode medium/hard problems, especially dynamic programming
- Study system design fundamentals - load balancing, caching, sharding
- Get comfortable with designing extensible systems and middleware patterns
- Practice explaining your thought process clearly during coding
- Review data structures for time-series data and optimization techniques
- Study Atlassian's products to understand their architecture better
Their background
I'm a full stack developer with 3 years of experience working primarily with Java, Python, and JavaScript. Currently working at a startup where I handle both backend APIs and frontend development. I've been doing a lot of system design lately and really enjoy solving complex problems at scale. I'm passionate about distributed systems and have been preparing for big tech interviews for the past few months. Atlassian was definitely one of my dream companies because of their engineering culture and the products they build, I use Jira and Confluence daily at work! Applied through their careers page and was really excited when I got the call for the interview process.
Round by round
- 1
Karat Screening Round60 min
This was conducted through Karat, which was my first time using their platform. The interviewer was professional and made me feel comfortable. Started with a coding problem that was pretty standard, I'd seen similar ones on LeetCode ("Longest Increasing Subsequence", dynamic programming based) before. Then they threw in some system design multiple choice questions which caught me a bit off guard. The coding part went smoothly, but I had to think twice on a couple of the system design questions.
- 2
Code Design Round60 min
This was probably the most interesting round! They asked me to design a middleware router from scratch. I had to think about the architecture, how requests would flow through different middleware components, and how to make it extensible. The interviewer was really engaged and asked follow-up questions about my design choices. I enjoyed the back-and-forth discussion about trade-offs and different approaches. Questions:
- Design a Middleware Router system
- How would you handle request routing and middleware chaining?
- What data structures would you use for efficient routing?
- How would you make the system extensible for new middleware types?
- Discussion on performance considerations and error handling
- 3
Data Structures Round60 min
Oh man, this round was a rollercoaster! When the interviewer first explained the commodity prices problem, I thought "okay, this doesn't sound too bad" - just track prices and return the max, right? WRONG! 😅 The moment they mentioned out-of-order timestamps and duplicate handling, I knew I was in for a ride. I started with a simple approach using a HashMap and TreeMap combo, but then realized I needed to think about the frequent reads/writes requirement. The trickiest part was when they asked about making getMaxCommodityPrice O(1). I was sitting there for a good minute just staring at my screen thinking "how the hell do I do this?" The interviewer was super patient though and gave me a hint about maintaining a separate max variable. That's when it clicked, I needed to update this variable carefully during upsert operations. I managed to code up a solution that worked, but honestly, I felt like I was stumbling through some parts. The interviewer asked follow-up questions about what happens when we remove the max element and I had to think about keeping a backup max or recalculating. It was challenging but engaging.
- 4
System Design Round120 min
This was it, the final boss round 😬 Two whole hours of system design, and I was both excited and terrified. The interviewer started by explaining the cross-product tagging system. Questions:
- Design a Cross-Product Tagging System for Atlassian products (Jira, Confluence, Bitbucket)
- System should be product-agnostic and extensible
- Key Features to Design:
- Add, remove, and update tags on content
- View all content associated with a specific tag
- Dashboard showing popular tags
- Discussion on database design and API architecture
- Scalability considerations for millions of users
- Consistency requirements across different products
- Caching strategies for popular tags dashboard
What came up
A candidate-reported account, lightly edited. Interview processes change by team and date.