Break into the Big Four
I took the Amazon Software Development Engineer II interview about 2 months ago, prepping for about one week. The interview itself wasn’t as bad as I expected, but I’m still glad I prepared.
Interview Sections (Onsite)
- Coding (2–3 questions)
- OOO design question
- Systems design (usually one question)
- Behavioral questions (leadership principles)
Leadership Principles
Make sure you are familiar with the leadership principles and that you can provide real examples from your past professional experiences for each of them. You will probably be asked for examples for most of them. Make sure you also have backup examples in case the interviewer wants to go into more depth.
The most important leadership principle that you hear everyday working at Amazon is Customer Obsession!
Here are the leadership principles:
Coding Interview
Some basic tips:
- Explain everything you’re thinking and doing (think out loud)
- Write clean, production level code (no pseudo code)
- Test all border cases while thinking out loud
- Try to start with the most optimal solution, but if you can’t think of one, start with a brute force solution and optimize from there. It’s better to have something to start with then nothing at all
Some topics to review:
- Dijkstra’s shortest path between nodes in a graph
- BFS / DFS
- Recursion (ex. Fibonacci)
- OOO Principles. I had to design an API and class diagram for a basic parking lot problem
- Sorting / Searching methods (know how they work. Don’t have to implement from scratch, but know how to use libraries and tradeoffs between). For example, I used the JavaScript
sort
method during my interview and mentioned that Chrome uses Quicksort and stated the time complexity. - Know all data structure operation costs and memory complexity
- Other stuff you learned in your algorithms class 🤓
Practice problems:
Below are some practice problems I’ve found online that are commonly asked:
- Merge two sorted linked lists
- Find largest palindrome in sentence
- Verify string has properly closed parenthesis
- Given a matrix traversal, track all visited items
- Reverse a linked list
- Design a snake game using OOO techniques
System Design
During the interview, you will be expected to design a system, laying out all components and describe their interactions. You should focus mainly on scale and avoiding downtime. Also, make sure you can discuss tradeoffs in your design. Think out loud!
I would make sure to watch this video (I watched it three times taking notes):
Some things to make sure you know after watching the video:
- Issues with sessions when using distributed systems
- Load balancer
- Issues with round robin load balancing
- Horizontal scaling
- Vertical scaling
- Map reduce for large datasets
- RAID
- Distributed caching
- Service-oriented architecture
- High-availability database architecture
Other helpful references:
https://www.linkedin.com/pulse/how-interview-amazon-leadership-david-anderson