Interviewing for a Software Engineering Internship at Twitch

Maria Sitkovets
14 min readMar 22, 2021

Introduction

My name is Maria and I’m a junior studying computer science at York University in Toronto, Canada. I’m also in the Shopify Dev Degree program meaning that I do four 8-month internships at Shopify while also doing school (all at the same time!).

Most Canadian schools offer something called co-op where students studying engineering and computer science can apply the theoretical knowledge they learn in class in a practical setting by doing internships. Usually, co-ops start the summer of your sophomore (2nd) year because the interviews mainly consist of a strong understanding of data structures and algorithms (which are usually 2nd or 3rd-year courses — but I recommend taking as early as possible!).

For the past two years, I have basically sat at the sidelines and watched my friends who aren’t in Dev Degree apply to hundreds of jobs, go through countless rejections, interviews, and co-ops at many different companies.

At the end of 2020 I decided that since I haven’t had those same experiences, I should try out interviewing as well. So, I applied to around 40 different software engineering internships (watch my videos about it here), including one at Twitch. In this blog, I wanted to share my experience of how I landed a software engineering internship there for this summer!

Me wearing Shopify swag :D

Initial Application — Nov 29th, 2020

The reason I decided to apply to Twitch in the first place was that one of my friends had done their online assessment (the first stage in the interview process) and had said that it was the most fun one they had ever done before. They told me that it was writing a class and some functions based on a feature on Twitch and I thought it was a cool way to assess people.

I was pretty sad because I thought that I would have to wait until their next recruiting cycle to apply but then I found out that Twitch has 3 possible online assessments that you can complete depending on when you apply. All you have to do is complete one of the assessments (which are done on coderpad.io) and pass at least 6/7 of the visible test cases.

An explanation of why Twitch does multiple coding challenges

I applied through a form on Lever and received the email from Twitch to complete their 2nd coding challenge. Then, I immediately received an email from one of the university recruiters asking if I would like to set up a 20-minute chat with him.

Recruiter Phone Call — Dec 11th, 2020

At the beginning of the call, the recruiter introduced himself (he was very energetic and friendly) and explained how the Twitch internship program will be working since it’s remote this year due to Covid. He then asked me a bunch of behavioral style questions to get to know me and see what I’m interested in.

He asked: “why Twitch?”, “what was a time that you had to learn something new?”, “what is a project that you’re proud of?”, “what are your best programming languages and frameworks?”, “what projects at Twitch (platform-specific areas or disciplines) do you want to work in?”

I tried to be unique in my answers and for “why Twitch?” I explained that I really admire one of the founders of Twitch, Michael Seibel, because I love watching all of his YCombinator videos. And also because I like how Twitch gives creators the freedom to do what they love and make an income (I told him I’m on YouTube and would like to possibly stream on Twitch someday too).

I was pretty curious about why he specifically reached out to me because none of my other friends (except one other girl) received the 2nd email that I did.

He explained that Twitch does things differently and they have a team matching process (you interview for a specific team, not the company in general). Hiring managers view our profiles and if they like us then a recruiter will contact us. Then the 1st round interview is 60 min technical interview with either a senior engineer or manager on the team and the 2nd round is the same but with other team members (this is what he told me but the 2nd round on-site ended up being three 1 hour interviews instead because they decided to change it).

He also said that he reached out to me because he thought that one of my projects I listed on my resume was clever and because last year they had a really great intern (who returned full-time) from my university.

Some other things he also mentioned:

  • They only hire 45 interns across all teams and disciplines (including design & legal)
  • You get to choose from 2 start dates (May-Aug or June-Aug)
  • Twitch is primarily a Go shop (AKA they use Golang a lot and that’s something I set as a goal to learn in 2021)
  • WFH has been good because they received a “generous stipend”

The team that flagged my profile specifically was Twitch Music because of my experience with frontend technologies. However, I told him that Twitch Music didn’t seem like the right fit for me because I didn’t want to work on frontend development. So, he said that he’d try to find me a different team that aligned with my areas of interest and would call me again soon.

Recruiter Phone Call #2 — Dec 14th

The recruiter had given me his phone number so that our communication would be smoother than through formal emails and so that I could message him whenever I had questions.

During our 2nd call, he told me that he’d found a different team called the Membership team which handles subscriptions, creator benefits, and how they get paid (which is the area I said I was most interested in so that was amazing!!!). He said that their tech stack is Golang and Javascript and that I would be doing backend development.

He also wanted to set up a first technical screening interview with an engineer on the team that Friday (since it was going to be Christmas break soon) but I told him that I couldn’t because I had 3 exams that week to prepare for. He said he would ask the team if they could schedule an interview for early January so that I could also have time to prepare.

