- Published on
Journey to a FAANG Company - Amazon | SDE2 (L5) | Bangalore | Oct 2022 - Accepted
- Author
- Shared Anonymously
Amazon | SDE2 (L5) | Bangalore | Oct 2022
So it's been a long awaited post for me. Before I proceed further, I just want to clarify few things :
- This would be just an overview of the interview process and experience.
- Could not share confidential info like - exact questions, salary, etc.
- This would be a bit lengthy, as I would try to put things that I have gone through for the last 1 year while preparing. You can directly move to point 4, if you want to get the summary of the interview process.
- This is an interview experience for a L5 role which requires an experience of at least 2-3 years and the process has few aspects of that as well. So few of the parts are not required for the freshers. I will mention the same as we move further.
I can assure you, you will learn many things and this would be a very helpful article for you to prepare for your up-coming interviews. So please bear with me.
1. Little bit about my background:
I have completed my graduation from NIT, Rourkela in Electrical Engineering in 2015. After that got placed in SAP labs Bangalore in 2015 from college placement and joined SAP Labs in June 2015 as Associate Developer. I worked there for 1 year 8 months. Then I decided to join Phoenix Robotix Pvt. Ltd. ( now known as Datoms ) in March 2017. It's been 5 years I have worked at Datoms as a System Architect, Head of Engineering & Solution Architect roles. It’s around Feb/March 2022, when I decided to move ahead & looked for a job change. In total I have 7 years of experience in software development.
2. Pre-Interview Scenario:
So once I have decided to go ahead, at the beginning it was very much confusing for me to proceed with company hiring processes - which company to apply for, which topic to cover, where from I ll do the preparations, etc. So I Just started watching youtube tutorials on DSA from random video channels and mean while started applying for open job positions in linkedIn. Specifically decided to target for FAANG companies and few other large strart up - like Uber, Swigy etc. There were many open positions and I just started applying to few of them which matched my profile with in 2-3 days and continued watching videos, this is around Feb last week. I was a bit afraid that what if I would not get a call from any of these companies where I had applied and my thoughts become reality at that moment.
It's been two weeks since I had applied but I did not receive any positive reply from any of the companies. It was a very low time for me. For the first 2 weeks I was checking the mail on a daily basis for the reply but after that gradually it just faded away with less time checking out mail, also my preparation went down. Last week of March, I just checked my mail and found that there was a reply on one of the positions I applied for and it was from Amazon. But then with in few mins my charming face turn into glum and quiet. The mail was received 2 days back, the interviewer asked me repeated times about my CV and final confirmation on proceeding with interview. The Interviewer had also called me over the phone but unfortunately I didn't receive it. It was a very disappointing moment as well as an eye opening momnt for me. It was for the position that I have applied before a month back. I have taken it in a positive manner and got some hope back then. Till this time, I was pretty much clear about what to prepare for after discussing with one of senior and friends who worked at some great companies. Got some resources as well. After this incident, taken two decisions - every day check the mail in the morning and second to keep on applying for open positions on daily basis.
I also started applying at open positions directly in the companies portal. This helped me as well. I got a call from Amazon again with in a week. They sent me a link for the online test. Online test was very simple one, I have cleared that one. This was the primary screening round. Then the interviewer scheduled 4 interview rounds but the time was as per US time, as the interviewer was also from US, I am not sure about which location they have considered me for. Mostly it was for a US position. I asked the if we can change the interview time as I was in a different time zone. Then she considered this and told me that one of the Indian interviewers will contact me regarding the same. Then the new recruiter called me and scheduled the four rounds of interview again. First two DSA round and one high level and one low level round . I got 3 weeks time to prepare for the interview. Continued watching youtube videos on DSA, yes you heard right !!! I just keep on watching videos and solution and not doing any practice, not a single code. At that point I was confident on writing code but not on the algorithms. So I followed this approach. The day of the interview, it was back to back with a gap of 1 hr between the first two coding rounds. Fortunately I was able to give an approach and algorithm for the problem that I got but unfortunately I was not able to write any code in both of the rounds. The questions were of medium level code in leetcode. But it's again learning in a harsh way - I need to practise a lot of coding in the coming days. The interviewer called me and informed me that I could not able to clear first two DSA round and due to which she need to cancel remaining rounds.
3. Rigorous Practice - harder and smarter way
It's around the beginning of May 2022. Now the path is completely clear to me. I Practised a lot of code. Gradually keep on learning system design and low level design concepts - I will go back to this at the end. So at this stage I need to have some strategy to start with, as leet code has thousands of questions and with less time I want to achieve as much as I can. Meanwhile I came across the leet code study plan . It is having topic wise and related questions which has mix up of easy & medium level. It was kind of good way I figured out at that stage as I want to learn more on topic wise. So I started 3-4 topic at a time. I used to get 2-3 questions on each topic for next couple of months. Keep on practising 5-10 questions on a daily basis. Meanwhile I got a reply from Google as well and interview scheduled for the same. I have got 1 month time to be ready for interview. Unfortunately I fail to crack Google. Around August I got a call from another team from Amazon as well but was not able to crack that as the screening was on low level design and I was not ready yet with low level design principles. Then around August I got a call from Uber as well. Back then I was very much fascinated to Join Uber, after having a discussion with one of my friends who is working at Uber. So continued my practice.
This time I started learning system design and low level design as well and after four months of DSA practice had a good grasp in DSA as well. Once I figure out the solution it hardly takes 10-15 min to implement a medium level problem at this stage. So I gradually shifted my focus more towards system design and low level design. For system design I got two good reference and short note type documents from my friends and net. Learnt the basic and advance concept from it, also gone through many tutorial on youtube on system design. At the beginning it seemed a bit difficult to understand as I was working in a startup where we are not doing any development related scale. Here is where I have very little practical experience on the designing of High level scalable system, so repeatedly I had gone through the system design examples after going through 4-5 times throughout the completed document. I had gained good confidence on this as well. After that, I went through the low level design concepts. I was usually used to low level design in my current job. Also I had gone through most of the low level concepts before. So I just needed to revise those concepts again and I had achieved that quite fast. I was now interview-ready for Uber. Meanwhile, a call from Amazon for the third time, but just started going through the initial process but more focused on Uber which was about to happen in the first week of Sept 2022. Completed Uber interview - 2 rounds of DSA, one system design round and one low level design round. The interviews went really well except the last low level round, where I wasn't able to confidently answer a few of the behavioural questions. After this Uber interview, I was about go for amazon interview. I learnt many things by going through the Uber interview, to be specific - how I can deliver the answer to behavioural questions.
The final call for Amazon!!! I got the screening round, I got a question on that which is similar to the already solved question on leet code before. So I was comfortable enough to solve that and also able to give an approach to the second follow up question. Cleared the round, and other 5 rounds of interview scheduled - 2 DSA rounds, one high level design, one on low level design and one on behavioural questions only.
4. Details on the interview rounds :
4.1 DSA coding rounds :
At Amazon interview for DSA, you can expect to start the round with a sort intro. Then 1 DSA problem will be assigned. Interviewer asked me to provide the approach first. While starting with to solve it, ensure that you have correctly understood the problem. Clarify your doubts if any. Think about any possible unclarified things like constraints of your inputs, output format, what are the exact things you need to provide as output to your problem. Also tell your assumptions if any. After spending 2-3min on understanding the question and cross questioning to the interviewer is a plus point - so always spend a few min on this. It's good to start with brute-force or the most common/obvious solution without any optimisations. Figure-out the challenges of this approach and how that you can overcome that using advanced and more optimised approach step by step. This way you can simplify and redefine the problem in a better fashion. Provide your best solution & discuss the same with the interviewer. Interviewer may ask you follow up questions if you have not considered any of the aspects of the problem. Discuss the space time complexity of your proposed solution while discussing the approach. Once you and your interviewer agree on an approach, you will be asked to write a function to implement your approach.
While writing your code keep it neat and clean, give proper naming to each of the variable. You should avoid using variables like counter i, j , k, etc. Use iterator a proper name. These small things matter a lot. Your interviewer also look forward to your approach while writing code. I would prefer to go loud while writing the code as well - don't just write code in silence. It's very important that the interviewer understands your thought process better and helps to collect more data points against your answer. It's ok, if you think in the wrong direction or say something wrong but it's very important to be loud. If you are thinking in the wrong direction then any way it will be reflected in your code if you don't go vocal. But if you go vocal your interviewer may guide you and bring you to the right path immediately, which saves a lot of time. After you finish your code before confirming it to your interviewer that you are done - you must do a dry run with some input to check if the code is working fine and nothing is missed out. At the same time think of corner cases and boundary conditions if any and test your code for that as well. Be vocal all the time. It's your job to showcase your best practices to the interviewer. Interviewer may not ask you to test/dry run or check for corner cases. By going vocal on all these you can showcase your best practices on writing code. And even if you left out some corner cases, the interviewer may acknowledge that - at least you have given some thought about it. Once done with these, just review one more time to see if any of the smaller sections can be written in a better way. After a complete review, ask the interviewer to cheek. Interviewer may come up with a few other test cases and a few parts of your code may bring follow up questions. He might give you further hint and ask you to optimise it further. Once the first question is done, generally they put a second question. In the second part they only ask for the approach and challenges associated with it. You just need to provide an approach for the second one and no need to write code. Meanwhile they may ask you 1-2 behavioural questions as well, we will get back to this later.
So the overall DSA round is of 45 to 60 min. Assuming 45min, you will spend 5 min on introductions, 5 to 10 min on behavioural questions. So for coding you will be getting 30 min only. It's very important that you complete the approach discussion with the interviewer within 10-15 min, so that you will be left with another 15-20 min to write the code and verification of the same. If you are struggling with any correct approach, ask for hint and take help from interviewer. Remember 60-70% weightage is on your approach then actually solving the problem. So don't hesitate to ask for help. Keep these timing in mind and practise medium level code with a time restriction of 30min. If you are unable to come up with the approach in the first 10-15 min then simply go check the approach discussed in the discussion section of the problem on leet code. Leet code contest is a good platform to test the same in a time constrained way.
Things to remember for DSA round :
- Discuss the problem before deep diving into it.
- Start with a brute force solution without thinking much on optimisation.
- Be vocal while writing code and verifying your code - keep telling whatever you are thinking.
- Must dry run your code and effort spent on thinking about corner cases.
- If asked with behavioural questions, then keep it short and direct - to save more time for coding.
Things to do for DSA preparation:
- Complete all the topic wise sections in the study plan section of the leet code.
- Practice questions in a time constrained manner, no point of spending hours in a single question.
- Easy and medium level questions are sufficient enough to crack DSA rounds.
- Once you complete the study plan you can refer to the tutorial by Fraz on a set of 250 questions. One thing I would like to suggest is to remove the topic header in the excel sheet, so that when you attempt a question from the sheet you should not be aware of which topic it is from and that you should identify yourself. Also keep nothing down things you learnt from each of the questions - this will help you to revise concepts later. Repeat good questions/ questions that you find difficult to solve and keep repeating until you are convinced.
- Few of the tutorials that I followed :
- DP, Binary Search & Stack : https://www.youtube.com/@TheAdityaVerma
- Graph, Tree, Trie : https://m.youtube.com/@takeUforward
- C++ Tutorial: https://m.youtube.com/playlist?list=PLauivoElc3ggagradg8MfOZreCMmXMmJ-
- Basic DSA Concepts : Jennys’ Classes & Abdul Baris’s Tutorial
- Two of the good coding books were added to the github
link given below.
4.2 High-level design round :
In the system design round most of the time is spent on solving and coming up with a high level design for a large scale system. As interview starts, you will be asked to design a system or a part of the complex system. Time given will be 45 min but there may be behavioural questions as well in between. For the further details I would recommend to go through the following two docs on high level system design principles. There everything is mentioned with a great details and do not worth it repeating again same thing here. Have a target to review these docs 4-5 times with hands-on practice with pen and paper. Ensure all concepts mentioned are clear to you, take help from youtube if any particular concept is not clear to you. Keep preparing short notes for each of the topics/concepts to revise it multiple times with ease before the interview. Only thing that will help you here is practise a lot, as much as you can. You can find both the docs in the github
. Leet code also has good materials on it that can be worth it to review.
4.3. Low level system design round :
In this round you may be asked to work on a new low level design problem or you may be interviewed about your past recent/ongoing projects. For your past project questions, be prepared to describe a few of your ongoing projects in detail. Must have a complete and good idea of the things you are working on, more important is figure out a few challenging things you faced while executing the project along with the other important things to tell, prior to your interview. It would be very difficult to list out those directly during your interview. This is similar to how you deal with behavioural questions and will cover more in the next section. Also while discussing your previous projects, it would be more on technical side behavioural questions. Expected to ask concepts on DBMS - table schemas, SQL Query, etc. Class and interface design or may be discussed on few optimisation algorithm as well. For general concepts of low level design you can go through the Object-Oriented Design book & Design principles book added in the github
. Also go through some tutorial on Solid Principles and there examples. Some example of low level interview questions from you tube you can refer to have more clear idea on how to deal with low-level design round. You can check out articles on low level design available on leet code by other candidates as well.
4.4. Behavioural Questions :
Amazon follows 16 Leadership principles and uses it to make decisions on day today activity. They will analyse how strong you are on those principles and if you are raising the bar or not. This is supported by a set up behavioural questions you can easily find on the internet. What you can do is, list out 5-10 important challenging situations, achievements, failures that you have gone through over the last 1-2 years. It would be much better to put the recent events with priority. Write up small paragraph on each focusing on - what was the situation & tasks, what actions you have taken and what was the results and learning from that. By having these things ready, be prepared to demonstrate it as well as possible. Do not use any generalised statement, be specific on the points. Provide the statement supporting data as much as you can. Supporting data is very much crucial as these are all will be helpful for the interviewer as well. During coding round ensure these questions are responded directly with much sorter answer if you have started with your coding, but if already coding is done then as per the time available extend it to more elaborative manners. Take 1min to frame your answer as per the question asked, it may not happen whatever questions you have prepared for will be asked to you. May be different but somewhat related to situations you have prepared. So have a clear thought on framing the answer as per the situation is highly suggested.
Most Important is do not fake the scenario. It's ok to describe a simple and small event that actually happened rather than a big fake situation. Because, you will be asked too many follow up questions about the situations and you may fail to fake those at that point directly at the interview and it may go very worst. So be honest about the situation and convince the interviewer how important that was to you with a lot of data points.
You do not have to remember each and every thing, just be prepare with the situations so that you can frame the situation better while asked at the interview.
5. Post interview :
Amazon has a great policy of reverting back to candidates within 5 days of the on-site interview and the same thing happened to me. In the first week of October, I got a call from the recruiter and was informed that I had cleared all the rounds and got the offer. On the next day I received my offer letter with the compensation that I had expected. This was one of the best moments that happened to me. After going through a hard time, I had to apply for more than 80 open positions at Amazon, apart from hundreds of other company's applications, preparation for more than 6 months & finally I cracked it, which I wished way back in Feb 2022. I joined Amazon on Nov 7, 2022. It's been around three months, ramping up things on new developments and a lot of training on Amazon's way of doing development. My team is equipped with great talents with a great manager. Enjoying & learning a lot each and every day here at Amazon. Great learning for me in the last 6 months. Still continue learning till date. Keep practising problems on leet code, participating in the weekly contest without fail. Keep extending my knowledge on system design by going through blogs and tech podcasts. Keep learning !!!
Hope I will see many of you here at Amazon in future. All the best to you for your upcoming interviews. Thank you very much for your time. Reach out to me on linkedIn, if you have any specific query related to interviews, I would be happy to help you out. Also you can reach out to me on code mentor profile for practice sessions & mock interviews preparations.
Finally I love to hear your thoughts after reading this article in the comments and show your token of appreciation by up-voting this article.
Resources github link : https://github.com/KreakEmp/InterviewPrep
LinkedIn Profile : http://www.linkedin.com/in/kishan-kumar-patel/
Code mentor Profile : http://www.codementor.io/@kishankumarpatel