Skip to content

Latest commit

 

History

History
53 lines (44 loc) · 4.87 KB

facebook-interview-tips.md

File metadata and controls

53 lines (44 loc) · 4.87 KB

Scheduling

Please take a look at your calendar and let me know 3 - 5 dates that you can come on-site. We schedule every day, except Wednesdays, and usually start around 10am/10:30am.

For quick reference, you can expect the following interviews (in no particular order):

  • 2 coding interview (45 mins each)
  • 2 design interviews (45 mins each)
  • 1 behavior interview (60 mins)
  • Lunch (not an interview)

Preparing

(Coding)

In order to help you prepare for the coding interviews I recommend the following book/free online document: http://www.valleytalk.org/wp-content/uploads/2012/10/CrackCode.pdf Be prepared for technical questions involving coding, algorithms, data structures, and runtime complexity It may also help to review core CS concepts as well as subjects pertaining to the scale of our environment. For coding questions, you will be asked to produce clean, compilable, efficient code in a reasonable amount of time.

A few helpful hints:

Think out loud if you are working through a solution you are presented with as the Engineer will want to know how you approach and troubleshoot problems. If the interviewer gives you hints to improve your code, take them and run with them. It is good to adjust and work through the problems with the interviewer to show your thought process and problem solving ability. The Engineer will also want to ascertain your level of interest in the role. Have some questions prepared, for example, what is involved in the role, day to day tasks, what is the most exciting project they have worked on in Facebook etc Please research recent news online for talking points and more information about Facebook.

Some Topics & things to Consider:

Data Structures: Arrays and lists (critical), Binary trees (critical), Hash tables (critical), Stacks and queues (critical), Graphs (critical), Trie (nice to have), Heap (nice to have), Set (nice to have), Red-black trees (nice to have) Algorithms/CS Concepts: Search (iterator, binary, hash - all critical), Sort (merge, quick, bucket - all critical), Graph traversals (BFS, DFS - all critical), Complexity and big O notation (critical), Recursion (critical), Randomized quicksort (nice to have), Heap sort (nice to have), Radix sort (nice to have), Spanning tree and minimum cut (nice to have) Don't worry about rote memorization such as runtimes or API/native calls. It's always good to know how to figure out approximate runtimes on the fly but the code you write is more important.
Generally avoid solutions that would have lots of edge cases or huge if/elseif/... blocks. Most coding interview questions at most places are designed with semi-elegant solutions so try to identify patterns. Deciding between iteration and recursion is always an important step. You may be asked in the interview to explain a technically challenging problem you have worked on in the past. Think about and explain how the problem was technically challenging.

(Design)

Please see the attached document for more details on our design interview. In order to help you prepare for the design interview, I recommend a book that a number of our engineers used to help them prepare when they interviewed successfully with us: http://www.amazon.com/Building-Scalable-Web-Sites-Applications/dp/0596102356. This is also a great tutorial on system design questions: http://www.hiredintech.com/app#system-design.

In addition, the design/architecture interview will focus on designing a system with some product concepts, normally at Facebook scale. A successful interview will show that you:
clearly understand the problem
propose a design for a system or API that breaks the problem down into components that can be built independently
identify the bottlenecks as the system scales and can poke holes in the design understand how to adapt your solution when requirements are changed draw diagrams that clearly describe the relationship between the different components in the system calculate (back-of-the-envelope) the physical resources necessary to make this system work

(Passion/Motivations)

In addition to the technical piece, we are also looking to learn about your passion and motivations. Understanding about the work at Facebook is also important, so try to be ready to address what it is you like about Facebook, our product, the technical challenges we face here, and your feedback on the product.

Typical questions to be ready for are:

  • What are some successes and failures you’ve experienced, and what did you learn?
  • How have you overcome a challenging work relationship?
  • What features would you improve on Facebook?
  • What would you like to do at Facebook?
  • What challenging problems have you solved in the past?
  • What product or work related project are you most proud of?
  • What projects have you driven or how have you lead teams?

I know this is a lot of information, but we want to make sure you are best prepared for these conversations.