Thought work | Interview Experience| Application developer

thoughtworks logo
thoughtworks
Application developer1 yearsRejected
December 18, 202412 reads

Summary

I interviewed for an Application Developer role at ThoughtWorks. The process began with an Online Assessment covering core CS MCQs and two coding problems. This was followed by a code pairing round which involved discussions on OOPS, Java concepts, and designing a Ride Sharing Application, alongside a coding question similar to LeetCode's 'Greatest Common Divisor of Strings'. Unfortunately, I was not selected for the subsequent rounds.

Full Experience

I recently applied for an Application Developer role (JAVA) at ThoughtWorks through their portal, having 1 year of experience working in a service-based company. Here's how my interview journey unfolded.

Round 1: Online Assessment (OA)

The initial stage was an Online Assessment which comprised MCQ questions on core CS subjects and programming. Thanks to my GATE preparation, I felt confident and managed to answer all the core CS questions, especially those related to OOPS. I didn't do any specific extra preparation for this part.

The coding section of the OA had two questions:

  • The first was an array-based problem involving two pointers, which I successfully solved, passing all test cases.
  • The second question combined hashing and dynamic programming on strings, and I was able to identify the pattern and solve it as well.

I completed the entire OA within 30-35 minutes, coding everything in Python. To my delight, I was selected for the Code Pairing round!

Round 2: Code Pairing Round

This was my first experience with such a round, and it lasted about 2 hours. I was paired with a ThoughtWorker and tasked with solving a problem using an Object-Oriented Approach.

The round began with:

  • Discussions about my skills, current technologies I work with, my current project, and my role within it.
  • We then delved into core CS subjects like Computer Networks, DBMS, Data Structures & Algorithms, and Operating Systems (my favorite!). I managed to answer all these questions effectively.
  • The main emphasis was on OOPS concepts, where they posed many questions, ranging from basics to advanced topics, requiring real-world examples.
  • Following this, we moved onto Java-specific concepts such as HashMap, Collections, JVM, and Java 8 features. I was able to answer about 90% of these, though I did get a bit stuck on some Java-related questions.

For the actual code-pairing part, I was asked to design a Ride Sharing Application. We discussed the desired features, and I explained my proposed implementation strategy. I identified key entities, classes, attributes, functions, and relationships, presenting a high-level view and an ER diagram. I tried to clarify many aspects during the initial implementation phase.

This was where I made several blunders. I couldn't complete the entire code within the given timeframe. They also inquired about the data structures I used and my reasoning, as well as potential code optimizations, which I was able to answer. I got stuck trying to implement the Controller module; by then, my mind was fatigued, and I couldn't think of better solutions.

During this round, I was also asked a coding question similar to LeetCode's 'Greatest Common Divisor of Strings'.

Ultimately, I did not make it to the next rounds. Despite the outcome, I learned a great deal about clean code, design principles, and SOLID patterns from their feedback. I'll definitely keep trying, and I believe something better will come my way soon!

Interview Questions (2)

Q1
Ride Sharing Application Design
System Design

Design a Ride Sharing Application. Discuss features, identify entities, classes, attributes, functions, relationships, high-level view, and ER diagram. Be prepared to discuss data structures used, why they were chosen, and potential optimizations.

Q2
Greatest Common Divisor of Strings
Data Structures & AlgorithmsEasy

Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2. A string x divides string s if and only if s can be formed by concatenating x with itself one or more times.

Preparation Tips

My preparation for the Online Assessment's core CS section was primarily based on my GATE exam studies, which significantly helped me with the MCQs. For the coding part and subsequent rounds, my general practice in Data Structures and Algorithms (DSA) was beneficial. I specifically recall solving a problem similar to 'Greatest Common Divisor of Strings' from LeetCode.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!