Status: 5yr Experience
Position: SDE3 @HashedIn Technologies
Location: Bangalore (WFH)
Date: July, 2023
Thoughtworks has a pattern of interviews. They do a Code Pairing interview followed by a Technical interview followed by Leadership Principles interview (only for Senior roles) followed by Social Change round.
Round 1 - Code Pairing - LLD 90min
I got a code repository link priori to my interview. As I mentioned above, thoughtworks has this agenda that they follow. Candidate is supposed to go through the repository thoroughly, note down the observations/improvement areas (to be discussed in the interview). This helps to build a starting point for the interview.
First Attempt:
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 consumedI asked to discuss about my observations first so that we are on a same page about the existing codebase. This would have helped me to reason my code implementation decisions further during user-story implementation. But, the panelists didn't want to discuss the observations.
As I was starting on a codebase that already had flaws, my decisions were questionable to some extent. Also, the panelists wanted to hear a particular solution to something that they were not able to clearly ask/present to me as a real situation or issue.
I didn't get selected after this round.
HR called me to discuss what went wrong. I got job offer from thoughtworks with same HR 1 year back also and my feedback was exceptionally positive. So, the HR scheduled another one for me.
Second Attempt:
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 weekWe discussed my observations and had a healthy conversation through implementing the user story to evolving the design of the code-base following SOLID principles and Design Patterns.
The panelists do not expect you to complete user-story implementation. They are interested in your thought process and the way you code and how well do you do in pair-programming/coding.
I got positive feedback in this attempt and HR scheduled next round of interview for me.
Round 2 - Technical 90min
Introduction
Some questions on Java basics, Java 17 DateTime API vs to that of Java 8, Java 8 functional interfacesand lambdas, Spring IOC container, question on usage of @Import annotation for dependency injection, and some more questions on spring boot and java.
Then we started discussion on my current project. Started from project overview, the problem we're trying to solve with our product, the architecture and the features and functionalities. In this section of interview, I was on the drivers seat as they asked me more questions on the things that I explained. They asked me what are the things I developed and some questions specific to choice od DB, cloud services, functionality of queue(RabbitMQ vs Kafka), why Java Spring Boot microservices, what could be some alternative choices.
In last 5 minutes, they threw a small LLD problem at 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 design for it. They weren't completely satisfied with my design.
I got positive feedback in this round and HR scheduled next round of interview for me.
Round 3 - Leadership Principles 60min
The panelist was happy with my answers.
Tip: Think of some situations around all these questions and try to answer in STAR pattern.
I got positive feedback in this round and HR scheduled next round of interview for me.
Round 4 - Social Change 60min
There were 2 panelists. We started with introductions. As they got to know that this isn't my first time giving interview in thoughtworks, they asked me for what I already know about things/initiatives that thoughtworks do towards social change in society. On that, there was a small discussion.
Then they asked me to think of 3 things that I would like to do in order to make change in the world.
I could think of 2 things only (Indian Tax System and Indian Reservation System). One by one, we discussed on these topics in detail like what would you do if you have power to make decisions on country level, or how would you attempt to solve the issue otherwise.
We had a healthy discussion, while staying away from controversies. The panelists were happy with the discussion and gave positive feedback
Compensation Details Here.
#thoughtworks #seniorconsultant #senior-consultant # gurugram