DISCLAIMER: Expressed views on this blog are my own.
I was asked to send my resume in March/April-ish? Fast forward to the recruiter interview in April.
She asked me standard questions related to experience and interests. I stated I was more interested in statistics programming based positions and so she wanted to cut off here and refer me to the team of data analysts, but I said no I'm interested in this position. Let's just say I suck at selling my interest when she asked me to 'convince her of my interest,' but she gave me the benefit of a doubt, I assume, and continued to ask me several systems administrator questions. Apparently, being a new grad I knew more than the average new grad, so I was asked to provide time slots. After a period of no response, I figured the team wasn't interested anymore. Anyway, she eventually came back with a contact to provide details to for scheduling, so it was scheduled eventually.
The first phone interview was cleaarrrly with a dedicated systems administrator as he seemed new or nervous to interviewing. He asked me to code a function to read from a file and do a data transformation (add new column and sort) and spit out the biggest row based on the new column I think. I asked a few questions after it and he seemed pretty happy. After the phone interview, I was told I had passed it with flying colors or something like that heh.
The second phone interview was a systems interview mostly focused on memory as it seemed to me, but eventually asked about threading, locks (mutexes and semaphores) and etc. It's a systems interview, what'd you expect? I passed it, but not with flying colors lol. Memory is a difficult topic for me as discussion is always limited in academia.
Anyway, I scored an on-site interview and flew out to SF Bay area. More specifically, Palo Alto at a fancy hotel. Too fancy and expensive, in my opinion. Dinner was like $35 - 50 a day, but I'm glad it was reimbursable or else I would have not bothered. Fast forward...
The first interview was little short as the interviewer didn't know what building I was in. Heh, I wasn't told what building number to go to, so the taxi driver, who was a cool guy from Ethiopia with a family here, took me to the building he usually takes candidates. Anyway, the first interview was a code an edit distance function where we only want to know if the edit distance is one. I've heard about edit distance before, but coding it? I had no idea how to, so I was stumped for a bit and randomly reasoning out things (should I do this in an iterative manner? yeah why not. Revelation moments later, okay lets do this recursively) until something suitable came out. Something did come out at the end, but it wasn't satisfactory to the interviewer. I mean hey, I've never taken an algorithms class and I was pretty close to the solution (two areas in the code where I screwed myself). I'm sure if I tested more than one case I would have been fine, but w/e. On a computer, I would have tested it rigorously, but apparently I'm expected to be that computer for this interview :|. I produced more of an answer for this question than anyone else would have outside of CS right out of school, so I'm sure that wasn't a factor for this interview.
The second interview was with the manager, which was pretty motivational. Basically said that the interviews for this role emphasizes coding and systems knowledge. Here I'm thinking to myself, yeah I have both those and more to offer. I liked this part as it took my mind off the first interview.
The third interview was a coding interview, which reeked of what I did in the first phone interview with a twist. Read from file, count words, sort, then spit out top 10 most frequent words. It took awhile for me to get past the sorting part because I wanted to innovate and create a bucket of 10 words where I would push in words that were either contained in between the current maximum and minimum or greater than maximum and pop out the minimum and adjust. I figured I couldn't code it in time and erased it then used usort to simplify this as much as I hated the idea. We then discussed potential systems related problems with the question and how we could theoretically improve it. After the general interview I realized, I screwed up and used usort instead of uasort, which keeps the associative keys while sorting.
The fourth interview finally was a systems interview, where I believe I was the best (systems programming was an enjoyable class). He discussed a few systems related things such as processes/threading (differences between processes and threads) and asked me to write down somewhat detailed steps of what happens when the user presses enter when submitting an url to the point the browser gets the data, which pretty much tests a vast majority of general knowledge of networking (dns), processes, kernel, etc. This is the sort of thing that I try to understand, so expressing that was definitely enjoyable. Anyways, we discussed that to the end of the interview and I say it was a good question to end with. He was curious to whatever else I might have known and suggested resources to fill knowledge gaps.
Afterwards was lunch with the fourth interviewer and we discussed more about tech and some other interests. I can't talk sports unfortunately. I'd rather play than talk about the pros. :D
After all of that, I was still rejected. :| It seemed that the first interview (edit distance) was so negative that even the fourth interview couldn't counteract that. My third interview wasn't bad, it wasn't mind-blowing, but there is no way it could have been negative. I have no idea how one interview destroyed my chances of working at Facebook, but okay I'm not going to fight the decision. The decision was made after some deliberation (more than a week of meetings I guess), so I'm sure there was some nit picking (noticed things I didn't) involved in the interviews. I thought I fit the position, as it sounded more interesting after the second interview. Apparently, experience, fitness and interest doesn't matter as long as one interview somehow shows you suck even if not true in the general case.
I do thank the fourth interviewer for believing in me enough to take a chance and attempt to fight the decision, but you can't win every battle, which is a bad way of looking at it in retrospect.