Microsoft logo

Microsoft QA Engineer Interview Questions

45 practice questions for Microsoft QA Engineer interviews

Microsoft QA engineer interviews test automation frameworks, test strategy, CI integration, performance testing, and debugging complex multi-service systems.

All Roles Software Engineer Backend Engineer Frontend Engineer Full Stack Engineer Mobile Engineer Data Engineer Data Scientist ML Engineer DevOps Engineer DevOps Engineer Product Manager SRE Security Engineer Engineering Manager Data Analyst UX/UI Designer QA Engineer
12
Coding
1
System Design
coding Medium Verified Question #1

1. Design Rate Limiter


Category: Sliding window coding problem
# Design Rate Limiter Design a rate limiter system that controls the number of requests allowed within a specified time window. The rate limiter is...
Input: String
Output: Computed result
coding Medium Verified Question #2

2. Object Oriented Design - Idempotent Receipt Sending


Category: Trie-based coding problem
Input: String
Output: Computed result
coding Medium Verified Question #3

3. Object Oriented Design - Notification Service


Category: Trie-based coding problem
# Problem Statement Design a notification service that supports sending notifications through multiple channels (SMS, Email) and is architected to...
Input: Number(s)
Output: Computed result
coding Medium Verified Question #4

4. Shortest Substring with N Unique Characters


Category: String coding problem
# Shortest Substring with N Unique Characters *This is a variation of the leetcode problem* Given a string s and an integer n, find the length of...
Input: String
Output: Computed result
coding Hard Verified Question #5

5. Rate Limiter


