Jan 25, 2022 - 14 min read

Crystal Song

Aiming for a career at Microsoft is a worthy challenge given the company’s excellent track record for technological innovation, generous compensation packages, and flexible work-life balance.

As the largest and arguably most influential software company in the world, prospective applicants may find the technical interview process daunting. However, familiarizing yourself with the type of technical questions that will be presented to you and learning to recognize coding patterns will help you navigate these interviews with greater confidence.

We’ll start with an introduction to 26 common coding questions, move on to an overview of the complete interview process for software engineers, move on to frequently asked technical questions, and then wrap up with additional guidance and resources to maximize your chances of receiving an offer.

**Topics covered**:

As you go over each question, get into the habit of diagramming the problem before jumping straight to writing code. Breaking down a problem first gives you a chance to ask questions and get any important information you need to come up with the best possible solution. Take a moment to explain your thought process to yourself as if you were the interviewer.

Take some time to reflect on the efficiency of your solution, and try to see if you can make your answer more elegant by simplifying it.

Lastly, always remember to validate your solutions.

Alright, let’s dive in!

**Problem Statement**: Given an array of positive numbers ranging from 1 to `n`

, such that all numbers from 1 to `n`

are present except one number `x`

, find `x`

. Assume the input array is unsorted.

n = 8; x = 6

**Problem Statement**: Given an array of integers and a value, determine if there are any two integers in the array whose sum is equal to the given value. Return true if the sum exists, and false if it does not. Consider the following array and its target sums:

**Problem Statement**: Given a two-dimensional array, if any element within is zero, make its whole row and column zero. Consider the matrix below.

Given matrix

There are two zeros in the input matrix at positions (1,1) and (2,3). The output of this should be a matrix in which the first and second rows become zero and the first and third columns become zero. Below is the expected output matrix.

Expected output

**Problem Statement**: Given the head pointers of two linked lists where each linked list represents an integer number (each node is a digit), add them and return the resulting linked list. In the example below, the first node in a list represents the least significant digit.

**Problem Statement**: You are given a linked list where the node has two pointers. The first is the regular `next`

pointer. The second pointer is called `arbitrary_pointer`

and it can point to any node in the linked list.

Here, deep copy means that any operations on the original list (inserting, modifying, and removing) should not affect the copied list.

Here’s an example of a linked list with arbitrary pointers connected.

**Problem Statement**: Write a function that takes two sorted linked lists and merges them. The function should return a single, sorted list made from splicing the nodes of the first two lists together.

For example, if the first linked list is `1 -> 2 -> 4`

and the second linked list is `3 -> 5 -> 6`

, then the output would be `1 -> 2 -> 3 -> 4 -> 5 -> 6`

**Problem Statement**: Given the root of a binary tree, display the node values at each level.

The level order traversal for this binary tree looks like this:

```
100
50, 20
25, 75, 350
```

**Problem Statement**: Connect the sibling pointer to the next node in the same level. The last node in each level should point to the first node of the next level in the tree.

**Problem Statement**: Given a binary tree, write a program that will return true if the binary tree is a mirror image of itself, and false if it is not.

The correct output given this binary tree would be `true`

because it is symmetrical.

**Problem Statement**: Reverse the order of words in a given sentence.

**Example**:
`"sphinx of black quartz judge my vow"`

should output as `"vow my judge quartz black of sphinx"`

**Problem Statement:** Given a string, find all non-single letter substrings that are palindromes.

**Example:**

An string input of `"poppopo"`

would return `"pop"`

, `"opo"`

, `"oppo"`

, and `"poppop"`

.

**Problem Statement**: Given a dictionary of words and a large input string, find whether or not the input string can be completely segmented into the words of that dictionary.

**Problem Statement**: Given a list of daily stock prices (integers for simplicity), return the buy and sell prices that will maximize the single buy/sell profit. If you can’t make any profit, try to minimize the loss.

For the below examples, buy (orange) and sell (green) prices for making a maximum profit are highlighted.

**Problem Statement**: Given a one-dimensional integer array `a`

of length `n`

, find the length of the longest subsequence that increases before decreasing.

**Problem Statement**: Given an `n*n`

matrix where all numbers are distinct, find the longest path starting from any cell such that all cells along the path increase in order by 1.