Email from Recruiter — Dec 15th

My first interview was scheduled for Jan 6th from 2–3 pm. It would be over Google meet/coderpad for 1 hour and he said that you could keep your video off and do audio only if you prefer that. He also recommended having my resume open and questions prepared for my 2 interviewers.

Interview prep advice sent from the Twitch university recruiters

Interview Prep

After I had finished my exams and had taken a few days to relax, I started preparing for my interview by reviewing the things I had learned from the Facebook ABCS program that I had attended from Sep-Nov. Those were mostly notes on data structures and some interesting problems that we went through.

I also tried to work through a course that my friend had bought (yes, I used their password) called Grokking the Coding Interview: Patterns for Coding Questions. I tried to work through a section or half of a section per day but then some things happened in my personal life during that time and I kind of became depressed and couldn’t study anymore.

In the end, I didn’t do any preparation on Leetcode but I still practiced coding questions and read through some parts of my really thick algorithms textbook. I had also just completed my algorithms course at school that semester so I think it was fine since everything was still fresh in my mind.

Some of the patterns from the Grokking course

Phone Interview— Jan 6th, 2021

In the beginning, the woman interviewing me from the Membership team introduced herself as well as the other woman who would be shadowing this interview (to learn how to interview people herself).

My interviewer explained what their team does and talked about the main areas they focus on. She then spent around 15 minutes asking me questions about myself, my past projects and work experience, and many follow-up questions (which I liked because it let me go into more depth in certain topics).

For example, she asked about one of my projects and if it was a team project, what I did, and what I learned from it. I told her that it was a team project where I did mostly backend Python work and where I learned how to use Microsoft Azure and how to work with company documentation. I explained that this experience recently helped me write my own docs for a project I was doing at Shopify.

She also asked about a time where I was proactive and I said that was when I got my first team at Shopify to focus more on accessibility and she asked many follow-up questions about how I did that.

Then she copy-pasted a problem description into our coderpad related to graphs — prefacing this with “I haven’t interviewed interns in a really long time so I don’t know if this problem is too hard”.

It actually wasn’t that bad and we were able to work together, think of ideas (after she shared her screen and visually showed me an example because graphs are hard to visualize otherwise), and code an almost complete solution. I also told her that graphs were my weakest area because they were and I didn’t study them enough.

5 minutes before the end she stopped me to let me ask them questions. One of the questions I asked was “what do you look for in an ideal intern?” and they said someone who is excited to learn new stuff, brings passion + energy to the team, and has good cs fundamentals + communication skills.

Recruiter Email — Jan 8th

I got a message from the recruiter saying that the interviewers really liked me and he asked to schedule a 2.5 hour virtual onsite (the final round of interviews). He also wanted to have a prep call with me to discuss data structures vs. interview prep.

The advice that the recruiter gave me about the on-site interviews
My list of things I like/don’t like about Twitch (but they never asked me about it)

Virtual On-site — Jan 22nd

My on-site schedule (this is a lot for an intern in my opinion)

Greet

This was just 5 minutes to meet the recruiter over a video call, calm my nerves, and get any questions about the process answered. He also said that at any time if anything goes wrong then I can text him and if I need a longer break then I can also contact him or tell the interviewer that.

Data Structures/Architecture Interview

The first interviewer I had was a guy who has worked on the Membership team for a few years and all of his previous experience was at small startups in the Bay area. We talked for about 20 minutes about who we are (he didn’t have my resume so I had to explain my work experience) and he asked me a lot of questions based on personal and school projects and how I work with teams/under stressful situations.

After that, we went into the architecture question which was really fun actually. He described a feature on Twitch that people use all the time and asked me how I’d design it. We did have a shared coderpad so I was able to write out my thoughts and he was able to give me examples of what the feature would need to do.

We started off by trying to identify the different components that would be involved (user, frontend, API, caching, database, the function in the backend). I had never really worked with caching so I didn’t think about that and went straight to talking about using a database but the interviewer stopped me and lead me to get to the answer of also needing to use caching because we don’t want to make so many frequent requests to the database since this feature doesn’t change often so we can just cache it on the specific user.

Since this wasn’t a coding question I didn’t have to code but we did write out in pseudocode/almost Python for the main function in the backend that would do this feature.

This question was really unique and I also liked how at the end my interviewer asked me follow-up questions about how I would diagnose issues in this feature like if people complained that it was loading slowly or something else then which component would I look at to find the problem.

And he also gave me 5 minutes in the end to ask him questions and I mostly asked about WFH and the culture at Twitch.

Coding Interview #1

I wasn’t feeling too confident after my first interview because I felt like the interviewer wasn’t impressed with me and I felt dumb for not thinking of using caching on my own.

