Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Rotational Network Production Engineer

Interview Preparation
Team Overview
Who we are
The Network Engineering team at Meta builds the end-to-end distributed network system of software and
hardware to support our global community. Network Engineering is a diverse organization with different focus
areas that require a variety of talent and experiences.

What we do
Our team is responsible for the deployment and support of all network infrastructure across the globe at Meta.
We have entered into a new era of unprecedented opportunities to re-think traditional networking and iterate
quickly in an area that was previously very closed to innovation.

As a member of the team, you will work alongside experienced Backbone, Data Center, Production Engineers
(Network) on a large-scale global network. You will help ensure that the network and its related services are
reliable, robust and can scale to meet the challenges that serving over a billion users presents. Automation and
continuous improvement are the keys to meeting our demands; you will be responsible for developing and
deploying network designs, automation systems and network performance improvements into our production
network.

Complete Interview Process

1. Screening Interviews:
a. Coding (45 mins)
b. Network (45 mins)
2. Full Loop (Final Stage):
a. Coding (45 mins)
b. Network (45 mins)
c. Behavioural (45 mins)
d. Design (45 mins)

1
Coding Interview

What to expect
● The interview will take about 45 minutes to complete.
● You'll be asked to answer technical questions involving algorithms & data structures and possibly
more specific questions to your background/resume.
● You will need to think of an efficient, optimized and bug-free solution. Start with a simple solution, and
think about making it more efficient afterwards. Your primary goal in the interview is to obtain a working
solution to each problem in a reasonable amount of time.
● Feel free to code in the language you are most comfortable with. Don't select a language based on
industry popularity. Choose your strongest language and if you know multiple languages then pick a
high-level one that provides good abstractions and libraries for quick problem solving.
● You are encouraged to adjust and work through the problems with the interviewer to show your thought
process and problem-solving ability, so be sure to communicate your thought process throughout the
interview.
● The coding interview will be done on CoderPad (make sure you visit the link and familiarise yourself with
the tool).

How to prepare
Invest time in preparing. It’s important for any engineer, even senior ones, to brush up on their interviewing
skills, coding skills, and algorithms. You can practice by answering different kinds of coding questions. For
example, practice answering a coding question with the most efficient bug free solution without using a
computer.
● Practice under time pressure. You’ll have a limited time for the coding question, so it will be important to
finish it in time. If possible, have a mock interview with a friend to simulate the interview experience.
● Go over data structures, algorithms and complexity.
● Understand the basic data structures in your chosen language

Data Structures
● Array
● Linked List
● Stack / Queue
● Trees (Tree, Binary Tree, Binary Search Tree, Red-Black Tree, etc.)
● Heap
● Hash Table
● Directed / Undirected / Weighted Graphs
● Trie (pronounced “tree”)
● Linked Hash Map

2
You should know the Big-O for insert, delete, lookup, etc. for each of these. Know how the mechanics work.
Ensure you’re able to code every single one of these. Then, prepare real-world examples of when you’d want to
use each of these and explain why it’s the best choice. Data structures come up in technical interviews in two
ways. The first is in coding questions where you’re expected to use the right one at the right time. The second is
on a comparison question - not connected to code - “why would you use X over Y in situation Z.”

Algorithms
Make sure you actually code when practicing. Simply reading code will not be as effective. Open up your
favorite IDE and start typing. This is critical as you can have a gap in your knowledge without realizing it. The
only way to find these gaps is by writing code. Know all of the Big-O for this and how it’s derived.

Review the following:


● Sorting algorithms (both comparison sorting and non-comparison sorting)
● Tree traversals
● Traversals - Dijkstra’s, A*, BFS, DFS (know the difference between DFS and BFS, when you would use
one over the other, and why)
● All the prefix-tree searches

Practice applying this knowledge. Find a source of practice interview questions and code answers to these
questions. We recommend pretending you’re in an interview setting. Before you write a single line of code,
organize your thoughts and figure out the entire solution, then start coding. In the actual interview, do the same.
Before writing a single line of code, make sure that you validate with the interviewer that your approach is a
good one. Practice, practice, practice!

Resources
Here are a few sites that you can use to prepare for the coding portions of the interview. If you are using practice
problems from sites like Leetcode, we recommend that you practice so that you can solve most easy problems
and some medium-difficulty problems within 10-15 minutes. Remember that we’ll be looking for you to
communicate your thought process throughout the interview.
● Top 10 Algorithms for Coding Interviews from Program Creek
● Leetcode
● InterviewBit
● HackerRank
● Advent of Code 2020
● CareerCup
● CodeFights
● Interview Cake

3
● Pramp
● Book: ​Cracking the Coding Interview
● Book: ​Elements of Programming Interviews

Network Interview

What to expect
● This 45 minute interview will be with a Meta engineer and is primarily a network interview.
● You’ll be asked to answer technical questions involving Network Engineering concepts. Be prepared to
speak about at least two protocols in depth, the pros/cons and comparison to other protocols.
● The interview will focus on networking fundamentals (such as ARP, DNS, DHCP, NAT, IPv4, IPv6), TCP
(fundamentals, troubleshooting, packet loss on the network), and BGP (or other routing protocols).
● You are encouraged to adjust and work through the problems with the interviewer to show your thought
process and problem-solving ability, so be sure to communicate your thought process throughout the
interview.
● If you are unsure of the answer to a specific question, let the interviewer know. You are also welcome to
share an educated guess and your thought process behind it.

