Round 1: Online Coding + MCQs
Interview Date: 29th July, 2019.
Platform : mettl
28 MCQ and 2 coding
MCQ consisted of Data Structures, Algorithms, Code Output of C/C++ snippets (Pointers).
- Find Mean, Median, Mode from an array.
- Rearrange array such that summation of difference between consecutive pairs is minimum, and return that summation.
Round 2: F2F Problem Solving
The interviewer directly moved to the questions part.
I explained DP approach with O(n) time and O(1) space. He was satisfied with it and I coded it on paper.
Initially, I told linear search approach but he told me to do better. After some pen-paper work I realised it can be done with Divide and Conquer approach. So, I told him and he asked me to code the same.
Round 3: F2F Data Structures
This interviewer asked me to introduce myself and also asked how did my last round go. Then he straight away moved to problems.
Initially, seeing this problem I got dumbstrucked, and was not able to think of anything. But after some thinking I told him HashMap based solution. As this was O(n) solution, he asked me to optimise further in space complexity. It took me around 5-10 minutes, to come up with ‘changing the links’ solution. He seemed quite happy with the solution. And asked me to code.
I really suggest to look at this problem as this required very unique and out-of-the box thinking.
This was simple implementation based problem, and he wanted space optimised approach, I explained the same. He didn’t ask me to code it.
Round 4: F2F CS Fundamentals
This was the longest round lasted for 90 mins. I really admire this interviewer’s way of asking questions.
This interviewer was a very cool person. First we did introduction. Then he told me to be very comfortable, he said this will be discussion round, where we will discuss about Computer Science basics, but in detail.
He asked me all the questions in very different manner. Out of all listed below topics, HE explained me what the concept is, and asked me WHY, WHEN and WHERE do we use this. Basically, he wanted to know how deeply I understand basic fundamentals.
- He explained me what interface is and asked me why, when and where do we use it? We discussed on it in detail giving practical examples.
- How would you implement printf() function?
- What is pass by value and pass by reference in Java?
- He explained me public, private, protected. Asked why, when and where do we use it? I explained it by giving practical examples and giving several class definitions.
- We moved to database part. He explained me what Normalisation is, and again asked me why, when and where do we use it. I explained it again giving examples, and he was really happy with it.
- Explain ACID properties. I explained it in detail. When I said that NoSQL databases didn’t have this properties. He asked whether I know about NoSQL, I said yes. Then we did discussion on SQL vs NoSQL.
- What do you understand by unstructured data? Why NoSQL for those kind of data?
- He asked to do trade-off between SQL and NoSQL using practical examples. Why, when and where will you use SQL and not NoSQL and vice versa. I gave him satisfactory answer. He was happy with it.
- He then asked me to time-space complexity analysis on Quick Sort, Merge Sort. Asked me when worst, best and average case arises, asked me to give example.
- What do you understand by balanced BST? Why it is used?
- He then asked can we do better than Binary Search in searching in an array. I gave him several approaches: HashMap, Ternary Search, Binary Search started from left
After long discussions on various topics he asked if I had any questions. I asked him few question regarding work culture at Amazon.
Round 5: Bar Raiser
This was a phone interview, conducted after 3.5 weeks of onsite, and was done on AWS Chime. The interviewer was very experienced person having 20+ years of experience.
He asked me to introduce myself. When I mentioned about my internship, he asked me what kind of project I worked with, and asked you have to code features which you implemented right now. I tried to code it, but as I had no documentation in front of me and no IDE was there, I was not able to do it well.
After that he asked me one coding question. Connect nodes at same level binary tree. I said level order traversal using queue. Asked me to do it recursively. I gave him recursive approach and then he asked me to code it.
In the end we discussed on working at Amazon and leadership principles.
I really suggest, Phone Interviews are different than in person F2F interviews. It takes different set of skill set to crack/do-well in this kind of interviews, which I feel is the reason of my rejection.
Overall it was a good learning experience.