Simple interview asked to design and code a rate limit algorithm followed by a whiteboard session to describe a url shortner given a long url design a serivce to shorten the url. The interviewers were helpful had a great experience.
I applied through an employee referral. I interviewed at Atlassian in Apr 2023
Interview
Referred through a friend into this role. Approached by a recruiter who explained the interview process to me in detail. it's quite helpful, although I can feel that he is reading a paragraph from their internal process. First round was 2 back to back interviews of coding proficiency, 1 hour each with 45 minutes of coding and 15 min of questions. The challenges are not too hard, but they want your code to be expandable. The leetcode sections for Atlassian are not helpful to be honest as they kept changing requirements which is expected for interview at this level. A day after coding interview, recruiter reached back saying I have passed it and went through the feedbacks from previous sessions. Not too far-away from my feeling, however some of the comments are a bit nitpicking in my opinion. Also the recruiter mentioned what to prepare for the systems design interview. Again, quite detailed, precompiled infokit for them it seems. However the system design introduction during this call is not quite same from the real experience I had later. Then I booked the systems design in the following week. The interview have 2 people interviewing me, one is the main interviewer and another is listening / shadowing(?). In the system design they end up with asking (in my opinion) very unimportant details about system, which in turn, wasted the time for dive in details for the actual systems. Eventually it took them another 2 days to come up to the conclusion and rejected me after the system interview. The recruiter replied and promised me to a feedback session. However, he ghosted me after I provided my availabilities. My takeaway is that the interviewer needed to be guided - they expect you to provide improvements by yourself, but sometimes I tried to provision improvements, they don't want me to follow that path (I have been turn down for considering improvements twice during interviews) I don't want to be bitter about the result as this outcome is what I expected anyway. However, I do believe there's room for improvements here, as it's a senior role and the questions should be more focused on what a senior role should do in their day to day job, specifically on the system design part of the interview, which I have wrote in detail below.
Interview questions [1]
Question 1
(Used Python for coding interviews) 1. Coding: design a rate limiter. This part was easy - I had experience with writing ethernet switch controllers in the past so I just wrote a quick token bucket to solve it. I have wrote the testcases before hand with doctest and quickly expanded the system into a rate limiter object that can create/update bucket and bucket size, which is a added-on challenge for the task. I have offered to make it aware of customer but they don't want me to extend it. I have provided my code to the interviewer. Feedback: I can't remember it clearly but the interviewer did pointed out something that I can improve. Maybe Horizontally scalable? Rate limiter is an interest topic and there's a lot of places to improve and they should start a topic to ask for. 2. Coding: count votes. This is a question tagged "Atlassian" on leetcode, but the question is vastly different. So leetcode isn't helping here. The question is to design a system to count votes from ballots, and with maximum 3 candidates per ballot, return the winning candidate by points. First place candidate win 3 points, and last place candidate win 1 point. Question updated: tie breaking strategy. They want to do the tie-breaking so that the first one wins the max point wins. I suggested that in this case the tally need to run at least twice as I need to know the max point first as well as the time-series data, and expanded to multiple methods in the object to deal the tie-breaking strategy. I implemented it, however for some reason the python interpreter refuse to print the correct value even though I have traced the correct result being stored in the array from the debugger. In the end the interviewer, to my surprise, take that as the correct result. Feedback: I was quite anxious due to lack of sleep and anxiety of preparing the interview. On top of that the minor glitch on the printing results prevented me to print the result correctly. I think I was borderline rejected but somehow I got to the next round. 3. System design: building a tagging system This question is quite common in it's kind. I tried to answer it from the perspective of a normal scalable serverless web-application, with APIGW + Lambda + DynamoDB as this was what I am good at and I can talk about scalability, availability and operation excellence perspectives. But instead, the interviewer asked me to instead of providing an API prototype as a language function, they want me to come up with detailed design of a RESTful API. I have wrote all the APIs required in this action, with GET/POST/DELETE/PATCH actions together with url endpoints, payload, url semantics and URL-attributes. That along took more than 15 minutes, and totally they only got 40 minutes to discuss about the rest of the architecture. I did, however, tried to squeeze as much as possible about scalability of APIGW, Lambda, partition key selection and sharding in DynamoDB and discussed the key selections for different tables, like partition / sort / global secondary keys, as well as adaptive partition limits for dynamodb.
I applied online. I interviewed at Atlassian (Melbourne) in Apr 2023
Interview
Phone screening by HR initially and followed by many rounds of interview, coding, system design and a couple more other behavioral n cultural rounds. Practice medium level questions from leetcode
Interview questions [1]
Question 1
Q1: Api Rate Limiter Q2: You will be given a list of file names, the collection the file belongs to and the size of each file. Write a program to find the top N collections by size and the total size of all the files in the system. Follow up - collections can be nested, find top N collections by size.