**Problem Statement**: Given an array of positive numbers ranging from `1`

to `n`

, such that all numbers from `1`

to `n `

are present except one number `x`

, find `x`

.

The input array is not sorted.

n = 8; x = 6

**Problem Statement**: Given a positive integer, `target`

, print all possible combinations of positive integers that sum up to the `target`

number.

For example, if we are given input ‘5’, these are the possible sum combinations.

```
1, 4
2, 3
1, 1, 3
1, 2, 2
1, 1, 1, 2
1, 1, 1, 1, 1
```

The output will be in the form of a list of lists or an array of arrays. Each element in the list will be another list containing a possible sum combination.

`kth`

permutation**Problem Statement**: Given a set of `n`

variables, find their `kth`

permutation. Consider the following set of variables:

**Problem Statement**: Given a text and a pattern, determine if the pattern matches the text completely or not at all using regular expression matching. Assume the pattern contains only two operators: `.`

and `*`

. Operator `*`

in the pattern means that the character preceding `*`

may not appear or may appear any number of times in the text. Operator `.`

matches with any character in the text exactly once.

Below is an example of a text and its matching and non-matching patterns.

**Problem Statement**: Consider a rat placed in a square `n*n`

matrix at position `(0, 0)`

. Find all possible paths the rat can take to reach its destination `(N-1, N-1)`

from its starting position.

The rat can move vertically and horizontally. Cells with a value of 1 can be traversed, while cells with a value of 0 cannot. The rat cannot visit a cell more than once.

**Problem Statement**: Given a square matrix grid of `9*9`

and configured to represent an incomplete Sudoku puzzle, find a solution that returns a true or false value depending on whether or not the Sudoku can be completed. If a solution is possible, your solution must also return the completed grid.

**Problem Statement**: Given the root node of a directed graph, clone this graph by creating its deep copy so that the cloned graph has the same vertices and edges as the original graph.

**Problem Statement**: Starting from the source node, traverse a given graph breadthwise to find the distance between the source node and node `n`

.

**Problem Statement**: Given a graph `n*n`

with each cell containing a value of `0`

, `1`

, `2`

, or `3`

, return a `true`

or `false`

value depending on whether or not one can find a path from the source node to the destination node. Each graph will have one source node and one destination node. The graph can be traversed horizontally and vertically.

The cell containing a value of `0`

is the source node.
A value of `1`

represents a wall; this node is impassable.
A value of `2`

represents a blank cell that can be traversed.
A value of `3`

represents the destination node.

**Problem Statement**: Given `n`

people on a square grid, find the point that requires the least total distance covered by all people to meet at that point.

**Problem Statement**:
We are given a two-dimensional array where all elements in any individual row or column are sorted. In such a matrix, we have to search or find the position of a given key.

**Data structures**: Arrays, strings, queues, lists, linked lists, stacks, trees, heaps, hash tables, hash maps, hash sets, graphs, and more.**Algorithms**: Breadth-first search, depth-first search, binary search, quicksort, mergesort, dynamic programming, divide-and-conquer, and more.

If you have over 3 years of experience developing software, it is highly likely that you will be asked system design questions, which can be more open-ended.

To get an idea of what to expect from a system design interview, check out the Top 10 system design interview questions for software engineers.

The timeline for the entire process (from submitting your resume to receiving a job offer) takes approximately 1-2 months You are encouraged to use whatever mainstream programming language (e.g., C/C++ or Java) that you are most comfortable with to solve the technical questions.

**Prescreening**: A recruiter contacts you via email to schedule a 45-minute phone call. They will spend 15 minutes going over your resume and asking behavioral questions. You have the remaining 30 minutes to solve a coding question related to algorithms and data structures in a shared editor.**Phone interview**: The recruiter contacts you within two weeks to schedule a phone interview with a senior developer or engineering manager. Information about potential topics that may be covered during this phone interview will be provided in advance.**On-site or virtual interview**: After passing the phone interview, you will be invited to participate in 4-5 rounds of interviews either in-person at the Microsoft campus or virtually. Each round is an hour long and will be conducted by two members of the team you’re looking to join. These rounds will have both behavioral and technical questions.**Lunch interview**: Halfway through the rounds, you will be taken out to lunch for a more casual conversation. This will take place on the Microsoft campus, or off-campus at a restaurant.**Final interview of the day**: The last round will be conducted by an AS-AP (As-Appropriate) who will have the final say in hiring you.**HR interview**: The hiring manager will go over any remaining behavioral or technical questions not covered in the previous rounds of interviews, make an offer, and discuss compensation.

