Interviewing for an Internship at Twitch

A narration of my experience interviewing for a Software Engineering Internship at Twitch

Ramki Pitchala
6 min readDec 14, 2020
Photo by @huntersrace on Unsplash

Introduction

As an individual who is studying computer science, it is critical to not only learn theoretical knowledge but to also apply the knowledge in a practical manner. One manner would be through internships. Software Engineering internships provide students with the opportunity to explore new tech stacks, develop impactful projects and get a taste of what it's like to work at the company full time. On another note, the interviews for these Software Engineering internships are notoriously difficult and require a profound understanding of data structures and algorithms. In this blog, I aim to provide a summary of my experience interviewing at Twitch for the Software Engineering Internship position. Let’s get started!

Initial Application — November 7th

To begin, I first applied to the Software Engineering Internship position on Twitch’s Lever link. Luckily enough, this link actually had an auto-referral attached to it. As a result, I was able to make it past the resume screening and to the recruiter call without taking any of the online assessments. Within a couple of days, the recruiter reached out to schedule a 20-minute call to learn more about me and provide some more information about the program.

Recruiter Call — November 13th

At the beginning of the call, the recruiter introduced himself and provided information about the internship program at Twitch. From there, he talked about projects that prior interns completed during their stay. Then, the recruiter asked questions such as “Why are you interested in Twitch”, and “What are you looking for in an internship?” to gauge my interests. Finally, to conclude the call, the recruiter stated that I had a potential match with the music engineering team, and explained that one of the coordinators at Twitch will link with me to schedule a technical phone interview. A couple of hours after the call, I got an email requesting availability for a technical phone interview with a senior engineer working in the music engineering team. I scheduled this interview for Nov. 24th.

Phone Interview — November 24th

Background

My preparation for this phone interview consisted of solving leetcode questions under a time constraint and participating in mock interviews with my friends. To be honest, I felt quite strong going into the phone interview. The phone interview was conducted over Google Meet and the collaborative coding took place over CoderPad.

Interview

In the beginning, the interviewer introduced herself and really sold me when it came to working for the music engineering division. After the introductions, the interviewer pasted the problem on CoderPad. The problem dealt with merging strings optimally, and it looked simple at first glance. However, when I started to consider the different scenarios, it turned out to be a difficult problem. In fact, I was unable to come up with the optimal solution or an even solution that worked for all the test cases. Despite that, I communicated my thought process clearly, identified important properties, and created a naïve solution. Near the end, I explained to the interviewer how I could potentially improve the solution with pre-processing and identified more important properties about the problem.

Reflection

After the phone interview, I found out that the problem was on leetcode and the solution involved dynamic programming on graphs: safe to say I had no chance. In terms of performance, I felt that since I was unable to code up a fully working solution, I would not move to the next round.

Result

To my surprise, the recruiter followed up on November 30th stating that the music engineering team wanted me to do a virtual onsite. In retrospect, I believe that the interviewer prioritized my thought process and my approach over anything else. Regardless, my excitement was through the roof.

Virtual Onsite — December 9th

Background

The virtual onsite took three hours in duration. In total, I had two technical interviews. My first interview was with the head of music engineering and a senior engineer. My second interview was with the same engineer from the phone interview and another senior engineer. Each interview lasted roughly 1 hour and involved both technical and behavioral questions. Similar to the phone interview, these interviews took place over Google Meet and CoderPad.

Technical Interview #1

As stated previously, I was first interviewed by the head of music engineering. To begin, he asked me to introduce myself and then proceeded to ask me questions about my resume. After 15 minutes, the second engineer joined the meeting and pasted the coding question. This question was yet another hard string problem that involved parentheses. Similar to the first interview, I communicated my approach out loud. I started by reducing the complexity of the question by pre-processing the string. I had to explain this pre-processing step multiple times which stripped away valuable time. Due to the poor explanations, I lost a lot of time and had to implement something quick and dirty, since Twitch actually blocks off the last 10 minutes in the interview for questions. The implementation worked on all the sample cases except one. For the remainder of the interview, I asked questions about the tech stack that Twitch music uses.

Looking back, I realized that my pre-processing step was the precursor to the optimal solution. I tried the same idea for the problem on leetcode and it wound up achieving optimal time and constant space. If I had a bit more time, I felt that I could have solved the question.

Technical Interview #2

In contrast to my poor performance in the first interview, I bounced back in the second interview. I had a lot more time in this one since the senior engineers started the technical portion without much delay. The first question was a greedy two-pointers question. I solved this question optimally quite fast and extensively tested the solution out to make sure it worked on all cases. The engineers only planned one question, but due to the excess time, they asked me another question. This question asked to merge multiple linked lists. I saw an important property in the question from the get-go and solved it with no problems as well. After the technical questions, I was prompted with several behavioral questions. I prepared extensively for this part, but overall, I think it negatively affected me.

After completing the second interview, I felt much better. In all honesty, I felt that hope was lost after the first one, but with a good performance in the second, I at least increased my chances of success.

After the end of the second interview, the recruiter called me to see if I had any further questions. He also notified me that he would get back the next day with a final decision.

Final — December 10th

Around noon, I received a call from the recruiter, but I wound up missing it. After calling back and exchanging a few formalities, the recruiter broke the news to me. I got rejected. I was a little shocked. Moreover, Twitch doesn’t provide feedback after interviews, so I was left guessing as to what prohibited me from passing the hiring committee. In all honesty, if I fully solved the problem in the first technical interview or excelled in the behavioral questions in the second, the conclusion to this experience could have been different. Regardless, I am happy I bounced back in the second and remained composed throughout all the questions.

Conclusion

Thank you so much for reading. I really hope you found this article useful. If you are handling rejection, try to objectively observe your mistakes in your interviews and work to fix them. See you in the next one!

Portfolio

Feel free to check out my portfolio! If you want to make a portfolio like this, definitely check out this blog.

--

--

Ramki Pitchala

Interested in the convergence between tech and business. Coding is a superpower!