Understanding Amazon’s Front-End Engineering Interview
Note: I’m not representing Amazon in any way with this post, it’s just my personal opinion.
Front-End Engineering in a Back-end World
I spent a lot of years thinking big tech companies were evil and claimed to love the hectic startup life, but the truth is I had convinced myself I could never get a job at a big tech company because of my non-traditional background. When I got to PayPal I found that a steady job with a great salary and plenty of personal development opportunities is exactly what I wanted. Similarly, Amazon has been a wonderful place to work. Prepping a few weeks for an interview that will open up doors for you for your entire life is really a small price to pay. Here’s how I recommend doing it.
Watch Out for the Wrong Job Title
If you read my post about getting hired at Amazon you’ll know I initially found a role where I was a good fit for the job description, but not the job type. It’s important to understand these companies usually have fairly rigid interview processes based on job type.
At Amazon the FEE (front-end engineer) interview is a lot different from an SDE (software development engineer) interview, I know Facebook similarly has a completely different recruiting process for UI Engineers. For Google, I think UX Engineer is the FEE equivalent with its own interview process. When you’re interviewing for what you think is a front-end role, make sure the recruiter and everyone you talk to is on the same page.
Check out Some of These Books on Data Structures and Algorithms
None of these books are perfect for front-end engineers, but get one or two and study them. It will help you become more familiar with the algorithms and data structures commonly found in modern tech interviews. Even though front-end specific interviews aren’t dealing as heavily in these areas as SDE interviews, I found studying these concepts essential. For example, I’ve needed to understand basic search algorithms in multiple front-end interviews. Trees are also an important concept to understand in the front-end space.
- De-Coding The Technical Interview Process — This is a brand new book by Emma Bastion about technical interviews that is tailored for front-end engineers. The content is very approachable. It’s a great place to start.
- The Impostor’s Handbook (#1 and #2) — This book helped me become familiar with a bunch of algorithms and concepts I didn’t know much about before. Not enough to nail an FEE interview, but enough to learn what I was missing.
- The Algorithm Design Manual — A popular CS textbook, I read a few parts to better understand some algorithms in detail.
- Cracking the Coding Interview — Ignore the code examples, but the intro chapters help cover some key technical concepts.
- Grokking Algorithms — Covers a lot of algorithms with cute pictures. I preferred the way these algorithms were covered by the Impostor’s Handbook, but this might work better for some people.
Consider Practicing Example Interview Questions
Studying Leetcode regularly for a few weeks before my Amazon interview helped me a lot. It’s not about memorizing arcane problems & their solutions, but about being able to quickly break down what is essentially a word problem into some useful data structure and an “algorithm” or path to solving it.
Let me give you an example:
Let’s say in an interview you’re asked to parse a log file with JavaScript to determine the top 5 and bottom 5 referrers to a site. So you make two functions called getTop5() and getBottom5(). Then you have a choice to make. How frequently should you actually be parsing that file? What if it’s 2 or 3gb? Your best bet is probably to create some kind of intermediary data structure that contains the referrers and a count and nothing else. Maybe even sort it. Once you have that it should be relatively simple (and fast) to get your top and bottom 5 referrers formatted however you want.
When people talk about “data structures” in the front-end environment, this is all they mean. Purpose-built objects (or classes) with keys and values that make it easy to perform whatever action is needed. You don’t need to memorize anything.
It often helps to work backwards. Ignore, for now, that the data is in a giant log file, think instead, “if I wanted to efficiently look up the top 5 entries, what would be the best way to do that? What shape should the data be in?” And then work out how to get the data into that shape before coding your solution.
Remember, you’ll only have about 30 minutes in an interview to complete most of these questions, so practicing getting to the right approach quickly with these exercises, will make a big difference.
Prepare Answers for “Soft-Skills” Type Questions
If you want to get a job at Amazon, you definitely need to be ready to talk about their leadership principles. These questions ultimately carry a significant amount of weight in your interview. They are not hard to prepare for and you can practice them with anyone. I suggest preparing well-thought out examples for as many of these questions/principles as possible.
Here’s an example of what one might look like:
Tell me about a time you went outside the scope of your job to solve a problem affecting a customer?
In this question you’d be demonstrating your customer obsession and willingness to learn & be curious, two important leadership principles. Other leadership principles you’re likely to be asked about in the front-end interview at Amazon are Insist on the Highest Standards, Hire & Develop The Best, Think Big, Deliver Results, Have Backbone; Disagree and Commit. Focus on those, but be aware that any of them may come up in an interview loop.
Brush Up On JavaScript & CSS Fundamentals
In addition to leadership skills and computer science basics, you definitely need to be able to demonstrate competence with front-end skills like JS and CSS. You need to know how to use Vanilla JS to traverse and manipulate the DOM. You need to be able to lay out content with CSS. You should also be able to speak fluently about and demonstrate the ability to use your framework of choice to build some UI components.
It’s also fairly common to be asked how to make utility methods like debounce or clone or merge or even how to build a “chaining” API similar to jQuery’s. You might get asked how to build a Map or Set class from scratch. All of these types of questions can be classified as “JavaScript fundamentals” and a thorough understanding of the language will help immensely.
For that I actually recommend studying from books. Here are a few frequently recommended options in this space:
The Interview Loop (or “on-site”)
At Amazon, you’ll have 4 or 5 different interviews as part of your onsite. The first 20 minutes or so of each will be leadership principle questions and the rest will be spent covering one technical question each. Topics usually include data structures & algorithms, logical & maintainable code, front-end tech, system design and then if there is a fifth one it would likely be all focused on leadership principles.
It’s not uncommon during an interview for a candidate to get flustered and a little bit lost in their thoughts. Sometimes it can help to pause, take a deep breath, and re-consider the approach you’ve taken. Talk through your thoughts out loud and make sure to ask questions to better understand the problem. Often times the interviewer will provide subtle or specific hints to keep you going in the right direction.
The System Design Question
For a front-end engineer the system design question is about breaking up a large task into smaller components and describing how all of those pieces will fit together. It’s usually done on a whiteboard and your end result often looks loosely like a high level UX sketch or a system diagram.
Sometimes it’s more of a full stack question like “How Would You Build a Website That Sells Tickets to Events?” Other times it will be more focused on the UI such as “Tell me What Components You’d Need to Power an App like Twitter”.
Here are a few suggestions for doing well in these questions:
- For fullstack questions make sure to think about stability and scalability (logging, monitoring, caching, etc.)
- For the UI component type questions make sure to mention theming, extensibility, accessibility, requiring a specific framework, etc.
- Both answers need to consider performance, mobile friendliness and security.
- Be as specific as possible (there’s no right answer, so make some choices and defend them!)
Conclusion
At this point I’ve covered most of what you can expect in a front-end interview at Amazon. It can definitely feel like a daunting process, but I can assure that if you want a good paying, stable job with a ton of growth opportunities, then big tech isn’t such a bad place to be. I think you’ll find that most big tech companies have a similar process to this and hopefully this information gives you the confidence needed to go after your dream job.
What has your experience been like interviewing for front-end roles at big tech companies? Was it worth the effort you put into preparing for the interview? I’d love to hear about it.