Microsoft SDE Intern Interview Experience
💼 LTIMindtree Interview Experience (On-Campus) | Fresher | 2026
Salesforce SMTS | Interview Experience | Rejected
JPMC | SDE2 (Associate) - Java Backend - Interview Experience + Compensation
Microsoft - SDE2 - Coding Round
ThoughtWorks | Senior Consultant | Gurugram | July 2023 [Offer]
Summary
I interviewed for a Senior Consultant position at ThoughtWorks in Gurugram, undergoing a multi-stage process that included code pairing, technical assessments, leadership principles, and a unique social change round. Despite an initial setback in the first round, I was given a second chance, successfully navigated all stages, and ultimately received an offer.
Full Experience
My interview journey with ThoughtWorks for a Senior Consultant role, based in Gurugram, began in July 2023. At the time, I was an SDE3 at HashedIn Technologies with 5 years of experience.
ThoughtWorks Interview Pattern
ThoughtWorks has a distinctive interview pattern, typically starting with a Code Pairing interview, followed by a Technical interview, then a Leadership Principles interview (exclusive to Senior roles), and finally, a Social Change round.
Round 1 - Code Pairing - LLD (90 min)
Prior to this round, I received a code repository link. The expectation was to thoroughly review the repository, noting down observations and potential improvement areas for discussion. This usually helps in establishing a starting point for the interview.
First Attempt:
- The round started with my introduction and an overview of my current project.
- The interviewers then presented a user story for implementation:
DISPLAY COST OF LAST WEEK STORAGE
Description
As an electricity consumer, I want to be able to view my usage cost of the last week so that I can monitor my spending
Acceptance Criteria:
- Given I have a smart meter ID with price plan attached to it and usage data stored, when I request the usage cost then I am shown the correct cost of last week's usage
- Given I have a smart meter ID without a price plan attached to it and usage data stored, when I request the usage cost then an error message is displayed
How to calculate usage cost
- Unit of meter readings : kW (KilloWatt)
- Unit of Time : Hour (h)
- Unit of Energy Consumed : kW x Hour = kWh
- Unit of Tariff : $ per kWh (ex 0.2 $ per kWh)
To calculate the usage cost for a duration (D) in which lets assume we have captured N electricity readings (er1,er2,er3....erN)
Average reading in KW = (er1.reading + er2.reading + ..... erN.Reading)/N
Usage time in hours = Duration(D) in hours
Energy consumed in kWh = average reading x usage time
Cost = tariff unit prices x energy consumed - I wanted to discuss my observations first to align with the existing codebase and justify my implementation decisions. However, the panelists preferred not to discuss them.
- Since I was working on a codebase that already had flaws, some of my decisions were questioned. It felt like the panelists had a particular solution in mind that they weren't able to articulate clearly as a real situation or issue.
- Unfortunately, I did not get selected after this round. However, the HR, with whom I had a positive experience and received an offer a year prior, scheduled another attempt for me.
Second Attempt:
- Similar to the first, this attempt also started with an introduction and an overview of my current project.
- The interviewers provided a new user story to implement:
As an electricity consumer I want to view the usage of my gas and electricity separately so that I can decide if separate tariffs for each type of energy will save me money
Acceptance Criteria:
Given I have a smart meter ID when I connect and then I send electricity usage data and then I send no gas usage data then no error message is shown
Given I have a smart meter ID when I connect and then I send gas usage data and then I send no electricity usage data then no error message is shown
Given I have a smart meter ID when I connect and then I send electricity usage data and then I send gas usage data then the usage data for each is collated
Given I have a smart meter ID when I have sent my usage data and my tariff then I am able to be shown the separate usage for gas and electricity I have sent for the past week
Given I have a smart meter ID when have sent my usage data and my tariff then I can view the separate cost of the gas and electricity usage I have sent for the past week - This time, we had a very healthy discussion about my observations. We collaborated on implementing the user story and evolving the codebase's design, focusing on SOLID principles and Design Patterns.
- The panelists made it clear they don't expect a complete user-story implementation, but rather assess my thought process, coding style, and pair-programming abilities.
- I received positive feedback for this attempt, and the HR scheduled the next round.
Round 2 - Technical (90 min)
- This round began with my introduction.
- I was asked several questions on Java basics, including Java 17 DateTime API vs Java 8, Java 8 functional interfaces and lambdas, Spring IOC container, and the usage of the
@Importannotation for dependency injection, along with other Spring Boot and Java topics. - Following this, we extensively discussed my current project: its overview, the problem it solves, its architecture, and functionalities. I was in the driver's seat, explaining details and answering deeper questions about my development contributions, choices of DB, cloud services, queue functionality (RabbitMQ vs Kafka), why Java Spring Boot microservices, and potential alternatives.
- In the final 5 minutes, a small LLD problem was posed to me:
Design classes and structure them in such a way that we can use them to store distance values. Values could measure in any metrics like kilometers, miles, meters, centimeters, millimeters etc.
- I designed a simple and robust class structure, though the interviewers weren't entirely satisfied with my proposed design.
- Despite this, I received positive feedback, and the HR moved me to the next round.
Round 3 - Leadership Principles (60 min)
- The round started with an introduction.
- We discussed my role and responsibilities in my current project.
- I was then presented with several situation-based questions, covering technical difficulties, challenging phases, high and low career moments, team engagement, and dealing with critiques.
- The panelist seemed happy with my responses. A helpful tip for these types of questions is to prepare situations around common themes and answer using the STAR method.
- I received positive feedback and was scheduled for the final round.
Round 4 - Social Change (60 min)
- There were two panelists in this round. After introductions, they noted this wasn't my first ThoughtWorks interview and asked about my existing knowledge of their social change initiatives. We had a brief discussion on this.
- Next, they asked me to think of three things I would do to create change in the world. I could only come up with two: the Indian Tax System and the Indian Reservation System.
- We discussed each of these topics in detail, exploring how I would approach solving these issues if I had the power to make country-level decisions.
- We maintained a healthy discussion, steering clear of controversies. The panelists were pleased with the discussion and gave positive feedback.
The entire process took approximately 15 days. I asked the HR to expedite it as my release date from my current company was approaching.
Ultimately, I was selected and received a job offer.
Interview Questions (4)
DISPLAY COST OF LAST WEEK STORAGE
Description
As an electricity consumer, I want to be able to view my usage cost of the last week so that I can monitor my spending
Acceptance Criteria:
- Given I have a smart meter ID with price plan attached to it and usage data stored, when I request the usage cost then I am shown the correct cost of last week's usage
- Given I have a smart meter ID without a price plan attached to it and usage data stored, when I request the usage cost then an error message is displayed
How to calculate usage cost
- Unit of meter readings : kW (KilloWatt)
- Unit of Time : Hour (h)
- Unit of Energy Consumed : kW x Hour = kWh
- Unit of Tariff : $ per kWh (ex 0.2 $ per kWh)
To calculate the usage cost for a duration (D) in which lets assume we have captured N electricity readings (er1,er2,er3....erN)
Average reading in KW = (er1.reading + er2.reading + ..... erN.Reading)/N
Usage time in hours = Duration(D) in hours
Energy consumed in kWh = average reading x usage time
Cost = tariff unit prices x energy consumed
As an electricity consumer I want to view the usage of my gas and electricity separately so that I can decide if separate tariffs for each type of energy will save me money
Acceptance Criteria:
Given I have a smart meter ID when I connect and then I send electricity usage data and then I send no gas usage data then no error message is shown
Given I have a smart meter ID when I connect and then I send gas usage data and then I send no electricity usage data then no error message is shown
Given I have a smart meter ID when I connect and then I send electricity usage data and then I send gas usage data then the usage data for each is collated
Given I have a smart meter ID when I have sent my usage data and my tariff then I am able to be shown the separate usage for gas and electricity I have sent for the past week
Given I have a smart meter ID when have sent my usage data and my tariff then I can view the separate cost of the gas and electricity usage I have sent for the past week
Design classes and structure them in such a way that we can use them to store distance values. Values could measure in any metrics like kilometers, miles, meters, centimeters, millimeters etc.
The interviewers asked me to think of three things I would like to do to make change in the world and discuss them.