Arun Dobriyal, the IIT Kharagpur grad who landed a job at Facebook with a package of 1.3 Crore per annum, spoke about what it takes to get into facebook. His advice was clear - strong fundamentals are pivotal to your success. Gain all the coding and problem-solving experience you can before going for a major behemoth like Facebook. He also said that data structures and algorithmic programming and not system programming is the key to making it big in high profile coding interviews.
Facebook doesn’t visit Indian campuses beyond the IITs too often. When it does, it selects very few. Most of the ones it takes, go as interns. However that has been changing slowly (too slowly, if you ask me). Therefore, I will write about the general interview style and methods of preparation which will help you whether you’re interviewing on campus or off campus.
Eligibility Criteria: A CS/IT background from a premium institute helps a lot. Facebook is not fussy about your academic record if you’re a deserving candidate and an excellent problem solver.
Roles and Responsibilities: Last I checked, there were 368 software engineering positions open all across the globe. They range from testing, maintenance, machine learning, Android development, iOS development and MUCH more. So the roles and responsibilities will vary with different jobs but one thing that remains constant is creative, business oriented problem solving through the use of sophisticated and robust algorithms and data structures.
Before I start explaining the recruitment procedure, a brief note about how to get an interview. If facebook visits your campus, then you have nothing to worry about but if it doesn’t, you might have to get creative about getting an interview. Facebook is using social media in a big way to hire talented engineers all over the world. Most of the positions in engineering are based overseas. However, if you’re willing to relocate, contact the recruiters on Twitter, LinkedIn, Facebook or whichever social medium you use. Most Facebook recruiters mention in their bios that they're actively recruiting. Here are some examples.
These are only two of the recruiters that I came across on LinkedIn but almost ALL of them are actively inviting you to pitch yourself to them. So start pitching.
Another way is to apply for internships at various Facebook offices. Most engineering hopefuls end up interning at the Facebook’s Menlo Park compound.
Recruitment Procedure: Apart from campus placements, the usual process is as follows -
The First Email/Phone Call - In case of an internal referral or a social media introduction, the recruiter will send you a mail or make a phone call to fix a phone screen or an in-person interview.
The Initial Screen - Whether it happens over the phone or in-person, the aim of this stage is to figure out your profile your experience and which function you might be appropriate for. The length is about 45 minutes. Most of the time is spent on coding exercises. If it’s happening over the phone, they’ll give you access to an long distance web based IDE on which you’ll write the required code. If that happens, make sure you do it on a laptop or a desktop in an area where you’re comfortable and the internet and the phone connection is uninterrupted.
Onsite Loop - The loop is a series of gruelling interviews back to back. Yes, yes there will be a lunch break (or WILL it? Hmmm). You'll do whiteboard coding for the most part, which means you’ll write code on a whiteboard with a marker as a response to the various questions and challenges. At Facebook they don’t ask puzzle type question but might ask contrived sounding word problems that are used to check for your algorithmic problem solving skills.Remember, you will not only have to write code but explain your thought process as you do so.
Enthusiastic, curious, motivated and passionate candidates are given preference.
Candidates who show willingness and capability to take care of other tasks apart from the core function. The ability to pay attention to the relationships between areas other than your focus area is highly prized.
Systems Architecture - How can you improve the user experience? Can you visualize new features and change old features to make the user’s life better?
Just a giant bucket load of coding expertise. You might be expected to ship code on your first day at work.
How To Prepare:
I will say it until I go blue in the face - learn data structures and algorithms in as much depth as you can. That’s your bread and butter programming. Learn tree searches, regular and fancy ones - you never know what they might ask. Do something called Code Katas. Kata is a Japanese word that means deep, focussed and intense practice. Watch Facebook’s Tech-Talks and solve these interview questions. In the words of ex-Facebook engineer and recruiter Carlos Bueno, “Practice writing code in a simple text editor without syntax highlighting or completion macros. Don't let little surprises throw you off your stride during the interview.
Impress us with your mastery of whatever language you're best at. Don't use a language you know less well because it's trendy or you think it will please the interviewer. This is a very common pitfall.
More generally, skills on your resume are fair game. If it says "expert in X," we will try to schedule you with a proven expert in X, so be prepared. If you are not, leave it off. I'd rather have a short list of the things you're awesome at than pages of everything you've ever done.
A good skill to cultivate is the ability to change your point of view at will. Sometimes you'll encounter a problem that seems like it should have an elegant solution, but in fact must be brute-forced or approximated. If you're stuck on a problem, try to think of any way to solve it, no matter how clumsy or inefficient. Then improve on it. Getting something that works is better than nothing.
Hard training makes for an easy battle. Brush up on techniques that you may not use every day, but are very useful when you need them: recursion, graph theory, tree traversal, combinatorial problems, etc.
You might be asked to implement some well-known library functions. Knowing at least a little bit about how things work under the hood is highly recommended.
Another kind of coding question might be parsing some data format or mini-language. Aside from CS nerd-points, these problems exercise your ability to reason about edge cases and handle lots of state in your head.”
So there, you have it. Hope you use these and get that coveted job at Facebook. Tell us about your progress and let us know what you’re struggling with. Next in the FANG series is Netflix. Until then, happy coding!
An engineer by education, writer by profession and a stand-up comic by vocation. I'm only half joking though.