But this second interview was probably my favorite because I was able to bounce back and actually tackle the problem fully!

My interviewer first asked me some behavioral questions for the first 10 minutes such as “why Twitch?” and again more questions about how I would debug/fix things on Twitch based on different scenarios. PLUS I got to mention caching and sound smart so that was great.

I feel like it would be really hard for someone who ONLY knows how to solve Leetcode style questions to do well in this because it requires a good understanding of systems and prior project or work experience.

The coding question he gave me was to implement another feature on Twitch (but this one is something you can find on basically any website). It was funny because right before he said the problem I was telling him about NOT implementing that thing in a recent project I did because I didn’t have time (so here I was implementing that thing in 30 minutes lol)

But talking to him was really fun because I felt like I got to show off my data structures and algorithms knowledge by first discussing different approaches I could take (arrays and dictionaries) to implement the feature and the different trade-offs for time and space complexity. He then got me to implement it using a dictionary and I even tested it in coderpad to prove that it worked (we had to debug for a few minutes too).

He also asked if I could use any other data structure and I realized I could use a trie but it would be worse than using a dictionary. He asked me what I would do if the PM said that this feature has to be O(1) lookup time and I said to use a dictionary. He replied that they’re owned by AWS so they can use as much space (S3) as they want and that was pretty funny.

Coding Interview #2

My last interviewer was a really nice woman on the Membership team who had the calmest voice I’ve ever heard. She made me relax and I didn’t have to be super energetic because by that time I had no energy left.

We talked a lot about the projects she’s worked on and I felt like I learned the most from her about what the team does.

The coding question she gave me was a question she wanted to test out since she’d never asked it before and she said it was fine if we couldn’t fully solve it together because she just wants to see my thinking.

It wasn’t a question related to Twitch but just something that required keeping track of a lot of logic and a bunch of if statements which were difficult to write and we kept having to comment things out and start again because we kept confusing ourselves.

It was pretty funny and we didn’t fully get it working but it was a really fun experience working with her.

Closing Recruiter Call

After that, I texted the recruiter that I was done and we had a phone call where I thanked him for the opportunity and told him that I really had fun. He said he’d call and let me know their final decision the next week after they have a recap meeting with all my interviewers together.

Final — Jan 26th

Around lunchtime, I got a phone call from my recruiter at Twitch and he said “CONGRATULATIONS”!!! I was absolutely shocked because I had not been expecting to be given an offer from my dream company. He told me that in the meeting they called me “inquisitive and process-oriented” and that I had a “strong knowledge of their platform” (which isn’t wrong because I do watch a bunch of streamers).

I didn’t know what to say so I just listened to him explain the compensation and the start dates and I wrote everything down.

He said I had 1 week to think about it before making my decision.

Conclusion

The problem was, I never explained that I’m in the Dev Degree program. And in the Twitch contract (actually an AWS contract because Twitch doesn’t have offices in Canada) said that you cannot work for another company unless you get written consent from Twitch.

I was so nervous and torn between what I should do. Should I stay in Dev Degree and reject Twitch? Should I drop out of Dev Degree and work at Twitch instead? Can I do both???

I felt like I couldn’t just let this opportunity slip away.

So I messaged/talked to some people on the Dev Degree team, my current team lead and mentor, and Shopify HR telling them about the situation. And it turns out that in my contract I don’t have any clauses stating that I can’t work for another company, but I do still have to do my 25 hours per week at Shopify (20 hours on my team, 5 hours learning/Dev Degree meetings).

I then asked my recruiter at Twitch if I could call him and ask about the contract. I had prepared basically a whole essay explaining why I think I can do both Twitch AND Shopify.

But when I had my phone call with the recruiter and I asked him about that section in the contract, he explained that it only mattered for full-time employees to make sure that they don’t have an extra full-time job. He said for interns they know that we all have “side hustles” and as long as my work at Shopify isn’t affecting my work at Twitch then “Hear no evil, see no evil.”

Basically what the recruiter said

My plan is to work at Shopify in the mornings (8 am-12 pm EST) and then start my day at Twitch at 12:30 pm since my team is PST (California) so they are 3 hours behind me in Toronto. So basically the only way this worked out is because of the timezone difference and because everything is virtual this year so thanks for that Covid.

Finally, I was able to sign my contract and I basically celebrated by buying myself a Switch because after going through all of this mayhem in the past few months, I deserve it.

Thanks for reading my story and I hope you learned something from it! I’ll be joining Twitch on May 10th and I’m really excited :)

Subscribe to my YouTube channel for more videos about my experience being a Double Intern this Summer!

--

--

Maria Sitkovets

CS Major && Shopify Dev Degree Intern && Twitch SWE intern. I’ve taken to the internet to fill my creative void.