Preparing for the Technical Interview

Insights, focus areas from a Recruiter at Amazon

Posted by Jasmin Caddel, Talent Magician (Technical Recruiter at Amazon) on January 18, 2020 · 6 mins read

A while ago member posted this as a word document in Slack. I am trascribing here for wider reach. - SDE Skills Team

These are all additional resources to help you prepare for the challenging coding tests. These are not affiliated with Amazon in any way.

Here are some other helpful insights:

  • You’ll be able to code in the language of your choice – use your strongest language.
  • Avoid using pseudocode or brute force solutions.
  • Communicate clearly, gather requirements, ask questions, and take hints – some problems are left intentionally vague and clarifying questions are required. Communicate throughout your problem solving and coding on the steps that you’re taking.
  • Brush up on data structures & algorithms:
    • Binary search trees – be comfortable with depth first vs. breadth first algorithms
    • Hash maps and hash tables – know how they work and when to use them
    • Be prepared to discuss runtime complexities & tradeoffs.
    • Link lists, arrays, how to flatten binary trees, etc.
  • They want your code to be scalable, robust, and tested.
    • Check edge cases or negative cases.

Technical interviews focus on 5 areas

  1. Data Structures – Review the most common ones. How can you compare and contrast their usage, run time complexities, and how they use memories.
  2. Algorithms – You want to brush up on the common ones such as transferals, divide and conquer, etc. Know their runtimes, theoretical limitations, and the basic implementation strategy of difference in classes.
  3. Coding – Please use a language you’re most comfortable with on a white board. Prep on how to write basic, handwritten code and talk loud through the steps & the solution.
  4. Object-Oriented Design – Amazon is an Object-Oriented Design Shop so think about how to use something like that to build bug free and long lived code. Be familiar with some of the best practices, most common, and most useful design patterns to write software in an object-oriented way.
  5. Distributed Computing – Amazon stores their data in a distributed manner, so what does it mean to horizontally vs. vertically scale? How does that make how we store the huge data that we have here in a faster way? Both storing and accessing data. What are the advantages of using distributed systems?

These questions will test your ability to solve a technical problem. If you are rusty I highly recommend to study up on:

  • trees (binary/red black trees/N-ary trees, tree symetric (inverse image), tree traversal, sorting trees, prefix tree, radix tree)
  • hash maps, stacks/queues/heap/priority que
  • link lists/reverse link lists (space vs time)
  • recursion/recursive strings
  • binary search
  • arrays - 2d/3d
  • graphs/graph traversal
  • big O notation

Some tools you might find useful to study up for the coding portion include:

For behavioral questions using our Leadership Principals:

For the behavioral questions, you’ll want to read through the leadership principals to become familiar with them (you don’t need to memorize them). Have a few specific examples prepared that you can potentially use to address the questions. It’s good to think of examples regarding projects you’ve done at work, teams you’ve worked with, and products you’ve shipped/delivered (don’t share anything that is considered confidential).

Additional Interview Preparation:

  • ALWAYS let them know that you’re excited and show passion and interest.
  • ALWAYS make sure to ask questions, give detailed answers and speak clearly.

Both of these are key! Whether it’s follow up questions or clarifying questions, interviewers don’t give out all the information on purpose and seek for you to ask questions around a problem/situation.

When given a technical question, always make sure to ask those clarifying questions up front and talk through your code and be details. Do not take shortcuts and let the interviewer understand the why you choose to solve a problem in a certain way.

Remember to always turn a negative into a positive: If you don’t know the answer to something, let them know by saying something like this: “I haven’t had a chance to work with XYZ in a production environment, but this is what I have done….” and give a few examples of what you have worked with that is comparable or similar. Be positive! Nobody expects an expert in all technologies and inventions!

Questions about your future: If asked where you see yourself in 5 years from now don’t future trip! Stay in the here and now and let them know that you’re excited about taking the next step about the interview today and that you want to grow and learn from the team.

NEVER make a negative comment about your current or past employers. Always keep it positive!

Thank you for reading!