After I was contacted by a recruiter, I completed a questionnaire that had questions ranging from how I became interested in technology to what I would do if I were president of the world. At the same time, I also had a programming assignment. I wrote some unit tests for mine, probably could have written more. I asked for more time to finish mine and they gave me a few extra days. I think I also took a personality test online. After this, I had a phone call with a recruiter that was more in-depth than I was expecting. They asked some behavioral interview questions, then asked about social justice and ThoughtWorks' 3 pillars. Be prepared to talk about the pillars, social justice, oppression, things like that. They also asked my salary expectations. At the end of that phone call, I was invited to on-site interviews. I completed two written tests. One was a logic test created by ThoughtWorks. I finished mine, but barely, and I had to check my work. They said not everyone finished that test. They also gave the Wonderlic test which you can look up online for example questions. Hardly anyone finishes this because it is designed to get harder as you go along, so don't worry at all if you don't finish. Then I was given an hour to prepare a 5 minute presentation about any topic in STEM. They want this to be technical, but it doesn't have to be about programming. I picked a topic I knew well enough to answer questions on but that I didn't think they would already be super familiar with. They asked some in depth questions about my presentation. Then they asked me OOP questions. There were some basic questions, like when would you use arrays vs. linked lists, but then we started talking about composition vs. inheritance and some database topics. It started out feeling like a quiz but then became a conversation and I learned a few things during this interview. There was a pair programming interview where we refactored the programming assignment I had done originally. We talked about the principles of refactoring and test-driven development. Think ahead of time about what areas you would refactor your code. We focused more on the OOP principles and testing than making the algorithms more efficient. There was also a values interview, where they asked about something in the news that made me angry. I was nervous about this, but I also consider myself to be thoughtful and empathetic, so I was able to have a discussion about topics that are important to me. It felt like they were grilling me at some points, but it was good to dig into why something is important, and I also think they want to get a sense for how you react under pressure and how you communicate. In between interviews, we had lunch as a group with a bunch of employees and other people who were interviewing that day. I'm not sure if that was planned, but we started talking while we were making our plates and decided to sit together. It was a friendly lunch and I felt like I got to know some of the employees better. The entire process was one of the most difficult interview processes I completed, but I felt like they were able to know me better than any other company.