Hi everyone, I want to share my Microsoft virtual interview experience. It consisted of 6 parts: Phone Screen, Codility Test, Algorithms and Data Structures, System Design, Software Design, Behavioral Questions.
Phone Screen - The interview was about 30 minutes, mostly an introductory call. The interviewer asked my questions about why did I want to start work with Microsoft, what was my goal and how I would achieve it in Microsoft, why did I choose especially Microsoft and not other else. Finally, the interviewer sent me a Codility link, 3 problems and 45 minutes for each one.
Codility Test - There were 3 straight algorithmic problems, considering the levels, I would say that the difficulty of those was: easy, easy/medium, medium/hard. My suggestion is to write readable code because code might be reviewed by interviewers.
Algorithms and Data Structures (45 min) - The problem was finding and remove a cycle in linked list. I suggest that before start coding you should analyze the given problem, ask questions to the interviewer if the statement is vague. It will be perfect if you figure out several solutions for a given problem and discuss the pros and cons of each of them. I think that they are interested in your analysis and collaboration skills as well as coding.
System Design (45 min) - The problem was to design a bug reporting system. As far as I know, there is no one correct approach to solve any system design question. It is up to you how do you deal with a given problem and whether you go into too much detail or not. Be prepared for the problem statement might be vague and you have to ask many questions to the interviewer in order to fulfill the requirements. Keep in mind that you have only 45 minutes and you should ask the interviewer about the part of the problem that you should be concertized, no one expects that you will design a system that will work in production.
Software Design (45 min) - It was the best interview that I have ever had before. The interviewer shared with me a code and asked me how did I refactor it, what was the problematic parts and why, how did I make it testable and so on. After discussion, I refactored code using multiple design patterns and clean code principles. I think that for this interview good understanding of solid and clean code principles is necessary.
Behavioral Interview (45 min) - I would say that it was a little bit difficult rather than a classic behavioral interview. Without preparation, I would fail. I think that this topic must be taken very seriously and devote a reasonable time to prepare. I suggest preparing some stories about your carrier and practice a lot to answer common behavioral interview questions. Do not try to memorize as many answers as possible, because it is not natural and the interviewer will see that. Do not expect "where do you see yourself in 5 years" and this kind of nonsense questions and be sincere.