Microsoft develops a holistic view of you as a candidate using competency-based questioning in addition to your resume. They want candidates with strong technical skills that align well with the company values.

Corporate Values | Microsoft Definition |
---|---|

Respect | “We recognize that the thoughts, feelings, and backgrounds of others are as important as our own.” |

Integrity | “We are honest, ethical, and trustworthy.” |

Accountability | “We accept full responsibilities for our decisions, actions, and results.” |

Core Competencies | Microsoft Definition |
---|---|

Collaboration | “Communicating effectively within the team and across teams.” |

Drive for Results | “Working tenaciously to deliver on commitments, constantly seeking bigger challenges, holding yourself and others accountable.” |

Customer Focus | “Our missing at Microsoft is to empower every person and every organization to achieve more.” |

Influencing for Impact | “Successfully persuading and influencing others with effective communication.” |

Judgment | “Effectively scoping complex problems and using business acumen to make knowledge-based decisions.” |

Adaptability | “Ability to deal with ambiguous and uncertain situations or problems with agility.” |

The first thing you want to do is to make sure your resume and LinkedIn profile are up to date. Be very specific, and use deliverables and metrics whenever possible.

Next, you’ll want to look at your resume in the context of the Microsoft Core Competencies. Consider how specific projects or experiences can be tied into different Core Competencies, and update them to reflect ways in which you have prioritized these values in your work.

To fully prepare yourself for the coding interview, we strongly suggest that you take **three months** to go over technical concepts and practice solving interview questions. Using an interview prep roadmap is a great way to keep track of your progress, and break down what you need to learn.

You can use our Definitive Interview Prep Roadmap to make sure you’re hitting all of the important topics that might be covered during coding interviews.

**Week 0**- What programming language should you use?**Week 1**- Brush up on your chosen programming language.**Weeks 2 & 3**- Data structures and algorithms.**Weeks 4 & 5**- Practice simple data structures and algorithmic challenges**Weeks 6, 7 & 8**- Dive into more complex coding interview problems**Weeks 9 & 10**- System design interviews**Week 11**- OS and concurrency concepts**Week 12**- Object-oriented design interviews

Behavioral interview questions typically fall into one of three categories:

- Past experiences
- Hypothetical situations
- Values-based questions

Behavioral interviews help interviewers decide if you’re someone they would want to work with. Reflect on how you react to positive situations or conflicts in a professional setting, and be honest about your past experiences. Essentially, be your authentic self.

Don’t be afraid to bring your unique perspective to the table. Go beyond just answering questions. Really listen and respond to your interviewers. Show them that you’re engaged and tuned into the conversation you’re having with them.

The most important thing to keep in mind for any behavioral interview is that your interviewers *want* to hire you. If you’re enthusiastic about the technology you’ll be working with, don’t be afraid to show it!

If you want to brush up on behavioral interview questions, then check out How to prepare for the Behavioral Interview to learn more about what interviewers are looking for, and how you can develop the kind of structured responses that impress them.

You can also read up about the key attributes that define the culture at Microsoft.

Now that you’re more familiar with the Microsoft interview process, it’s time to make a plan and put it into action! The best candidates come **fully** prepared, so it’s important to exercise due diligence. We’ve put together an extensive course that will help you quickly identify any gaps in your knowledge, test your skills, and practice using a live, in-browser coding environment.

You can visit our Decode the Coding Interview library. The Decode series exposes you to some of the most frequently asked questions at tech companies and helps solidify your knowledge by contextualizing these problems in real-world applications.

*Happy learning!*

- Grokking Coding Interview Patterns in Java
- Grokking Coding Interview patterns in C++
- Grokking Coding Interview patterns in Python

If you like our content, consider signing up for Educative Unlimitedtoday!

WRITTEN BYCrystal Song

Join a community of more than 1.6 million readers. A free, bi-monthly email with a roundup of Educative's top articles and coding tips.