My Facebook Interview
209.85.173.104
209.85.173.104
Google actually had me do two on-site interviews (one in my hometown and one in Mountain View). The first one went very well. I had a great rapport with the (single) interviewer, and had fun solving the (single) problem he gave me.
The Mountain View interview went more or less like the one described in the article. Marathon style. Had good rapport with some of the interviewers, less so with others. Once you start stumbling your confidence starts to fall apart, and it can really hurt you for the rest of the day (the interview lasted all day).
I also didn't exactly end up with the job. They offered me a testing position with "fast-track" promotion to engineering. I passed on that.
Good advice in the article though: practice problems on a whiteboard at home or with friends. Especially fundamental problems that you learned in your first algorithms class and the like.
Also, you should remember from your test-taking skills that time asleep is more valuable than time studying. Thus, as pointed out, you should really make sure you're well-rested.
The good news is that this is very fixable.
I could answer the questions in the article without effort but this is a very different situation from about 3 years ago when I wouldn't have been able to answer even one of these.
I really started hitting the Algorithm books(Skiena, Cormen, if anyone is interested ) about three years ago and am now comfortable with thinking "algorithmically" - at least for sequential algorithms.
Studying algorithms to a fair degree of competence is very feasible even for non CS folks - I have no degree in CS and am entirely self taught. The tough part was working through proofs - As I was reading about unit tests for the answers , either in the original article or the reddit comments, I forget which - I was thinking it might be better to write down a formal proof that the algorithm works.
If I face tough questions on parallel/concurrent algorithm, I'd probably take a while to answer or fail completely - I need to look into parallel/concurrent algorithms in the coming year.
h = {'a' => ['A', '@', '4'], 'b' => ['B'], 'c' => ['C']}
def foo str, h, pos=0
(pos>str.size-1) ? [str] : ([str[pos..pos]] + h[str[pos..pos]]).map {|new_char| foo(str[0...pos] + new_char + str[(pos+1)...(str.size)], h, pos+1) }.flatten
end
p foo('abc', h)Also, I really dislike the fact that FaceBook have yet to reimburse him, even after having >1year to do so and especially considering they have $MM and he was a student at the time! It reminds me of an interview I had at MXTelecom years ago, a company with ~40 employees that generated >$120M each year, which refused to reimburse interview expenses until "after" the interview process for them (read several weeks) was complete and which never did. Moral of the story: always be clear about payment of expenses before attending interview (especially if you are a student - do not be afraid to clarify and if need be force the matter), and chase up what you are entitled to.
...
Apparently he's responsible for the "Gift" feature in facebook (you know, the hole-in-a-box/heart/pantie/etc. little graphic you can gift to people?). He was the sole person responsible for that.
Fight fiercely, Harvard. It amazes me that code-up-a-copycat-in-a-weekend websites like facebook think that they need 1st rate engineers.
"It was either the little graphic gift heart, or control systems for helicopters..."
If you are into changing the world by willing society forward with ground breaking [insert impressive thing here], your talents would be wasted at Facebook (despite Mark Zuckerburg's stated belief that fb can change the world by allowing people to share with each other and understand each other better).
I think they are solving complex problems (which is respectable) for a largely trivial mission.
Would you say that Google does not require first rate engineers? I would imagine that the most important part of their operation is scaling. They have admitted themselves that the difference in search results returned by the search engines is virtually nil, so their strategic advantage is really being able to support a lot of users (for the search engine as well as other internet services).
The first time that I wrote a long message and saw the message window expand, I jumped with excitement. It was pretty awesome to find a new feature one day that I didn't expect and never would have thought to ask for.
Maybe we are using "meaningful contributions as a metric". Here is a page of some of their contributions: http://developers.facebook.com/opensource.php
I am just reluctant to say that engineers at fb are not first-rate. Are we saying that they are second rate?
I agree that fb is the toy analog in the web app world but does that mean that the engineers who banged out the PS3/XBox 360/Wii are second-rate?
That's exactly the problem that I had with my comment. They're only not first-rate if you expect every engineer to be literally genius. That's too much to expect for any one company. So first-rate is as close to accurate a description as you could get.
I've always found it odd that not many hackers that I've met really get into discussing video game mechanics: either hardware or software. It's odd because video games are what got me into programming software, and the only time I've ever felt like making hardware it was designing imaginary game systems.
Here's a list of things you should give them credit for: http://developers.facebook.com/opensource.php
White board problems are killers, no matter how well you know your stuff. I definitely advocate this too.
I'm interested if anyone else here has interviewed at fb, I'd love to hear more about this as I'm working out solutions to their programming puzzles too.