# 59
**Role:** Software Engineer · **Level:** SDE
**Company:** [Microsoft](https://scaleengineer.com/companies/microsoft)
**Difficulty:** Medium to Hard
**Salary:** US$110000 - US$150000
**Experience:** 2 - 5
**Timeline:** ~14 days
This interview process is for a Software Engineer (SDE) role at Microsoft, specifically for the '59' internal designation. It is designed to assess a candidate's technical skills, problem-solving abilities, and cultural fit within Microsoft.
Canonical: https://scaleengineer.com/interviews/microsoft/sde-software-engineer
---
## Overall evaluation

- Technical Skills
- Communication and Attitude
- Experience and Cultural Fit

## Questions asked

- Given a binary tree, find the lowest common ancestor of two given nodes in the tree.
- Design a URL shortening service like bit.ly.
- Implement a function to reverse a linked list in place.
- Given an array of integers, find the contiguous subarray with the largest sum.
- Explain the difference between a process and a thread.
- What are the different types of SQL joins and when would you use them?
- How would you design a system to handle real-time notifications for a social media platform?
- How would you optimize a slow database query?
- What are the principles of object-oriented programming?
- Describe a challenging technical problem you faced and how you solved it.

## Preparation tips

### lists

- Master fundamental data structures (arrays, linked lists, trees, graphs, hash maps) and algorithms (sorting, searching, dynamic programming, graph traversal).
- Practice coding problems on platforms like LeetCode, HackerRank, and GeeksforGeeks, focusing on medium and hard difficulty.
- Study system design principles, including scalability, availability, reliability, and common design patterns (e.g., load balancing, caching, databases).
- Prepare for behavioral questions by reflecting on your past experiences using the STAR method (Situation, Task, Action, Result).
- Understand object-oriented programming concepts and design patterns.
- Review common interview questions for Microsoft, especially those related to the specific role and level.
- Practice explaining your thought process clearly and concisely, both verbally and through code.
- Research Microsoft's products, values, and recent news to demonstrate your interest and understanding.

### studyPlan

- {"title":"Foundational Data Structures and Algorithms","longDescription":"Weeks 1-2: Focus on core data structures like arrays, linked lists, stacks, queues, and hash maps. Practice basic algorithms such as sorting (quicksort, mergesort) and searching (binary search). Cover time and space complexity analysis.","shortDescription":"Weeks 1-2: Data Structures (Arrays, Lists, Maps) & Basic Algorithms (Sorting, Searching). Complexity Analysis."}
- {"title":"Advanced Data Structures and Algorithms","longDescription":"Weeks 3-4: Dive deeper into trees (binary trees, BSTs, AVL trees) and graphs (traversals like BFS, DFS, shortest path algorithms like Dijkstra's). Introduce dynamic programming concepts with examples.","shortDescription":"Weeks 3-4: Trees & Graphs (BFS, DFS, Dijkstra's). Dynamic Programming."}
- {"title":"System Design Fundamentals","longDescription":"Weeks 5-6: Begin system design preparation. Study concepts like scalability, availability, load balancing, caching strategies, database design (SQL vs. NoSQL), and API design. Work through common system design problems.","shortDescription":"Weeks 5-6: System Design Fundamentals (Scalability, Caching, Databases, APIs)."}
- {"title":"Object-Oriented Design","longDescription":"Week 7: Focus on object-oriented programming principles (encapsulation, inheritance, polymorphism, abstraction) and common design patterns (e.g., Singleton, Factory, Observer).","shortDescription":"Week 7: OOP Principles & Design Patterns."}
- {"title":"Behavioral Interview Preparation","longDescription":"Weeks 8-9: Prepare for behavioral interviews. Use the STAR method to structure answers for common questions about teamwork, challenges, failures, and successes. Research Microsoft's values and culture.","shortDescription":"Weeks 8-9: Behavioral Interview Prep (STAR Method), Microsoft Culture."}
- {"title":"Mock Interviews and Final Review","longDescription":"Week 10: Mock interviews. Practice coding problems and system design scenarios under timed conditions. Get feedback from peers or mentors. Review areas where you need improvement.","shortDescription":"Week 10: Mock Interviews & Final Review."}

## Location differences

- {"location":"Redmond, USA","differences":{"tips":["Familiarize yourself with common algorithms and their time/space complexity.","Practice drawing system diagrams and explaining trade-offs.","Be prepared to discuss past projects in detail, highlighting your contributions and challenges."],"interviewFocus":["Strong emphasis on data structures and algorithms, particularly tree and graph traversals.","System design questions often focus on scalability and distributed systems.","Behavioral questions may probe for experience with large-scale projects and collaboration."],"commonQuestions":["Given a binary tree, find the lowest common ancestor of two given nodes in the tree.","Design a URL shortening service like bit.ly.","Explain the difference between a process and a thread.","How would you design a system to handle real-time notifications for a social media platform?"]}}
- {"location":"Hyderabad, India","differences":{"tips":["Practice coding on a whiteboard or shared editor.","Understand fundamental database concepts and query optimization.","Be ready to articulate your thought process clearly and concisely."],"interviewFocus":["Focus on coding proficiency and problem-solving in a timed environment.","System design questions might lean towards practical application and efficiency.","Behavioral questions may assess adaptability and learning from mistakes."],"commonQuestions":["Implement a function to reverse a linked list in place.","Design a caching mechanism for a web application.","What are the different types of SQL joins and when would you use them?","How would you optimize a slow database query?"]}}
- {"location":"Dublin, Ireland","differences":{"tips":["Review core computer science concepts and design patterns.","Practice explaining system designs with clear diagrams and justifications.","Highlight instances where you've worked effectively in a team."],"interviewFocus":["Balanced assessment of algorithms, data structures, and object-oriented design principles.","System design questions may explore microservices architecture and API design.","Behavioral questions often look for collaboration skills and proactive problem-solving."],"commonQuestions":["Given an array of integers, find the contiguous subarray with the largest sum.","Design a system for managing user authentication and authorization.","Explain the concept of polymorphism in object-oriented programming.","How would you approach debugging a complex software issue?"]}}

## Round 1: Technical Coding Round 1
**Type:** Data Structures and Algorithms Interview · **Difficulty:** Medium · **Duration:** 45 min
Coding problems focusing on data structures and algorithms.
This round focuses on assessing your core data structures and algorithms knowledge. You will be presented with one or two coding problems, typically involving arrays, linked lists, trees, or graphs. The interviewer will evaluate your ability to analyze the problem, devise an efficient solution, write clean and correct code, and explain your approach clearly. Expect to discuss time and space complexity.
**Interviewers look for:** A systematic approach to problem-solving.; Proficiency in coding and debugging.; Understanding of data structures and algorithms.; Clear communication of thought process.
**Evaluation criteria:** Correctness of the solution; Efficiency of the solution (time and space complexity); Code quality and readability; Problem-solving approach; Ability to communicate the solution
**Common rejection reasons:** Inability to solve coding problems within the given time.; Poor understanding of fundamental data structures and algorithms.; Lack of clarity in explaining the solution.; Inefficient or incorrect code.
## Questions

- Given an array of integers, find the contiguous subarray with the largest sum.
- Implement a function to reverse a linked list in place.

## Preparation tips

- Practice coding on a whiteboard or a shared editor.
- Focus on understanding the underlying algorithms and data structures.
- Be prepared to explain your thought process step-by-step.
- Consider edge cases and test your solution thoroughly.

## Round 2: System Design Round
**Type:** System Design Interview · **Difficulty:** Hard · **Duration:** 60 min
Design a scalable software system.
This round evaluates your ability to design scalable, reliable, and maintainable software systems. You'll be given an open-ended problem, such as designing a URL shortener or a social media feed. The interviewer will assess your understanding of system architecture, distributed systems, databases, caching, and other relevant technologies. Be prepared to discuss trade-offs and justify your design decisions.
**Interviewers look for:** Ability to design complex systems from scratch.; Understanding of distributed systems principles.; Pragmatic approach to problem-solving.; Clear communication of design choices and trade-offs.
**Evaluation criteria:** System design approach; Scalability and performance considerations; Reliability and availability; Trade-off analysis; Understanding of various system components (databases, caches, load balancers)
**Common rejection reasons:** Inability to design a scalable and robust system.; Lack of understanding of distributed systems concepts.; Poor trade-off analysis.; Failure to consider edge cases and failure scenarios.
## Questions

- Design a URL shortening service like bit.ly.
- How would you design a system to handle real-time notifications for a social media platform?

## Preparation tips

- Study common system design patterns and architectures.
- Practice designing systems for scale and high availability.
- Be prepared to draw diagrams and explain your design verbally.
- Consider different components like databases, caches, message queues, and load balancers.

## Round 3: Behavioral and Managerial Round
**Type:** Behavioral Interview · **Difficulty:** Medium · **Duration:** 45 min
Behavioral questions assessing teamwork, problem-solving, and cultural fit.
This round focuses on your behavioral and cultural fit. You'll be asked questions about your past experiences, teamwork, handling challenges, and career aspirations. Use the STAR method (Situation, Task, Action, Result) to provide specific and concise answers. The interviewer wants to understand how you work, how you collaborate, and whether you align with Microsoft's culture.
**Interviewers look for:** Evidence of collaboration and teamwork.; Ability to learn from mistakes and challenges.; Proactive problem-solving.; Alignment with Microsoft's mission and values.
**Evaluation criteria:** Communication skills; Teamwork and collaboration; Problem-solving approach in past experiences; Adaptability and learning; Cultural fit with Microsoft values
**Common rejection reasons:** Lack of clear communication.; Inability to provide specific examples.; Negative attitude or lack of enthusiasm.; Poor alignment with company values.; Lack of self-awareness.
## Questions

- Describe a time you had to work with a difficult teammate. How did you handle it?
- Tell me about a project you are particularly proud of. What was your role and what were the key challenges?
- How do you stay updated with new technologies?

## Preparation tips

- Prepare specific examples using the STAR method.
- Reflect on your strengths, weaknesses, and career goals.
- Research Microsoft's values and culture.
- Be honest, enthusiastic, and professional.

## Round 4: Technical Deep Dive Round
**Type:** Technical Interview · **Difficulty:** Medium · **Duration:** 45 min
In-depth technical questions on CS fundamentals and relevant technologies.
This round might involve more in-depth technical questions, potentially covering specific technologies relevant to the team or role. It could include debugging scenarios, questions about operating systems, databases, networking, or specific programming language features. The goal is to assess the breadth and depth of your technical expertise.
**Interviewers look for:** Solid understanding of computer science fundamentals.; Proficiency in at least one programming language.; Ability to debug code effectively.; Clear explanation of technical concepts.
**Evaluation criteria:** Depth of technical knowledge; Understanding of programming languages and paradigms; Debugging skills; Ability to explain technical concepts
**Common rejection reasons:** Fundamental misunderstanding of core CS concepts.; Inability to articulate technical concepts clearly.; Lack of depth in specific technical areas relevant to the role.; Poor debugging skills.
## Questions

- Explain the difference between a process and a thread.
- What are the different types of SQL joins and when would you use them?
- How would you approach debugging a complex software issue?

## Preparation tips

- Review fundamental computer science topics.
- Brush up on the programming languages and technologies listed in the job description.
- Practice debugging common programming errors.
- Be prepared to explain technical concepts in detail.
