Round 1(Mettl 1 Hr 30 Mins): The assessment consisted of 9 components like software testing, SQL/database, algorithms, Linux, pseudo code, data structures, coding, and networks.
- The coding section had a single question: Count Derangements (Permutation such that no element appears in its original position)
32 students were shortlisted out of 804 students, of which 8 were selected for the system development engineer role.
Round 2(Amazon Chime and Live code 1 Hr 10 mins): I was really nervous when the interview began, but the interviewer was a very nice person he started with his introduction, and then we moved on to mine, I was totally comfortable with this time.
He started discussing one of my projects (A safe file sharing system based on Linux) and asked a few questions where ever he felt like.
Then we moved on to live code, questions asked:
- https://leetcode.com/problems/two-sum/. I solved it using an unordered map, in which I traversed the array two times he asked if can do it in one traversal, I was able to provide an efficient solution then he asked about space and time complexity, at the end he was satisfied by my approach.
- In order traversal of a tree without recursion. I solved it using recursion first, he asked me to explain the concept of recursion and function call stack then he asked me to do it without recursion, I was not able to code it but I explained a two-stack approach to him which again I was not able to finish, he was really nice about this and told me not to worry and moved on to the next question.
- Scenario-based question: One of my projects involved managing a site, so he asked me, how would I handle if my site got huge traffic and I had to manage a lot of data, I told him how I’ll manage the database using indexing and database sharding if database sharding is implemented will the data be at a single server or distributed servers, which I was able to explain to him, and he was satisfied by my answer.
- OS questions: spooling and a few others I can’t recall.
- Networking questions: Explain the OSI model’s all layers with protocols of each layer, what are protocols of the transport layer, explain what is TCP and UDP, explain how the TCP mechanism works.
How would you find network errors in transmission, and what type of errors are there, I told him we could analyze ICMP packets in pcap files in Wireshark , and told him about various errors like zero window, dup ack etc.
Linux: He asked me all the Linux commands I could think of and explain their use, I was able to give him 10-15 commands with their use, he then asked about chmod, read and write permission, how they look and what denotes what in read and write permission structure, I was able to explain everything, and he was satisfied by my answer.
- What are immutable objects, the difference between overriding and overloading, what is operator overloading, the difference between run time and compile-time polymorphism, except immutability I was able to explain everything else with an example?
- He then explained what immutability meant.
- First-round ended he asked if I had any questions for him, to which I asked a few, after a wait of 2 hrs 8 students were selected from 32, and I was one of them.
Round 2 : (Amazon Chime and Live code 50 mins): He started with his introduction and then asked me to give mine, which I did, while I was explaining he stopped me in between and asked a few questions on one of my projects as he was not clear about the practicality of it, I explained it again in a different manner, by the sound of it he was not much satisfied. He then proceeded to live code :
Coding question: Given an array list of the form(“name”,”percentage”,”age”) for example (abc,96,24),(cdb,34,23)……… sort this based on the age of the student.
For this, I was able to provide an o(nlogn) solution using the map.
He asked me what does an auto variable mean, how map sorts its keys, difference between map and unordered map’s working, and write down output for each iteration, then later he asked time complexity and space complexity of the code, I was able to explain everything, and he was satisfied.
- How would you check if a site is reachable?
- What is DNS, explain how it works.
- What happens when I type amazon.com in the URL
- Explain TCP/IP and a 3-way handshake, what is SYN, ACK packets
- How does an API work, explain how a search query works on espncricinfo website
I was able to answer all the questions and explain in a well-structured manner.
Scenario-based questions: How will you rectify a broken site or a site that is not reachable? I told him that we’ll get a status code on the broken site and then I explained to him about different status codes like 1xx,2xx,3xx,4xx,5xx what each of these meant, and how we can possibly know what and which side is causing the error, and based on the deduction rectify it. He was pretty satisfied with my approach.
Let us say your Linux server is running slow how would you deduce what is causing it and how will you rectify it, I told him about monitoring the resources using htop command in Linux and seeing which resource is being used more, since the server is running slow it is safe to assume that the server is running slow due to high CPU usage and based on this we can make some tweaks in the configuration file, he asked what tweaks exactly to which I was not able to answer as I was not sure, he said it’s fine and told me that he’s done with my interview and asked if I had any questions for him.
I asked a few questions and that was it. Next-Day a partial result was declared 3 students were selected, and I was one of them and the only one for the system development profile.
- Always be honest with your interviewer.
- Feel free to ask the interviewer for any hints or suggestions, interviewers at amazon are extremely helpful and nice.
- Try not to get overwhelmed by others’ interview experiences, just give your best and don’t worry about the results.
- Believe in yourself and your abilities even if no one else does.
- Think and speak, ask for extra time, don’t blabber.