The post was originally published on ExplainThis with title 《My Amazon Frontend Engineer (FEE) interview experience》
This is a blog post on my interview experience with Amazon in summer 2022. The role I interviewed for was Frontend Engineer (FEE). It's different from traditional Software Development Engineer (SDE) at Amazon. FEE is solely focused on frontend engineering, but SDE is fullstack development.
I talked to one of my interviewers during the Phone Screen round on the role of FEE, and he said that at Amazon, it is possible to switch from SDE to FEE and vice versa. The interviewer said he joined Amazon as a SDE, but after a few years, he wanted to focus on the frontend, so he switched to FEE.
Some parts of the FEE interview are the same as SDE, but others are different. The same thing is that half of each round will ask the Amazon Leadership Principles questions, and both have data structure and algorithms. The difference is that in FEE interviews, you may be asked front-end knowledge, or you might be asked to implement a component during the interview.
For system design interview, FEE is also a bit different from SDE. For example, in SDE interview, interviewee will need to design a Twitter, but in FEE interview, interviewees will be asked to design a Twitter front-end (if you want to know more, I highly recommend this article about front-end system design.
Online Assessment (OA)
The OA had two LeetCode Medium difficulty questions. I used Quick Select to solve the first question. The second question is a two-dimensional array question, which can be solved by BFS or DFS, and I use BFS to solve it. What's interesting is that in addition to solving problems, this OA also required you to write down your thought process and analyze the time and space complexity.
In the discussion forum of LeetCode, many people will report the questions in their OA round. For example, search for Amazon Online Assessment, you will see the two questions in my OA round were actually already reported by someone else in the past. Thus, if you have an opportunity to do a Amazon OA round, it is recommended to practice the questions reported in the LeetCode discussion forum first. Amazon OA uses HackerRank, so the questions description is very long. I recommend you to go to HackerRank first to get familiar with their platform before doing the OA.
After passing the OA round, there will be a Phone Screen round. In the phone screen round, the interviewer asked two Leadership Principles (LP) questions (Amazon interviewers seem to be like this. They always start with LP questions). I have read on the Internet before that you must be well prepared for the Amazon LP questions. In addition to the questions per se, make sure you also practice the follow-up questions. I was asked several follow-up questions.
Then there are two whiteboard questions. They were not too difficult (around LeetCode Easy to Medium). I saw on the Internet that big tech companies ask interviewees do whiteboard questions on plain text editor instead of online IDE. For example, in Google's coding interview, they use Google doc. Amazon's interview is also quite similar. You won't get any auto-complete while you are coding. So make sure you practice on a plain text editor, and don't rely on IDE too much while practicing LeetCoding.
I didn't actually run the solution I implemented, so I think the interviewer is mainly testing my thinking process. Since both whiteboard questions were not too difficult, I implemented them quite smoothly. Nevertheless, this Phone Screen made me realize that I used to rely too much on IDE when I wrote code (I bought LeetCode Premium, so when I did LeetCoding, it's always auto-complete. I don't recommend doing so after this interview).
After passing the phone screen round, the Recruitment Coordinator helped me coordinated my loop interview. Although I was interviewing FEE, there was only one interviewer was a FEE. Two interviewers are SDEs, and one interviewer was a SDM. Because there is a confidentiality clause for interviews, I cannot share the details of the problems I faced. That being said, I will share my experience of each round.
The interviewer was a FEE. It also started with two LP questions, and then moved on to the front-end whiteboard questions. Different from the previous round, this round was more biased towards writing algorithms, but it was not the traditional LeetCode question. It was more like implementing an API (a certain function) provided by a certain framework, which was a question I had never encountered before.
If you want to prepare for this type of question, you could check out the source code of popular libraries and frameworks to see how their APIs are implemented underneath the hood. My performance in this round was not as good as the first level. Although I successfully implemented the function, there was no time left for me to optimize the solution.
The interviewer was a SDE. He said that he liked React very much, so he also did front-end things at work. But because he wanted to keep his role flexible, he did not switch to FEE, but continued to be a SDE. This round was a traditional data structure and algorithm round.
Again, there were two LP questions first. After the LP questions, the interviewer asked me a question related to graph data structure. The problem can be solved with DFS or BFS. After solving the problem, I was asked an follow-up question, and I used topological sort to solve the follow-up problem.
I must say that I was very lucky. Two weeks before the interview, I practiced the LeetCode Course Schedule problems, which were exactly topological sort problems. That's why I felt that the problem asked by the interviewers were quite familiar to what I'd practiced. That's why I highly recommend doing all Blind 75 questions before your interview so that you can have a solid foundation to solve problems during the interview.
The interviewer asked me to walk through my algorithm verbally with testing data after my implementation. In this type of interview, you must be clear about the logic you write, and you cannot rely on the debugger when writing programs like you usually do. I was very thankful for the phone screen round since it made me realize that I should practice LeetCoding without relying on IDE and I should practice think aloud.
The interviewer was a SDM, who was also the hiring manager. This round was the only interview that I didn't do any coding. It was more like a front-end system design interview. At the beginning, the interviewer asked three consecutive LP questions (nearly 30 minutes). Then he asked the system design question.
Because I can’t mention the details, I can only say that if you want to prepare for this round, I would recommend learning more about how a product can serve with tens of millions of daily active users around the world. How to ensure low latency, high availability, and high reliability for the front-end part.
Here I recommend that everyone can go to see how the big tech companies do things. For example, in this YouTube video, it is mentioned that in order to ensure high availability, Amazon will test hundreds of different devices at the front end before launching a new feature.
I received the results about a week after the interview. When I heard the recruiter say congratulations, I was really surprised and happy at the same time. The Amazon recruiter said that they could not give specific feedback for each round, but the feedback for each round was all positive. I used to read blog posts from people who joined the FAANG company. I didn’t expect that I could also hear the recruiter of a FAANG company say congratulations to me!
I hope my experience was helpful to you :)