The process was very simple. It started with a phone call with a third-party recruiter.
First was an introductory call, simple and non-technical, just to verify I have the experience they are looking for.
Second call was a programming interview with one of the senior engineers (not the hiring manager). We discussed the role and experience. He asked me to write simple C-related programs on a shared screen. They weren't very tough, more like correct definition type questions.
Third, the interview was onsite with four team members. Three interviews were 30 minutes long, with one lunch interview that was 30 minutes for lunch plus 30 minutes for the interview. The first two interviews were technical in nature, focused on C programming, RTOS, and communication protocols. There were a few questions related to source control.
The third interview was 50% technical and 50% behavioral (how do you work in team environments). After every interview, your current interviewer tells the next one about your strengths and weaknesses, and also whether you are a 'HIRE' or 'NO HIRE'. Based on this, the next interviewer tailors his questions to test your strengths.
A good thing is that Microsoft wants to hire people for their strengths, and they probe you on that, so you better be good and confident. After three interviews (most of the time four), if you get a majority of 'HIRES', then they discuss whether or not to send you to the next level. This is mostly with a senior-level manager while you wait in the lobby (which I found extremely weird and insulting).
If their decision is in your favor, then you get interviewed by the last interviewer. I got the last interview, which was again 30% technical (just to test how you approach a problem) and 70% non-technical behavioral to see if you would be a good fit for Microsoft's culture.
Overall, timeline-wise, it was an extremely sluggish process. It took around 5 months from the first interview to get the offer and another 1+ month to perform the background check and get the joining date. It took over two weeks for the recruiter to tell me that I was selected, another three weeks to get the offer, another 1+ months for the background check, and finally the joining date.
So, if you have meditated your whole life and want to test your patience, apply here. I wasn't actively looking, so it kind of didn't really matter to me.
They really need to improve and be more agile in the recruitment process. That could be another reason why they are losing their employees to Amazon. Amazon has a policy to give feedback within 48 hours, and their interview process takes around 3-4 weeks of time, which is average and acceptable.
C programming, typedefs, stack, heap, RTOS, deadlock, SPI, I2C, and so on.
The following metrics were computed from 1 interview experience for the Microsoft Software/Firmware Engineer role in Redmond, Washington.
Microsoft's interview process for their Software/Firmware Engineer roles in Redmond, Washington is incredibly easy as the vast majority of engineers get an offer after going through it.
Candidates reported having very negative feelings for Microsoft's Software/Firmware Engineer interview process in Redmond, Washington.