Advice > Software engineering

49 Amazon coding interview questions (from REAL candidates)

By Julia Hamilton on November 22, 2022 How we wrote this article
Two men coding in a sunny office

Below is a list of 49 confirmed Amazon coding interview questions that were asked in software development engineer interviews just the past 10 months. 

We identified these questions by analyzing a dataset of over 250 Glassdoor interview reports that were posted by real Amazon software development engineer candidates.

Practice up-to-date questions in the lists below to be prepared for the latest Amazon engineering interviews.

Note: To learn more information about what to expect at your Amazon interviews, read our complete guide to the Amazon SDE interview or our overview of the Amazon interview process.

Here's what we'll cover below:

  1. 49 Amazon coding interview questions
  2. How to answer Amazon coding interview questions
  3. Amazon coding interview prep
Click here to practice mock interviews with ex-Amazon interviewers

49 Amazon coding interview questions

Arrays interview questions

  1. Given a sorted dictionary (array of words) of an alien language, find the order of characters in the language.
  2. Given an array arr[] of size n, its prefix sum array is another array prefixSum[] of the same size, such that the value of prefixSum[i] is arr[0] + arr[1] + arr[2] … arr[i].
  3. Given an array of integers, find the next biggest number.
  4. Given an array of distinct integers arr, find all pairs of elements with the minimum absolute difference of any two elements.
  5. Given an input of two arrays that represent computers' power output (powerOutputs) and boosted output (boostedOutputs) and a maximum allowed power (powerMax), return the maximum amount of adjacent computers that are less than or equal to powerMax given the formula totalPowerOutput = powerOutputs[i] + powerOutputs[i + 1...] + (boostedOutputs[i] + boostedOutputs[i + 1...] * numOfAdjacentComputers).
  6. Design a function that, given an array of lockers and an incoming package, the function will return the optimal locker for that package.
  7. Write a function that, given an array of entities and an integer N, keep looping around the array removing the Nth remaining entity until there is only one entity remaining. Return the remaining entity. Example Input: 2 elements, example loop below ...A E....B ..D.C Loop 1: Step 2 elements, flag B ...A E....[B] ..D.C Loop 2: Step 2 elements, flag D ...A E....x .[D]C Loop 3: Step 2 elements, Flag A ...[A] E....x ..x.C Loop 4: Step 2 elements, Flag E (NOT C, since B no longer exists ....x... [E]..x ..x.C.. Output: C
  8. Given a list of packages that need to be built and the dependencies for each package, determine a valid order in which to build the packages.
  9. Given char array ('w','h' combination), and int value w=work day, h=holiday, the int value represents the number of holidays that an employee can take off work. Find the longest possible holiday sub array.
  10. Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order.
  11. There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith station to its next (i + 1)th station. You begin the journey with an empty tank at one of the gas stations. Given two integer arrays gas and cost, return the starting gas station's index if you can travel around the circuit once in the clockwise direction, otherwise return -1.
  12. You are given an array prices where prices[i] is the price of a given stock on the ith day. You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock. Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.
  13. You are given an integer array nums. The range of a subarray of nums is the difference between the largest and smallest element in the subarray. Return the sum of all subarray ranges of nums.
  14. Search an element in one sorted array which has infinite length.
  15. You are riding a bus, suppose in the East direction (bus direction will not change). Given the capacity of bus ‘c’ and an array such that [numberOfPassengers, PickUpLocation, DropLocation]. Check if you can drop all the passengers at their destinations. Return true or false eg: a. Bus capacity, c=4 [[3,1,5],[2,2,6]] -> Return false
  16. Place a set of integers into N arrays such that the sum of the medians of all the arrays is maximized.

For more help with arrays, take a look at our full guide on the subject, which includes 50+ array interview questions.

Linked list interview questions

  1. Remove the duplicate node(s) from a linked list.
  2. Reverse a linked list.
  3. In a linked list, find the second highest number of each node
  4. Given a user id and a list of purchases where each item in the list has a product id and user id #, return a list of products that the user hasn't # yet purchased yet but have been purchased by other users that have already purchased at least one thing in common with that user.
  5. Given an integer array marks, which comprises marks scored by a student (out of 100) in different subjects, assign a grade to the student. The grade is found out by taking the percentage of the marks scored by the student. 
  6. Given a list of words (without duplicates), please write a program that returns all concatenated words in the given list of words. A concatenated word is defined as a string that is comprised entirely of at least two shorter words in the given array.
  7. Find the sum of all numbers in a linked list.
  8. You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself.
  9. Given the number of pages in each chapter of a book (in the form of a linked list) you read a chapter from the front and a chapter from the back each day (guaranteed an even number of chapters). What day did you read the most number of pages?

For more help with linked lists, take a look at our full guide on the subject, which includes 40+ linked list interview questions.

Strings interview questions

  1. Given string s, return the longest palindromic substring in s.
  2. Given a vector of strings, group the strings which are anagrams eg:- {ada,mnj,kkl,mjn,aad} Ans:- {{ada,aad},{mnj,mjn},{kkl}}
  3. Reverse a string and stack it.
  4. Given a string s which represents an expression, evaluate this expression and return its value.
  5. Given two strings, determine if they are equal after backspace operators are processed.
  6. Find the number of unique letters in all substrings of a string.
  7. Given a string s, find the length of the longest substring without repeating characters.
  8. Given a string s, return the maximum number of ocurrences of any substring under the following rules: The number of unique characters in the substring must be less than or equal to maxLetters, and the substring size must be between minSize and maxSize inclusive.
  9. Given a string of heads or tails (e.g. "HHHTH"), return the minimum number of flips so that all heads are before all tails.

For more help with strings, take a look at our full guide on the subject, which includes 51 string interview questions.

BFS/DFS interview questions

  1. Given a 2D grid of M row by N columns, where each cell can either be "land" or "water,” find the total number of islands.
  2. Given a dictionary, and two words ‘start’ and ‘target’ (both of same length). Find length of the smallest chain from ‘start’ to ‘target’ if it exists, such that adjacent words in the chain only differ by one character and each word in the chain is a valid word i.e., it exists in the dictionary. It may be assumed that the ‘target’ word exists in dictionary and length of all dictionary words is same. 
  3. Given a matrix of N by M elements. These elements will be one of the following: E for an entrance or an exit, _for a traversable path, or X for an untraversable path. Design an algorithm that can traverse this matrix and determine the shortest path between the two E nodes. Assume that there will always be exactly one entrance and one exit (again, both are represented by an E). Assume that there will always be a solution path, though there may be multiple. You may not move diagonally.
  4. Given a 2D screen, location of a pixel in the screen and a color, replace color of the given pixel and all adjacent same colored pixels with the given color. (i.e. The flood fill function in Paint.)
  5. Given a dictionary, and two words ‘start’ and ‘target’ (both of same length). Find length of the smallest chain from ‘start’ to ‘target’ if it exists, such that adjacent words in the chain only differ by one character and each word in the chain is a valid word i.e., it exists in the dictionary. It may be assumed that the ‘target’ word exists in dictionary and length of all dictionary words is same. 

For more help with DFS and BFS, take a look at our full guides, which include 50+ depth-first search interview questions and 44 breadth-first search interview questions.

Trees interview questions

  1. Reverse a binary tree.
  2. Given two trees, determine if they are mirrors of one another.
  3. You are given the root of a binary tree with n nodes where each node in the tree has node.val coins. There are n coins in total throughout the whole tree. In one move, we may choose two adjacent nodes and move one coin from one node to another. A move may be from parent to child, or from child to parent. Return the minimum number of moves required to make every node have exactly one coin.
  4. Print a binary tree in zig-zag order.
  5. A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at most once. Note that the path does not need to pass through the root. The path sum of a path is the sum of the node's values in the path. Given the root of a binary tree, return the maximum path sum of any non-empty path.

For more help with trees, use our full guide on the subject, with 50+ tree interview questions and solutions.

Other interview questions (Big O, dynamic programming, graphs, sorting)

  1. What are the time and space complexities of the solution you’ve found?
  2. Improve the time complexity of a given code.
  3. Write a code to print a sequence of numbers starting with N, where A[0] = N, without using a loop, in which A[i+1] = A[i] - 5, until A[i] > 0. After that A[i+1] = A[i] + 5. Repeat it until A[i] = N
  4. Given a set of cities and the distance between every pair of cities, find the shortest possible route that visits every city exactly once and returns to the starting point. 
  5. Merge two streams of sorted integers.

For help on all of these subjects, use our guides to Big O notation and complexity analysis, dynamic programming, graphs, and sorting.

How to answer Amazon coding interview questions

To learn how to answer coding interview questions, you must first be able to approach them systematically. You might solve a coding question in different ways, but at the end of the day, you need an approach that will consistently:

  • Show your interviewer that you have the knowledge they need
  • Break the problem down into manageable steps

With that in mind, one of our favorite approaches is summarized in the following video from Amazon:

 

The approach shown in the video above can be boiled down into 4 main steps:

  1. Clarify
  2. Plan
  3. Implement
  4. Test & optimize

Next, we’ll dig into each of these steps in more detail, with a minute-by-minute interview flow, provided to us by Suman B. Let's get started!

1. Clarify (minutes 0-10)

Don’t jump straight into the question without consulting your interviewer. Instead, start by asking questions to remove any ambiguity and to explore the edges of the problem. 

This is a good time to set up a dialogue with your interviewer. They are not just looking for a candidate who can solve a problem, but one who can work effectively in a team of other engineers. 

Let’s jump into how this will look during the interview.

Minutes 0-3: Understand the question

If the question has been written down for you, take the time to read it thoroughly at least twice, to be sure that you’ve picked up on all the details. Repeat the question back to the interviewer in your own words, so that they can flag anything that you may have initially misunderstood.

Minutes 3-8: Ask clarifying questions

Once you’re sure that you understand the basic question, clarify the unwritten details. For example, ask for constraints (e.g. 0<= N < 1000), consider edge cases, identify corner cases, specify what language you’ll be coding in, etc.

Minutes 8-10: Specify assumptions

Finally, before starting work on the solution, consider any assumptions you’re making (e.g. input format, range, sorted or unsorted list, etc). Specify those to the interviewer, so that they can tell you if that is a correct assumption to make, given the problem.

2. Plan (minutes 10-20)

Now that you have a complete understanding of the coding question, it’s time to start making your plan. Here is where you can discuss potential approaches with the interviewer, pick the one that is the most appropriate, and lay out the high level steps to get there.

Let’s take a look at how this will play out in the interview:

Minutes 10-15: Find a solution

Take five minutes to think through a solution to the problem. It does not need to be optimal at this stage. Map out your solution on the whiteboard or its virtual equivalent, making sure that what you add is comprehensible to both you and the interviewer. The goal is to find any solution (at least brute-force) and then find improvements. Keep walking through your steps out loud so that the interviewer can guide you.

Minutes 15-20: Explain your solution

Before you implement your plan, make sure that you’ve brought your interviewer up to speed. If you’ve identified multiple approaches to the problem, go over each and explain why you’ve chosen the one you decide to move forward with. Ensure that the interviewer is aligned with your solution before you start coding, in order to save time down the road and to allow the interviewer to capture the right data points during your coding.

3. Implement (minutes 20-35)

Now it’s time for the main event. Write legible, clean code rather than pseudocode, and comment out loud on what you’re doing. Alternatively, if you have a hard time talking and writing, you can spend a few minutes coding quietly, then stop periodically to explain what you’ve done.

Here’s how much time you should spend on these steps:

Minutes 20-25: Optimize the solution

Once you’ve talked through your solution with the interviewer, optimize it. Consider any points you may have missed when you first thought of the solution, and what you can do to make it better. Explain your reasoning thoroughly and keep an eye out for the cues of the interviewer, which will let you know whether or not you’re on the right track. You can prompt them by asking, “how does that sound?” before moving on to coding.

Minutes 25-35: Write the code

Now, write that code! Explain what you’re doing, and make an effort to write clearly—don’t use shorthand variables. Include descriptive variable names, structure the code well, consider boundary conditions or empty inputs, etc. Make your code modular and eliminate duplicate code.  If you realize you’ve forgotten an important function, simply go back and insert it, while clarifying what you’re doing out loud.

4. Test and optimize (minutes 35-50)

Once you have your code on the board, you’ve got to take the time to run through and test it, then optimize it given what you’ve found in testing. Start by testing with a simple example, then try breaking your code with edge and corner cases. 

Don’t forget to calculate the time and space complexity of your code, and discuss how you can possibly improve it. If you find any better solutions while testing and evaluating your code’s complexity, ask the interviewer if they’d like you to implement it.

Here’s how that will play out:

Minutes 35-40: Test run your code

When testing your code, run it through multiple cases, starting with the basic use case, moving into a more complex case, and finally test for failure and edge cases. Consider anything that might break your code, and what you can do to address it [e.g. test cases like asserrEquals(findMax(10,20), 20)].

Minutes 40-50: Optimize your code 

Finally, work out the time and space complexity of your code. Explain it in simple terms to your interviewer, and use it as a jumping off point to consider ways you can optimize your code. If time permits, write out the optimal code and discuss it.

Minutes 50-60: Q & A

These last few minutes of the interview are a good time to ask any questions you might have about the company and what your experience would be like working there. The interviewer may have additional questions for you as well. If the interviewer has clearly moved on from the coding problem, consider it finished and do not try to rehash any of its finer points.

Now that you’ve seen a breakdown of a coding interview flow, let’s take a look at a full example answer.

Amazon coding interview prep

Now that you know what questions to expect and how to answer them in Amazon coding interviews, here are 3 steps you should take to make sure you’re fully prepared.

Learn about Amazon’s culture

Most candidates fail to do this. But before investing tons of time preparing for an interview at Amazon, you should take some time to make sure it's actually the right company for you.

Amazon is prestigious and it's tempting to assume that you should apply, without considering things more carefully. But, it's important to remember that the prestige of a job (by itself) won't make you happy in your day-to-day work. It's the type of work and the people you work with that will.

If you know engineers who work at Amazon or used to work there, talk to them to understand what the culture is like. We would also recommend reading the following resources:

Get familiar with the interview process

Of course, coding rounds will not be the only interviews that you’ll have to face for a technical role at Amazon. While coding interviews are going to be a key part of impressing interviewers and ultimately getting an offer, there will be other types of questions that you’ll need to crack.

At Amazon, for example, there is a heavy emphasis on the company’s 16 leadership principles, which every interviewer will be testing you on. To learn more about this, plus the exact interview process for your role,  refer to one of our complete Amazon interview guides below.

Once you’re in command of the subject matter, you’ll want to practice answering questions. But by yourself, you can’t simulate thinking on your feet or the pressure of performing in front of a stranger. Plus, there are no unexpected follow-up questions and no feedback.

That’s why many candidates try to practice with friends or peers.

Practice with peers

If you have friends or peers who can do mock interviews with you, that's an option worth trying. It’s free, but be warned, you may come up against the following problems:

  • It’s hard to know if the feedback you get is accurate
  • They’re unlikely to have insider knowledge of interviews at your target company
  • On peer platforms, people often waste your time by not showing up

For those reasons, many candidates skip peer mock interviews and go straight to mock interviews with an expert. 

Practice with experienced interviewers

In our experience, practicing real interviews with experts who can give you company-specific feedback makes a huge difference.

Find an Amazon interview coach so you can:

  • Test yourself under real interview conditions
  • Get accurate feedback from a real expert
  • Build your confidence
  • Get company-specific insights
  • Learn how to tell the right stories, better.
  • Save time by focusing your preparation

Landing a job at a big tech company often results in a $50,000 per year or more increase in total compensation. In our experience, three or four coaching sessions worth ~$500 make a significant difference in your ability to land the job. That’s an ROI of 100x!

Click here to book coding mock interviews with experienced Amazon interviewers.
 

Related articles:

messages subpub system design interview
Software engineeringFeb 14, 2023
Queues and pub-sub: system design interview concepts (9 of 9)
This guide defines queues and pub-sub, how they work, and when you should use them in a system. This is the 9th of 9 foundational system design interview concepts that we're covering on our blog.
Read more
System design interview tips
Software engineeringJan 11, 2022
19 system design interview tips from FAANG ex-interviewers
19 system design interview tips from ex-interviewers at Amazon and Google to help you get an offer. Learn how to optimize your preparation time, and get key tips for top performance during the interview.
Read more
Tech resume examples
Software engineeringJul 24, 2024
Tech Resume Guide (+11 FAANG examples that worked)
11 real tech resume examples that got interviews at FAANG companies including Google and Meta. Plus, step-by-step guide to writing a technical resume, a free tech resume template, and pro tips.
Read more
Greedy algorithm interview questions
Software engineeringNov 29, 2021
50 greedy algorithm interview questions
50 greedy algorithm interview questions, all with links to high-quality solutions, plus an interview preparation guide. Part 6 of our algorithms questions series to help you practice for your software engineer interview.
Read more
network protocols and proxies system design interview
Software engineeringFeb 15, 2023
Network protocols and proxies: system design interview concepts (1 of 9)
This guide defines network protocols and proxies, how they work, and when you should use them in a system. This is the 1st of 9 foundational system design interview concepts that we're covering on our blog.
Read more
How to beat the Amazon Bar Raiser interview
Software engineeringFeb 15, 2023
5 steps to beat the Amazon Bar Raiser interview (with questions)
5 actionable, concrete steps on preparing for the Amazon Bar Raiser interview, including practice questions, preparation resources, and a deep dive on the Bar Raiser process.
Read more
Google engineering manager interview
Software engineeringMar 06, 2024
Google Engineering Manager Interview (questions & prep)
Complete guide to Google engineering manager interviews (also applies to GCP) with insight from Google ex-interviewers. Practice with example questions, understand the interview process, learn key interview tips and follow our preparation plan.
Read more
How to answer Why Amazon
Software engineeringJul 28, 2022
How to answer "Why Amazon?" interview question (+ example)
"Why Amazon?" is a question you are almost certain to come across in your Amazon interviews. In this article we give you four concrete steps to craft your perfect answer to the question, including a sample answer.
Read more