First things first. Thank you to everyone for they posts and motivation to keep trying and trying, I have to say that this is not the first big tech company I apply to, I have been rejected this year by Facebook, Google, and Amazon, so you can imagine I was not that confident with myself and that is the reason that, as soon as I was contacted by Microsoft, I ended up buying Premium and crunched problems.
I started the process end of July when I applied via the Microsoft jobs page and was contacted by a recruiter around two weeks later regarding a first phone screening where we just talked about the role and teams that I would be applying to. After the call I got an email that I would be receiving an Online Assessment [OA]. Two days later I got the OA for me to complete in the next 4 days, at that point I had solved merely 30 problems [22 Medium, 4 Easy, 4 Hard] and decided to take on the exam as I wanted to get this done.
As a side note, I will be giving recommendations on what I did but will not provide direct links to the coding challenges.
Online Assessment. [90 Minutes] Preparation for this was previously mentioned, I was on 30 problems focusing mainly on Medium problems. I had tried one OA before with Amazon so I knew what I was getting myself into. This OA was easy enough for 90 minutes. They were three coding challenges in total.
Take a look at of all 3 challenges I got one of them was listed there and fortunately I had done it prior to the assessment so I was aware of the solution.
6 days after the assessment I got an email from my recruiter that I did really good in the OA and were moving to the virtual onsite interview taking place only 6 days after the email so I had next to no time to prepare.
Preparation for the Virtual Onsite I got notified on a Friday night that they were moving forward with a series of virtual onsite and it would be taking place on Thursday the next week. I crunched the entire weekend and most of the week prior to the interview rounds, I actually struggled to allocate time for work and preparing so I ended up having a couple of late nights but I do highly recommend to sleep well everyday prior to the interview so you can be aware and agile in your thinking processes. The recruiter told me that the onsite was going to be three rounds.
Prior to the Virtual Onsite I had 106 Problems [25 Easy, 60 Medium, 21 Hard]
Virtual Onsite The day finally came and I had a terrible night sleep. I do not consider myself the best coder whatsoever but I really tricked my mind into doing this. Grabbing a cup of coffee just prior to the interview to be as aware as possible really helped a lot, I have to mention that I only had one prior onsite experience 4 years ago, other opportunities I was discarded on the first round interview phase.
For the onsite I followed a basic thought process for solving the problem:
Describe the problem as broadly as possible with a couple of silent moments for interviewer comments that can point you to the right direction. 1.1. If the interviewer provides feedback adjust your thinking to that route, she/he is telling you that for a reason and explain again to see if you are understanding it correctly.
If problem is ambiguous ask for details, inputs/outputs, examples and possible hints if possible.
Propose a verbal solution, wether it being inefficient or not, also mention that if you know there is a better way of doing it, specially performance and space wise.
Code your solution and be time aware, if time is not enough mention the next steps verbally and how you would optimize it and possible test it. BE AWARE OF EDGE CASES.
I will not detail on the problems as I signed an NDA and do not want to get into trouble.
First Round: For this round I was presented with a String manipulation problem, Hard level, at first I tried to solve it with brute force and then move forward with a HashSet implementation which was the correct approach. Interaction with the interviewer was key for solving this problem. TALK, SPEAK YOUR MIND AND INTERACT WITH THE INTERVIEWER.
Second Round: Behavioural and HLD with the Hiring Manager and an interviewer being trained for virtual onsite rounds. For this one I was asked about prior experience and projects that were extra to my work that helped others. After mentioning a side-project I was asked to create the System Diagram for this to be developed.
During the System Diagram I was asked detailed questions on why this technology, how did I overcome a technical limitation.
After the HLD we moved to behavioral on situations I have faced with team members, projects, and other types of times where we faced tough situations and I had to take leadership. Please take a look at the Growth Mindset in Microsoft as preparing your experience paired with Microsoft's ideology helps a lot for them to see you are the right candidate. Again talk, speak your mind, ask questions, be proactive.
Onsite was done. I was releived, anxious and nervous for my performance.
Took them one day to get back to me and fortunately enough I did great and cleared the interview process. Tough one but enjoyed it.
Currently I am negotiating the offer and hopefully I would be joining Microsoft next month! :D!
Recommendations Crunching is not really my suggestion here. I had next to no time to take my mindset and prepare for the interview. I would recommend to get into Premium and start solving problems asked by the company you are applying, but not just solve it, understand it, try to understand the optimal solution. Even if you do not solve it yourself it will help you train your mind to know what you are against and prepare your thinking process to go that route.
I do not consider myself a star coder or a competitive programmer at all. But be approachable, inspire the trust on not being afraid of being wrong and enjoying being corrected and learning more. To be completely honest I believe my willingness to learn and personality helped a lot clear the interview rounds.
You can do it!! If I could do it, you can do it!
Thanks everyone for the help and for creating this awesome platform and enabling me to achieve a dream.