Sharing my recent interview experience with Microsoft (December 10, 2024)
Round 1: Algorithm and Data Structures Assessment
Question 1: You are given a coin worth $N. A special bank accepts this coin and returns three coins with values N/2, N/3, and N/4. For example, if you give them a coin worth $100, they will return you coins worth 50, 33, and 25, totaling $108. Given a coin worth $N, write a recursive function to calculate the maximum amount of money you can make through these exchanges.
Question 2: You are given two numbers, A and B. Represent the fraction A/B as a string in the "numerator/denominator" format.
Round 2: Java and System Design
Question 1: Implement a multi-threaded program in Java that prints odd and even numbers alternatively. Each number should be printed by a separate thread.
Question 2: Explain and implement a ThreadPoolExecutor in Java. Discuss its use cases and advantages.
Question 3: Explain how a HashMap and HashSet work in Java. Discuss their internal mechanisms and common use cases.
Question 4: Answer theoretical questions related to exceptions handling, Java collections, and annotations. Provide examples where applicable.
Question 5: Explain the working of Java's Garbage Collection (GC) mechanism and how it manages memory. Discuss heap memory analysis techniques.
Round 3: Hiring Manager and Software Design
In this round, the hiring manager will focus on understanding your current role, your areas of expertise, and your passion for work. You'll also discuss the kind of work Microsoft is involved in. Additionally, you may be asked the following questions:
Question 1: Can you explain the Singleton and Factory design patterns in Java? Provide real-world scenarios where these patterns are useful.
Question 2: Share your experiences and insights from your current organization. What type of work do you enjoy the most, and how do you envision contributing to Microsoft?
Question 3: Discuss your familiarity with microsoft software engineering projects and initiatives.
Some situation based behavioural questions were asked. I can remember some of them.
How you will handle the requirements that came at very last moment and needs to be delivered quickly.
Overall, the interview process aims to assess your technical skills, problem-solving abilities, Java knowledge, and your fit for the role and the organization. It is expected to take approximately 15 days to complete the interview process.