40 practice questions for Amazon QA Engineer interviews
Amazon QA engineer interviews test automation frameworks, test strategy, CI integration, performance testing, and debugging complex multi-service systems.
Category: Binary tree coding problemYou are given the root of a binary tree. You need to install the minimum number of cameras on the tree nodes such that every node in the tree is...Input: Binary tree Output: Integer
codingHardVerified Question#2
2. [CodeSignal] Warehouse Emergency Deliveries
Category: Array coding problemAmazon has opened a new warehouse recently. There are no products in the warehouse currently. The warehouse is under inspection for n days. The...Input: Array Output: Integer
codingHardVerified Question#3
3. [CodeSignal] Permutation Sorter
Category: Combinatorics coding problemAmazon engineers are testing a new tool, the Permutation Sorter, built to reorder sequences using limited operations. Given a permutation of...Input: Integer(s) Output: Integer
codingHardVerified Question#4
4. [CodeSignal] Maximum Product Rating
Category: Array coding problemThe engineers at Amazon are working on a new rating system for their products. For each product, an array customer_rating is maintained for the...Input: Array Output: Computed result
codingMediumVerified Question#5
5. [CodeSignal] Drone Hub Travel
Category: Array coding problemAmazon is expanding its next-generation drone delivery network, consisting of m hubs arranged in a circular ring (Hub 1 is adjacent to Hub m)....Input: Array Output: Computed result
codingMediumVerified Question#6
6. [CodeSignal] Minimum Security Groups
Category: Array coding problemA financial services company has requested AWS for a private deployment of its cloud network. There are n servers in the network where the security...Input: Array Output: Integer
codingMediumVerified Question#7
7. [CodeSignal] Maximum Secure Deliveries
Category: Array coding problemYou are given an array deliveryLogs of size n, where each element represents the number of parts delivered in the i-th log. You are also given...Input: Array Output: Integer
codingMediumVerified Question#8
8. Maximum Interval Overlap
Category: Interval-based coding problemYou are given a list of closed intervals on the number line, where each interval [start, end] includes both endpoints. Find the maximum number of...Input: List Output: Integer
codingHardconcurrency#1
1. [OA] Parallel Test Execution — Design an efficient framework for running Amazon's QA tests in parallel
To accommodate the high scale of Amazon's services, test automation needs to perform efficiently. This requires creating a robust framework that can handle concurrent test executions without resource bottlenecks. Implement a class named ParallelTestRunner with the following methods: - executeTests(tests: List[Test]): List<Result] - Executes a list of tests in parallel and returns their results. - addTest(test: Test): None - Adds a test to the runner.Example 1: Input: tests = [Test1, Test2, Test3] Output: [Result1, Result2, Result3] Explanation: The tests are executed simultaneously, returning their results in a list.Constraints: - 1 <= tests.length <= 1000 - Each test must not exceed 2 seconds of execution time.
system designMediumtest automation#2
2. [OA] Flaky Test Detector — Create a system to identify and manage flaky tests in Amazon’s CI pipeline
Flaky tests can severely affect Amazon's release process. A mechanism to detect and provide insights into flaky tests will be essential for maintaining code quality. Design a class FlakyTestDetector with the following methods: - addTestExecution(testName: str, result: bool): None - Adds a result of a test execution to the detector. - getFlakyTests(): List[str] - Returns a list of tests identified as flaky based on historical results.Example 1: Input: addTestExecution('LoginTest', true) followed by addTestExecution('LoginTest', false) Output: ['LoginTest'] Explanation: The test failed inconsistently, marking it as flaky.Constraints: - Each test name is unique and of length 1 to 100. - Results can only be true or false.
system designSeniordistributed systems#3
3. [OA] Load Test Orchestrator — Build a system for orchestrating load tests at Amazon scale
As Amazon expands its cloud services, verifying performance under high load is critical. An orchestrator must manage multiple load test scenarios efficiently. Create a class LoadTestOrchestrator with the following methods: - scheduleLoadTest(testName: str, duration: int): None - Schedule a load test with a specified duration. - executeTests(): List[Result] - Execute all scheduled load tests and return their results.Example 1: Input: scheduleLoadTest('API_Load_Test', 300) followed by executeTests() Output: [Result] Explanation: All scheduled tests are executed, returning results in a list.Constraints: - Duration is a positive integer less than or equal to 3600 seconds.
system designMediumapi design#4
4. [OA] Test Result Aggregator — Build a system that compiles test results from multiple sources
As Amazon continues to expand its automated testing capabilities, it becomes critical to consolidate results from varied testing environments. This requires a robust class design. Design a class TestResultAggregator with the following methods: - addResult(testName: str, result: bool): None - Adds a test result for the specified test. - getSummary(): Dict[str, int] - Returns a summary of passed and failed tests.Example 1: Input: addResult('LoginTest', true) followed by addResult('SignupTest', false) Output: {'passed': 1, 'failed': 1} Explanation: 1 test passed, and 1 test failed.Constraints: - Test names are unique strings of length 1 to 100.