Atlassian Interview Experience
This post is to share my interview experience with Atlassian for a Senior Software Engineer position in Bangalore(May 2019). I reached out to a recruiter on LinkedIn, and he responded around a week later and initiated the interview process.
Round 1 - Java Coding (Pair Programming)
By the time I was interviewing, all of my interviewers were based out of Sydney, and the interviews happened early morning IST over a video call.
The first round was a pair programming round where I was given the source code of a mini-application, and asked to implement changes(a couple of bug fixes and a small feature) on top of it. The documentation of the codebase and tasks were listed in a PDF file, and I was expected to read through it and start implementing. The interviewer was extremely friendly, answered questions I had on the tasks and genuinely wanted to help me solve the problem. As he himself mentioned, the objective was not to finish all the tasks, but to understand how I solve problems and how I work in a collaborative team setting.
The tasks weren’t hard but it took me a bit of time to get used to the classes in the codebase - Eventually, I completed 2.5 out of 3 tasks. The following was the feedback I got from the recruiter later:
- I did not use the EMPTY_SET method while fixing one the bugs
- I did not answer his question on multi-threading properly (After I completed on of the tasks, he asked how the could would change if multiple threads are trying to write to invoke the method I added)
- I wasn’t as comfortable with the IDE, as I should’ve been (I did not know the keyboard shortcuts for a couple of trivial actions, since I had switched to Ubuntu recently, and ended up using the mouse)
The feedback was spot-on, to be honest. I had never done this type of interview before - The feedback gave an idea about how the candidate is evaluated during a pair programming interview and areas I should improve upon.
Round 2 - Technical Discussion
The 2nd round was a day after the first one, at 7AM in the morning. This round focused on specific projects , technologies and challenges I have worked on so far in my career. The following were some of the questions asked:
What is garbage collection?
What are the types of GC available in java?
How does a hash map, linked hash map work?
How to monitor APIs (what tools to use, and what metrics to track)?
How do you deploy applications to production, and how do you monitor them?
You observe that memory consumption of an app is increasing gradually - how will you go about debugging it?
If you have the authority, how do you improve Java? What would you change about Java?
Is there something else you would like to show off?
Once I pointed out that they did not anything about multi-threading, they asked a question regarding synchronized
Is it possible for 2 synchronized methods of the same object(class) to run concurrently in 2 different threads?
This is similar to the Stackoverflow post.
They also asked a follow-up question on
Whether it's possible for multiple synchronized methods in the same object
run concurrently from the same thread? - I could find a similar
discussion on Stackoverflow here.
These questions took about an hour and we moved on to the coding portion of the interview which focused on evaluating
the candidate’s object-oriented programming and refactoring skills. I was given some Java code(let’s call it the
Client class) that imports and uses a third-party
ConnectionPool class (which I cannot modify). The question/exercise was to add some custom behaviour to the
ConnectionPool class - I chose to do it
by extending the
ConnectionPool, overriding inherited methods to achieve the expected behaviour and modifying
Client class to use the new child class (instead of the third party
The interviewers were pretty chill (They were Aussies, how else could they be! 😁), and it felt more like a conversation rather than an interview.
Round-3 - Atlassian Values and Management Interviews
After the 2nd round, the recruiter shared some feedback and scheduled the final round with a couple of Engineering leads. This round focused on how I work on a daily basis, how I try to address problems/challenges at the workplace , and assessing the culture fit in general. The following were some of the questions asked:
What was your team structure?
How was your typical interaction with your product manager?
Have there been cases where you've said it's not possible to implement a requirement? Give an example what were the
reasons, how was the interaction, what was the solution/suggestions you provided?
Have you ever suggested additional features to product manager? Give an example
A time when you had to choose between multiple approaches, how did you arrive at a decision, how did you convice
Conversations you had with a junior member who hasn't been performing great? - How was the conversation? How did he
take it? Did he do what you suggested? Did it solve the problem?
What are some ways you mentor your junior team members? - Give some specific incidents
Sprint process in the team, what changes would you make to improve it?
A time when a deliverable got delayed - 1. not because of your fault (eg. requirements changing) 2. because of your
fault - How did you handle it? How did you communicate this to impacted teams? What did you do to ensure it doesn't
A time when you had to convince your team that your approach was correct - what data points did you use to convince
A time when you were convinced by another team mate that their approach was correct - What made you change your mind?
What is your favourite value of atlassian? (I had read through the values described on the Atlassian
values page, and talked about for a minute or so)
I read online that this is the toughest of all of the rounds, and after going through it, I can say it’s true 😄. Part of the reason is that I hadn’t gone through an interview like this before, and I could not provide the right level of detail for most of the questions asked (I was either providing some unnecessary detail or not providing an accurate/relevant example). I later came across the STAR method which would’ve helped in tackling these questions better.
I got an automated email in a couple of days that Atlassian will not be moving forward with my process. I was a bit surprised, since I thought I did ok in the final round, but obviously, the interviewers felt otherwise 😄. I tried to reach out to the recruiter to get some feedback but he didn’t respond. Overall, I loved the interview process and helped me introspect and improve as a developer - This was very different from all other interviews I had in Bangalore since they focused less on Data-strucutures/Algorithms and more on how I approach/solve problems as a developer on a daily basis.
It felt like one can clear this interview if he/she has been working on good projects, solving problems everyday at work, and following best practices as a developer. (Needless to practice for months on Leetcode and HackerRank 😁). On the other hand, no amount of preparation would make a difference, if the candidate hasn’t been doing any of the above.