How to prepare
Here are a few sites that you can use to prepare for the network portion of the interview. Remember that we’ll be
looking for you to communicate your thought process throughout the interview.

Open-Sourced projects

● Open networking advances with Wedge and FBOSS


● Introducing data center fabric, the next-generation Facebook data center network
● Introducing “6-pack”: the first open hardware modular switch
● Building Express Backbone: Facebook’s new long-haul network

Articles / Videos

● An Inside Look at Facebook’s Approach to Automation and Human Work


● NetNORAD: Troubleshooting networks via end-to-end probing

Tech talks

● Scaling the Facebook Backbone through Zero Touch Provisioning by David Swafford
● Optics Scaling Challenges by Katharine Schmidtke & Mark McKillop
4
● IPV6 Measurements @ Facebook by Sarah Chen & Paul Saab
● Edge Fabric: Steering Oceans of Content to the World by Niky Riga
● Layer 4 Load Balancing at Facebook by Nikita Shirokov
● Secure Reliability: Tales from Mysterious Platforms by Jade Auer & Jose Leitao
● Operating Facebook’s SD-Wan Network by Shuqiang Zhang & Palak Mehta
● BGP++ Deployment and Outages by Jingyi Yang
● Enforcing Encryption @Scale by Ajanthan Asogamoorthy & Mingtao Yang
● Network Reliability: Where we have been and where we are going by Najam Ahmad
● Self-Organizing Mesh Access (SOMA) by Derek Schuster
● Enforcing Encryption @Scale 2019 by Kyle Nekritz
● Monitoring, managing and troubleshooting large scale networks by Peter Hoose
● Facebook's experience of building a "black-box" fault detection and isolation system by Petr
Lapukov

Facebook Engineering and projects

● Facebook Engineering
● Internet.org
● Open Compute

Design Interview

This 45 minute interview will require you to design a network component or network related large-scale system.

Example: Design a network for 100 hosts. (Ask about economics, scale, redundancy models etc). Follow up:
upgrade to 1000 hosts. How would you monitor the network?

Example: Build an automated network design framework

As you’re designing the system, among the things we’re looking for is to see how you:
● Ask clarifying questions to determine what the goals and requirements of the system are.
● Only ask questions if the answers might affect your design.
● Determine which parts of the problem are most important and will affect the overall design.
● Describe the system at a high level, explaining the overall architecture.
● Draw diagrams that clearly describe the relationship among different components.
● Ensure that you have a working solution. It’s better to have a working solution that doesn’t scale than not
5
having a working solution at all.
● Identify trade-offs in your design, and describe how you make decisions around them.
● Calculate back-of-the-envelope resources necessary.
● Adjust the design of your system when requirements or constraints change.
● Determine how your system will perform at scale, and identify any bottlenecks and limitations in your
design.
● If one of the constraints is changed, how easy will it be to adapt the system?

How successful candidates prepare:


Most successful candidates prepare by coming up with designs for large scale products and then justifying them
to a friend (who plays the role of interviewer). They focus on technology they really understand and/or have
personally used, and tell us about how they would solve a problem rather than how they think Meta actually
solves the problem.
This Quora post has some helpful suggestions that you can look through:
https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview

Behavioral Interview

The interview will last for 45 minutes. The interview should feel less technical and more like a discussion where
the interviewer will ask both motivational and behavioral interview questions (often referred to as competency
based/CBI interview questions). Network Production Engineers communicate and partner with their teammates,
software engineers, project managers, the network community and other Meta colleagues on a daily basis.
During this interview, we want to learn how you have worked in a team, how you communicate, how you deal
with conflict and overcome challenges.
For university candidates, we’ll discuss internships, as well as interesting academic and personal projects.
Unlike the technical interviews this interview focuses on your unique experiences and approaches to solving
non- technical problems.
Tips:
● Have a variety of examples prepared that you can talk about throughout the interview. These examples
could be from work experience, internships, academic or extracurricular activities.
● It is better to use one strong example per question that you can talk through in detail rather than referring
to multiple examples in your answer.
● When talking about your past experiences and projects, try to follow the STAR (Situation, Task, Action,
Result) method to help structure your answers and ensure your answers are clear and concise.
● Have 3-4 questions prepared to ask at the end of the interview – this is a great opportunity to find out
more about the team and the work that our Engineers do.

6
Qualities we look for in Network Engineers

Drive to help the world connect and build community. Meta has played a critical part in changing how
people around the world communicate and connect. Our engineers are not only talented, but also
passionate about solving the challenges associated with connecting the next billion users.

Ownership of projects from start to finish. Meta engineers are always building new things and have a
demonstrated ability of owning projects from start to finish. Our engineers are able to take on every aspect of a
project from design and development to implementation and support.

Daringness to be bold. Meta engineers have consistently taken on challenging projects throughout their
careers. When you speak with engineers on our team you’ll hear stories about time they weren’t quite sure
about how they were going to accomplish the project, but dared to be bold, iterate quickly and find a solution.
Our engineers love working on complex projects which are not always clear cut. They embrace uncertainty,
take risks and learn from failure.

Meta company values: https://www.metacareers.com/facebook-life/

You might also like