Category: Sliding window coding problem
Design a rate limiter that tracks API requests per client and enforces limits using a sliding time window. Your system must support: - hit(key,...
Input: Given input
Output:** Computed result
coding Hard Verified Question #6

6. Non-Adjacent Team Selection


Category: Tree coding problem
# Question You are given n people labeled from 0 to n - 1. Some pairs of people know each other directly. These relationships are given as a...
Input: List
Output: Computed result
coding Medium Verified Question #7

7. Bounded Repeat Substring


Category: String coding problem
A sensor data stream is represented as a string of characters. A contiguous segment of the stream is considered valid if it contains no three...
Input: String
Output: Computed result
coding Medium Verified Question #8

8. OA [CodeSignal] Prime Jumps


Category: Algorithm coding problem
# OA [CodeSignal] Prime Jumps A game is played with the following rules: - A player starts at cell 0 with a score of 0. - There is a row of n cells...
Input: Number(s)
Output: Computed result
coding Hard Verified Question #9

9. Combine N-ary Trees


Category: Tree coding problem
You are given the roots of two N-ary organization charts, each representing a hierarchical department structure. Every node has an integer...
Input: List
Output: Computed result
coding Medium Verified Question #10

10. Digit Replacement Maximizer


Category: String coding problem
A numeric optimization system performs exactly k substitution operations on a number string s. In each operation, choose any digit in s that is...
Input: String
Output: Computed result
coding Medium Verified Question #11

11. Best Window For Target Count


Category: Trie-based coding problem
A log analysis tool searches for the most frequent occurrence of a specific error code within a fixed-size window of log entries. Given an integer...
Input: Array
Output: Integer
coding Medium Verified Question #12

12. Evens Before Odds


Category: Array coding problem
You are given an integer array nums. Rearrange nums so that all even numbers appear before all odd numbers. The relative order of even or odd...
Input: Array
Output: Integer
system design Hard Verified Question #13

13. Top 5 System Design Questions Jan 2026


Category: Interval-based system design problem
# Top 5 Recently Asked System Design Questions - Microsoft These are the commonly asked system design questions from Microsoft interviews and some...
Input: List
Output: Computed result
coding Hard binary search #1

1. [OA] Binary Search — Search optimized test configuration in Azure DevOps

Microsoft Azure DevOps often requires efficient retrieval of test configurations from large databases. Your task is to implement a binary search to find a specific configuration given the testConfigs list sorted by name.
Problem statement: You are provided with a list of test configurations containing name and settings. Return the settings of the configuration that matches the given name. If no configuration is found, return null.
- Example class structure:
- def findTestConfig(testConfigs: List[Tuple[str, Any]], name: str) -> Any: : Returns the settings associated with the specified test configuration name.
Example 1:
Input: findTestConfig([('configA', {'timeout': 30}), ('configB', {'timeout': 20})], 'configB')
Output: {'timeout': 20}
Explanation: The settings for 'configB' are returned.
Constraints:
-
1 <= testConfigs.length <= 10000`
- Config names are unique.
- Config names contain only lowercase letters.
coding Hard sliding window #2

2. [OA] Sliding Window — Efficiently filter web app test results at Microsoft

To maintain the reliability of its web applications, Microsoft needs to process large sets of test results and identify patterns. Your task is to implement a sliding window solution that captures the latest test results within a given time frame and identifies any failures.
Problem statement: You are given a list of test results in the format of timestamps and a timeFrame (in minutes). Your objective is to return a list of timestamps containing all test failures that occurred within each sliding window of the specified time frame. A failure is identified if the result is marked as 'fail'.
- Example class structure:
- def getFailures(testResults: List[Tuple[str, str]], timeFrame: int) -> List[str]: : Returns a list of failed test timestamps within the specified timeframe.
Example 1:
Input: getFailures([('2023-10-03T10:00:00', 'pass'), ('2023-10-03T10:05:00', 'fail'), ('2023-10-03T10:10:00', 'fail')], 10)
Output: ['2023-10-03T10:05:00', '2023-10-03T10:10:00']
Explanation: The failures occurred within the last 10 minutes.
Constraints:
-
1 <= testResults.length <= 10000
-
timeFrame > 0`
- Timestamps are in ISO 8601 format.
system design Senior api design #3

3. [OA] Design a Load Test Orchestrator for Azure

In the cloud context of Microsoft Azure, orchestrating load tests is crucial for scaling applications effectively. Your task is to design a LoadTestOrchestrator that can distribute load across multiple services in a controlled manner.
Problem statement: Create a class LoadTestOrchestrator that can manage multiple load test execution requests and dynamically distribute them to different services based on load balancing strategies.
- Class structure:
- def addTestRequest(serviceName: str, load: int) -> None: : Queues a load test request for execution with a specified load.
- def executeTests() -> None: : Executes all queued load test requests and returns test results.
Example 1:
Input: orchestrator = LoadTestOrchestrator(); orchestrator.addTestRequest('serviceA', 50); orchestrator.addTestRequest('serviceB', 70); orchestrator.executeTests()
Output: Example results showing load distribution across services.
Explanation: The orchestrator should balance the load during execution.
Constraints:
- 1 <= serviceName.length <= 100
- 1 <= load <= 1000.
system design Senior api design #4

4. [OA] Design a Flaky Test Detector — Improve test reliability in Microsoft Teams

To maintain the reliability of Microsoft Teams, you need a system that can identify flaky tests that yield inconsistent results over time. Your task is to design a FlakyTestDetector that monitors test results and flags tests that exhibit flaky behavior.
Problem statement: Design a class FlakyTestDetector containing methods to add test results and identify flaky tests based on a threshold of allowed failures.
- Class structure:
- def addTestResult(testName: str, result: str) -> None: : Adds a test result where result is either 'pass' or 'fail'.
- def getFlakyTests(threshold: int) -> List[str]: : Returns a list of test names flagged as flaky if they exceed the given threshold of failures.
Example 1:
Input: detector = FlakyTestDetector(); detector.addTestResult('testA', 'fail'); detector.addTestResult('testA', 'pass'); detector.addTestResult('testA', 'fail'); detector.getFlakyTests(1)
Output: ['testA']
Explanation: 'testA' failed twice out of the last three executions. It is considered flaky.
Constraints:
-
1 <= testName.length <= 100
-
threshold > 0`.

Related Microsoft QA Engineer interview prep

Start practicing Microsoft questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free