Work Experience: 8 years as Software Developer at one of the Top 4 Big Techs
Position Applied for: SDE-2 at Amazon
Location: Hyderabad, India
Date: 21 May, 2020
Because of Covid-19 situation all the interviews were taken virtually (video conferencing) on Chime.
Round 1: Telephonic Screening
- Scenario based behavioural question on one of their leadership principles.
- Design a data structure to support searching of words in dictionary.
[Answered that trie has to be used and we will keep End Of Word for searching]
Round 2: Problem solving I / Low level design
- Scenario based behavioural question on one of their leadership principles.
- Create low level design for a vending machine including classes, properties etc. Had to write code also.
[Outcome]: I did mess up this round as I was expecting it to be a pure coding round and I had been thinking of making an algorithm to define the process of vending out balance cash etc., which wasn't the interviewer's expectation
Round 3: Problem solving II
- Two Scenario based behavioural questions on two of their leadership principles.
- Design a data structure to support Insert, Delete and GetRandom methods in O(1) time. https://leetcode.com/problems/insert-delete-getrandom-o1/
- Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.
https://leetcode.com/problems/backspace-string-compare/
[Outcome]: Answered correctly
Round 4: System Design I
- 3-4 Scenario based behavioural questions on some of their leadership principles.
- Create system design for Whatsapp, concentrating on key features - Instant messaging, Last Seen Time, Group Messaging.
[Outcome]: I prepared well for this round and whatsapp design was quite fresh in my mind. Explained all the features with block diagrams drawn on a paper and shared over camera on the video call. Panel asked a follow up question on how hashing is being used. I explained the concept of consistent hashing and how we use it in current design to distribute load among multiple servers.
Some pointers which I used to learn -
Online course: https://www.***/courses/***-the-system-design-interview/B8R22v0wqJo
Well explained video:
Round 5: Hiring Manager / System Design II
- Some Scenario based behavioural questions on their leadership principles.
- Create system design for BookMyShow/Ticket master/Online movie ticket booking system.
[Outcome]: Moved to next round. I had practiced this one as well on the same course (link below). He asked some follow up qustions on fault tolerance of the system and any single point of failures that might be there. He was more interested in understanding how we should make sure that user experience is not compromised for popular movies with high booking rate.
Some pointers which I used to learn -
https://www.***/courses/***-the-system-design-interview/YQyq6mBKq4n
Round 6: Bar raiser
- Some Behavioural question on leadership principles. The inteviewer tried to understand what challenging decision I made with limited amount of data. He started asking questions on the architecture of the project in which I had applied and how it made my design successful.
- Problem solving: Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST. Calling next() will return the next smallest number in the BST. https://leetcode.com/problems/binary-search-tree-iterator/
[Outcome]: I had been practicing this question multiple times, since I started preparing for interviews. I explained the answer and wrote the entire code in one attempt. The interviewer asked if I was missing something in the code. I realized that an if-block was missing and added it after he asked me to check the code. He asked a follow up question on the worst case and average case complexity, which I explained well. To my surprise, I got to know that the interviewer has rejected even though I answered every single question. It was highly dissapointing that interviewer didn't explain if he expects more details, if it was required. I did submit the same code on leetcode and it seems to pass with 62/62 test cases with beating 85.80 C# submissions. Seems like I had been unlucky in this round.
[Final outcome]: Received a mail after two days, saying that they are not moving ahead with my candidature.
Some learnings from this experiece:
- Listen to interviewer carefully and try to understand what he is looking for. It is not necessary that every round should have a coding/problem solving question.
- Bar raisers are quite unpredictable. For me, it was quite bad of an experience. So, it's sheer luck.