loading...
Cover image for Software Engineer 2 UI Interview at Microsoft

Software Engineer 2 UI Interview at Microsoft

dhilipkmr profile image Dhilip kumar ใƒป7 min read

Hello there,

For those who don't know me, do check out my website and my other blogs.

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

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, 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 here for reference. Feel free to follow.

Resources for Frontend?

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.

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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.
const input =โ€œhelloooolooโ€;
const op = getRepeated(input);
console.log(op) // [(2,3), (4,7), (9,10)]

Enter fullscreen mode Exit fullscreen mode
  • 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.
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

Enter fullscreen mode Exit fullscreen mode

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.

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode
  • 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 (Internal Chat application) building web and desktop client which is used by millions of people.

So excited!!!! Wish me luck!!!๐Ÿคฉ ๐Ÿฅณ

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, blogs, and Twitter

That's all Folks!!!

Posted on by:

dhilipkmr profile

Dhilip kumar

@dhilipkmr

Javascript | React | Preact | Tailwind | Blogger |

Discussion

pic
Editor guide
 

Are there any restrictions in machine coding round? Like you have to use pure JavaScript only etc. Or do they allow using any FE frameworks also?

 

Yes, ๐Ÿ˜…Vanilla JavaScript and No Css Frameworks allowed!!!

 

Thanks. Great article!!

 

Do you need to create backend as well or you will get json response for mail/chat application?

You don't have to create backend! The package you receive will have a dummy function which keeps giving you data in a regular interval, all you need to do it listen to it.

Basically you need to call the api, create skeleton and add filters on Json , right?

On those lines along with the constraints added in the requirements

 

Congrats sir,
I wanted to know if they will let you solve the DS algo problems in javascript or its benificial to go for python,java or c++
And which language did you choose to practice ds-algo problems on leecode?
I am a begineer and only know javascript so should I continue to practice ds in javascript or do I have to learn python/java for that.
Thank you for your time!

 

As the role was for UI Engineer, it is best that you use javascript to code! I coded in javascript and practised in leetcode in Js

 

Thank you so much sir! and again congratulation on your new job ๐Ÿ˜Š

Thanks man ๐Ÿค“

 

Could you please tell me about what to pursue as formal education because I am in 11th and I too want to pursue web development in the future. BTW I liked your article and experience :) !!

 

Pursuing BE in Computer science and engineering gave me a better understanding about computer software, its internals and mainly data structures & algo. If you want to pursue formal education + web you could do the same! However there are people who are not even attending colleges and getting enough knowledge abt web through bootcamps and their own projects and are getting placed in MNCs.

 

Thank you Dhilip!! I was in a big confusion about this but finally you helped me!! :)

 

Were you allowed to google stuff?

 

In round 1 yes! But not in the other rounds!

 

How much will they pay you?

 

As per the "Industry standards" ๐Ÿ˜›

 
 

Congratulations on your offer :)
Can you please tell how did you write polyfill for a promise? I tried implementing it but not able to succeed?

 

Sure I'll check if I have a copy and ll share it across