Hey all,
Thought I'd give back. There was a total of 5 interviews: 2 Coding (1 focused on Algo/DS, 1 focused on design and modularity), 1 System Design, 1 Product-Case study, and 1 Manager/Leadership. All rounds were 1 hour and ALL SPENT 15 MINUTES ON THEIR VALUES. This team is pretty unique, it was the intersection of ML & SWE, so that's why there is a Product-Case study round.
Round #1: Product Case-Study
- Q: Given this "magic" current system at Twitch, that is perfected to do X,Y,Z. We noticed that there are other systems calling it, however, the statistics for it is very low during users interaction. Explain your thought-process, debugging, triaging, and possible solutions to try to resolve this.
- Dived deep into asking questions. This round resembles the OPPOSITE of system design where you're already given everything, but you need to figure out which area is lacking/bottle-beck/potential issue with large unknowns. The interviewer continuously stressed that there is NO DEFINITIVE ANSWER. They were curious about how do we identify POSSIBLE issues and tackle them.
- Overall: Felt Great! This round was really fun. Felt like we were collaborating and trying to figure out why the deployment of this perfect system didn't work. Really resembled what it's like to work on a team. The interviewer also role-played as a colleagued that also had no answers.
Round #2: System Design
- Q: Design Twitch
- Requirements/fucntionalities/constraints/assumptions
- Spent 10 minutes asking questions.
- High-level Design
- Talked a lot about data flow from both users and backend.
- Low-level Design
- Spent a lot of time about the streaming component.
- Spent some time talking about infra and databases
- Overall: Felt okay here. Definitely felt that I could improve on my system design. Interviewer was awesome.
Round #3: Coding - Algo/DS
Round #4: Coding - Designing/Modularity
- Q: Similar to this question, but had a twist on the get random https://leetcode.com/problems/insert-delete-getrandom-o1/
- Had a spin-off of given 2 values,
a & b, where it represents a range, [a,b], return the a random value with those weighted values
- Ex:
a = 1, b = 3. Then, the probability array should look like this: prob = [1, 2, 2, 3, 3, 3] , so the value is the weight.
- Overall: Felt great. I've seen a similar question to this before. I just walked through each issue if we were to use a certain data structure and then eventually got to what I needed
Round #5: Manager/Leadership
- All
tell me about a time.... questions
- Overall: Super fun round. HM was awesome and we had a blast talking.
Results: Passed