Software Engineer 2 UI Interview at Microsoft
Tags: frontend, javascript, interview, webdev
Published: 2020-10-17 07:55:08

---
title: Software Engineer 2 UI Interview at Microsoft
published: true
description: Frontend Developer Interview at Microsoft
tags: frontend, javascript, interview, webdev
---


Hello there,

For those who don't know me, do check out my [website](https://www.dhilipkmr.dev/) and my other [blogs](http://dev.to/dhilipkmr).

 I recently accepted Microsoft's offer for Software Engineer II at IDC, Bangalore. I realized a blog about this might help a few :)

![](https://dev-to-uploads.s3.amazonaws.com/i/oxtv75t5p77g3ylxdtak.gif)

In this post, I'll take you through my preparation, strategies, interview rounds, and things to look out for in each round. This will be in a Q&A format.

Disclaimer:
The following incidents are completely based on my view and what I have observed from my experience and it might vary from one individual to the other.

### Firstly, why do I have to write this in a blog?
 - When I got called for the interviews, I was searching all over the Internet to find out how interviews are done for the Frontend domain in Microsoft. I found very less content. And I had to go for the interview without any knowledge about rounds. So I thought of letting others know more about the rounds so that they are prepared.
 - When I posted my Job switch news on LinkedIn, surprisingly I got numerous chat requests where people asked me about my preparation and my interview experience.

### How did I apply?
  I had my profile listed in [Instahyre](https://www.instahyre.com), a famous job search portal in India, with the `Actively looking for opportunities` option enabled. One evening, I got a call from a person (working in a third-party headhunting firm on behalf of Microsoft) asking if I am interested in the role. And it began...

### How did I Prepare?
  I was attending a few other interviews prior to the above interview call. So when I got the call I was almost in a good position to attend the interview. As it was for the Frontend Engineer role I brushed up on JS basics, Web Performances, my current projects, and Leetcode. I did about 240+ Leetcode Questions by the time I gave the Interview. (It might just be 0 for someone :P). I highly advise anyone attending FE interview at Microsoft or any top MNCs(Amazon, Google,...) and many other top Startups(Rubrik, Flipkart,...) to have enough knowledge on Data Structures and Algorithm. There is no escaping from DS & Algo as it is considered heavily to rate your problem-solving skills. Attaching my [leetcode profile](https://leetcode.com/dhilipkmr/) here for reference. Feel free to follow.

### Resources for Frontend?
- Javascript from W3 Schools, [techsith tutorials](https://www.youtube.com/user/techSithTube), You Don't Know JS
- React from [udemy](https://www.udemy.com/course/react-the-complete-guide-incl-redux/).
- [Web Fundamentals & performances](https://developers.google.com/web/fundamentals)
- Latest technology updates from Twitter.

### Do I get to know which team I am being hired before giving the interview?
  If you are part of a massive Interview Drive, you will have to wait until you meet your potential Hiring Manager(sometimes even the one taking your Managerial Round won't be your actual HM). However, you might get to know the product in which you will be working on before the interview(Azure, Office365, etc).

### How do I know which Level I am being hired for?
  From what I have observed and read about, Microsoft does not assign you a Level based on your years of experience. I have seen a lot of posts in blind, leetcode, etc where 8YOE are given L61 and 4YOE are given L62. So, it all boils down to **how well you performed in your interview.**

### Okay enough, tell me about the rounds already!
Due to COVID-19, all interviews happened virtually through `Microsoft Teams`.

### Round 1 (Machine Coding): (2 hours)
As a Frontend Engineer, I was expected to start with a machine coding round where I was given a problem statement which I have to complete in 2 hours. If you have any doubts regarding the problem you can ask the interviewer. You might be given a zip containing initial boilerplate.

Example Questions:

```
 - Design an Email Client like MS Outlook.
 - Create a chat interface like MS teams.
 - Create a Notification interface like MS teams.

```

Things to look out for:

- Don't jump to writing answers unless you understand the question thoroughly.
- There could be few jargons which could be part of your question, make sure you ask clarifying questions and don't assume anything :)
- Write Semantic HTML with proper tagging (Don't make everything a `div`)**!!! Important**
- Know the tradeoffs, if you have to dynamically create a complex DOM tree, using JS APIs like `document.createElement()` then it would consume a hell lot of time. So think if that suits you or you should go with `innerHTML` approach.
- Understand `flexbox` or `grid` as they will come in handy in creating a responsive layout.
- Try using the latest ES6, ES2020 concepts, it is a platform to show that you are aware of the latest updates.
- Incrementally build your application and make sure to submit the working code :P


### Round 2 (Javascript): (1 hour)
Here I was evaluated on my Javascript knowledge.

For the first 10 minutes, from the code that I wrote earlier in my machine coding round, I was asked to discuss the following:
 - Why did I choose a particular approach?
 - What other alternatives are there?
 - What are the tradeoffs I chose to complete the problem at a specified time?
 - If I were to get more time, what would I do better?

Review your code and prepare for these questions before you enter the next round.

After this, it was full-on javascript questions, where I was asked to write a polyfill for some js APIs introduced in ES6 or ES2020. For me, it was to write a `Promise polyfill`.

Adding to the above question I was asked to implement the following.

```
Promise based memoization with a given cache size behaving
as an LRU cache with an expiry time and auto cache burst

``` 

Here I was grilled on my JS knowledge on async, promises, higher-order components, etc.


### Round 3 (Design / HLD + LLD /): (1 hour)

In this round I was asked to design a ChessBoard, as I don't know how to play chess😅😅, I told the interviewer and he modified the question to,

```
Design Snakes and ladders game

```
 I was asked to write the Classes and methods involved in each one of them. Not expected to run it in the console. It happened over the VS code editor.

Expectations on this round were:
- How good am I in identifying the Top-level classes and if I am able to breakdown the tasks into small meaningful chunks.
- What is the overall Data structure that I am using to store the data?
- How readable is the code?
- Am I good at identifying the corner cases?
- How scalable the architecture I used will be?


### Round 4 (PSDS) : (1 hour)
This is a problem-solving round. To evaluate my Problem-solving skills and how quickly am I able to achieve an optimized solution.

Here I was asked 2 questions:
 - Find the starting and ending indices of all repeated characters from a string.

```js
const input =“hellooooloo”;
const op = getRepeated(input);
console.log(op) // [(2,3), (4,7), (9,10)]

```

- The next problem is a `String Backtracking` approach, an extension of the previous one, where I have to check if I can form a word in the dictionary by removing one or more repeated letters.

```js
const dictionary = {
    'hellolo': true
};
const input = “hellooooloo”;
const op = canBeFormed(input);
console.log(op) // true,
// because by deleting the repeated characters of `o` we can form `hellolo` which is present in the dictionary

```


### Round 5 (Hiring Manager): (typically 45 mins - 1 hour)
I was asked questions on multiple fronts like Javascript, performances, and Problem-solving. It was like a combination of all the above rounds.

 - I was given a snippet in JS and asked about its output and how does it work under the hood. (Macro and micro queues related).
 - What are the strategies that I follow to increase the speed of any website?
 - Web vitals and how they are measured?
 - Browser Execution of Document.
 - Problem: `Space Separator, another string based backtracking question.`

```js

const dict = {
 hi: true
 hello: true,
 world: true
};

const str = spaceSeparator('helloworld'); // "hello world"
const str2 = spaceSeparator('helloworldhi'); // "hello world hi"
const str2 = spaceSeparator('helloworldh'); // "" , as h is not present in dict we throw "" as output
```


The code I wrote here for the problem was asked to run on the browser console after completion, to verify its correctness.


### Round 6 (As Appropriate): (1 hour)

This is the final round and it is **important** to get a hire in this round too. It is not a gimmick, as I have read posts where people got rejected in this round. 

Here I interacted with an Interviewer who was at a GM/Partner level in Microsoft. This round could be as simple as knowing about your interests and your past project to Complex Data structures. And for me its the latter :P

It started slowly with an introduction and my background and landed on a data structure question. I was asked to write the following program.

This was an interesting problem and I encountered this for the first time in this interview.

```
Consider you are getting millions of tweets per second,
you have to alert whenever a particular word is repeated 
billion times in any 1 hour time frame (moving window)
```

- I had to decide the Data structure for each tweet.
- I had to decide how I want to store it in my memory.
- I had to come up with an optimal solution.


### What Next?
 
Now you wait!!!

Microsoft has a lot of applicants for each role, so before they confirm that you are selected they do make sure they have evaluated other candidates who might be a better fit. So, you will have to wait for them to come back.

It took me 2 weeks to know that I was selected. And releasing the offer took another week. And you will have 5 days to accept the offer.


Overall I would say the entire journey was smooth and I'll be part of MicrosoftTeams Development. An enterprise chat application used by millions of people.

So excited!!!! Wish me luck!!!🤩 🥳

![](https://media.giphy.com/media/H1vjPkqdL7liL6O7Bj/giphy-downsized.gif)

Don't forget to follow me!😄

If you have more questions add it over the comments section I'll try giving the input if I know the answers😛

My [Website](https://www.dhilipkmr.dev), [blogs](https://dev.to/dhilipkmr), and [Twitter](https://twitter.com/dhilipkmr_)

That's all Folks!!!