I recently flunked the phone screening process for a Mobile Software Engineer position at Twitch and thought it would be good to recap the experience for the next developer who comes down the interview chute.
When I was much younger, I loved watching other kids playing video games and getting to levels and places in those games I myself could never waste (or invest) the time to get skilled enough to get into. So when I noticed Twitch had an opening, I sent my resume in, thinking I’d have a decent shot at going far in the interview process and possibly even landing a role with a dream company.
My CV was quickly responded to by a Twitch recruiter who explained the process and made sure I wasn’t in-flight in terms of interviewing with any other department/company at Amazon (I’m honestly not sure how integrated Twitch is with the rest of the Amazon conglomerate’s recruiting & corporate bureaucracy). He then passed me along to a recruiting coordinator, and I was set up with two phone interviews over the course of about a week (i.e., the whole process didn’t take long at all).
The engineering interview process sounded like the standard Silicon Valley phone interviews (with them watching via Coderpad) + an onsite day full of algorithm & data structures horribleness.
The coding questions are recapped below. I didn’t think the questions were out of line or Google-level tricky, and I also went to sleep the night after these conversations believing I had performed well on all of them. In retrospect, I figure the reasons I got bumped out of the process this early (I usually easily get through phone screens) are either due to an unexpected culture fit problem that I didn't detect or — more likely — the second interviewer, a director, was looking for 100% perfection and didn’t like that I wasn’t able to track down a bug I left in the last coding question.
It’s actually good that I got bounced out of the process, though. It helps to keep my feet on the ground and my otherwise healthy ego well in check. It’s a pity that this happened to be a job I really wanted, though. Hopefully, my experience failing with Twitch will help you to pass your first few hoops when you deal with the phone interviews.
If you find the information I passed along helpful, please let me know by voting “yes” on the “Helpful?” button below. This helps to motivate me to be as detailed as possible. Good luck!
Given these two APIs, plus an enum and struct:
enum Alignment { Left, Right, Center }
class Size { int width; int height; }
// Returns the dimensions for a character Size getCharSize(char c);
// Draws a character at the specified location, with (0,0) being the top left. This method does NOT understand the newline character. Once rendered, there is no way to delete a character. void drawCharAt(char c, int x, int y);
Show how you would implement code for this function:
void renderText(String text, int screenWidth, Alignment alignment);
Do a Google Image Search for an “H tree”. The first image you’ll find (if it’s red H lines on a white background) will be what I was shown.
Given the following bare-bones API, how would you code up something to draw X levels deep of an H tree?
#import <stdio.h> #import <Foundation/Foundation.h>
typedef struct { float x; float y; } Point
void drawLine(Point p1, Point p2) { // draws line }
void drawHTree(Point center, float length, int depth) {
}
Given this single API and an unlimited (space) input buffer, show how you would replace space characters with URL-encoded “%20”.
void replaceSpaces(char *buffer);
That is: “Hello World Twitch” would become “Hello%20World%20Twitch”
The following metrics were computed from 3 interview experiences for the Twitch iOS Engineer role in San Francisco, California.
Twitch's interview process for their iOS Engineer roles in San Francisco, California is fairly selective, failing a large portion of engineers who go through it.
Candidates reported having very good feelings for Twitch's iOS Engineer interview process in San Francisco, California.