I applied through cutshort(https://cutshort.io/). Got a call from HR in 2-3 days, the HR took the details like expected CTC and relevant experience on the tech stacks. And then explained how the interview is going to happen and how many rounds will be there.
There were total three rounds of interview:
- Pair programming round (Interviewed on April, 2021)
- Technical Discussions (Interviewed on April, 2021)
- Leadership and social discussion (Interviewed on April May, 2021)
Interviewed on – Java, SpringBoot, JPA, Kafka, microservices, REST, GraphQL, [ Docker, Kubernetes, Jenkins (basics)], System design.
1. Pair Programming Round :
- Expectations – Demonstrate your technical ability to write code, communicate and collaborate with the ThoughtWorker you are pairing with.
- Duration – 90-100 minutes.
- No of interviewers – 1
I was given a Github URL 2 days before the interview for my primary programming language and was asked to clone the repository to get familiar with the codebase and try to understand what it currently does and how it works.
Note : IDE could be of your choice. I used my favorite IntelliJ Idea.
This interview was approximately 90-100 minutes. At the start of the session the interviewer shared a Trello board and I was asked to select a user story from the board to implement. After going through the user story I had a discussion on the approach with the interviewer.
I was asked tons of questions before implementing the code or writing anything (I repeat writing anything). You are expected to follow the TDD approach. I requested the interviewer to let me write the methods first and then I will write the test cases (since we were thinking from the future perspective and the outcome(return types etc..) was unknown at the start).
The questions asked were logical that made me think of the future perspective apart from the description mentioned on the trello board.
- What if in future the requirements change?
- Will I come and change the end points again and again?
- Why can’t I use map as a return type?
- What would be the return type Object
- Which one is better?
- Is it necessary to use ResponseEntity as a return type only in the controller layer?
- What if we chose to return ResponseEntity in the service layer and what all challenges we will face?
The questions were also on writing the method names and defining a class name and best practices to complete the code.
Note: The sole objective of the pair programming round was to test your knowledge, the interviewer asks questions and tests whether you are reaching a particular solution or not.
Cleared this round, got a call the next day for the 2nd round of interview 🙂
2. Technical Discussions :
- Expectation – Breadth, and depth of your knowledge of technology stack you have experience with.
- Duration – 90-100minutes
- No of interviewers – 2
The conversation revolved around software design, architecture and focus on lower-level concepts around development or development processes.
It started with a small introduction of mine, my tech stacks, and some demographic information.
Later it moved on to the architecture of my project. I was asked to draw the architecture(over zoom meeting white board) and explain how everything works.
After explaining the architecture to both the interviewers, the fun started 😉
They asked a lot of questions on the project architecture that I explained. Some of them were scenario-based questions and were expected to give the solution of a particular issue. I had to write a small MVC code to explain the solution. Even the questions were on SQL queries and how would you implement them, using JPA query or nativeQuery? How would you build a query using joins. (I think the interviewer was expecting a Criteria Builder api solution, I gave the Query annotation solution).
Later it moved on to System Design. I was asked to design the database schema and define the relation between the tables that would suit the Restaurant/Hotel booking design. After mentioning the column names and defining the P.K and F.K relation b/w the tables.
I was again asked a scenario based question i.e, How would I deal with this scenario? (Do I need to introduce any new column ?).
Slowly they increased the complexity of the design by asking more scenarios to handle.
Finally, at last, questions were asked on how I use git, rebase strategy, taking a pull, merging a code and why we create hotfix branches etc.
Note: In system design solutions could be multiple. There was a situation where I was stuck but the interviewer helped me with a little hint and we discussed the solution.
Cleared this round 🙂
3. Leadership and social discussion :
- Expectations: They want to know you better, your way of seeing the world, and your leadership qualities.
- Duration: 60 mins
- No of interviewers – 2
In this round they want you to get a flavor of theirs thinking and expect to share your views. It was a meaningful conversation.
We started with introducing ourselves and later moved on to leadership-based questions. Here, I was asked to deal with the situation in the given scenario.
We moved on to a social discussion on Equality, Equity, caste reservation system, How did it come and what impact does it have in India? Share your views. The discussion dived deep into the ancient times of caste discrimination.
Tip: Be Honest.
Cleared this round, got the offer letter 😀
It was really a nice experience interviewing with Thoughtworks.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course. In case you are prepared, test your skills using TCS, Wipro, Amazon and Microsoft Test Serieses.