Domanda di colloquio di Atlassian

(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.