Académique Documents
Professionnel Documents
Culture Documents
This guide is intended to add clarity to the role & responsibilities of a Site Reliability Engineer at Google.
It will also give a clear overview of the recruitment process and help you best prepare for your upcoming
interviews with Google. If you have any questions, please don't hesitate to get in touch.
THE RECRUITMENT
PROCESS
The People
Like most Google offices, we
bring in speakers, authors,
comedians and performers to
cultivate a culture of learning and
growing. So weve had our fair
share of celebrity visitors. Like
the Scissor Sisters and Jamie
Oliver. Oh yeah, and Queen
Elizabeth. (Top that, Mountain
View!)
The Projects
Our engineering
Googlers have
worked on everything
from Ads, Android,
Core and Edge Traffic,
Cloud, Docs and Play
amongst many other
products and
services.
London information
YouTube video
Life @ Google
Google UK
The Role
Everyday, Site Reliability Engineers
tackle some of the most complex
software and systems issues on the
planet. This can range from
distributed change propagation on
live serving systems, to designing and
deploying cost-aware load balancing
systems, to designing distributed
hash tables for the largest userfacing service in the world. You'll be
working with Google code that runs
in infrastructure, front-end and
backend technology.
The Responsibilities
Site Reliability Engineers at Google are
responsible for the design, build and
development of massively distributed,
fault-tolerant software systems and
infrastructure, encompassing all of our
products and services. You will design and
develop systems to run products such as
Google Search, Gmail, YouTube, Maps,
Voice, AppEngine, and more.
You are going to build Google products
that users can rely on.
To Summarize
Google is and always will be an
engineering company. We hire people
with a broad set of technical skills who
are ready to tackle some of
technology's greatest challenges and
make an impact on millions, if not
billions, of users. At Google, engineers
not only revolutionize search, they
routinely work on massive scalability
and storage solutions, large-scale
applications and entirely new
platforms for developers around the
world. From AdWords to Chrome,
Android to YouTube, Social to Local,
Google engineers are changing the
world one technological achievement
after another.
The Process
Phone Interviews
Up to 2 x 60 min interviews with a Google Engineer. A Google doc will
be used as a virtual whiteboard for coding and algorithmic problems.
On Site Interviews
Up to 5 x ~45 min interviews. You will use a whiteboard for discussions
and coding tasks. You will also have lunch with an engineer (a great
time to ask questions) and have a tour of the office.
Committee Review
An independent committee of Googlers review the interview feedback.
They ensure our hiring process is fair and that were holding true to
our good for Google standards as we grow.
Offer
Project Matching
As we get to know you, your
skills and strengths throughout
the interview process, well
consider potential project
matches here at Google. We
take into consideration your
interests as well as the current
needs of the various Google
projects before making a
match. It is not uncommon to
match to several projects and
sometimes well arrange for a
call with a Tech Lead to make
sure we find the best mutual fit.
Once everything is reviewed and approved, well extend the offer, send
you the details and talk through getting started at Google!
Interview Questions
We hire a variety of people with a
variety of skills. Interview topics
may cover anything on your
resume, but well focus on your
strengths and understand how
they might fit into the team. Be
prepared to write code on a
whiteboard, build and develop
complex algorithms, analyze their
performance characteristics and
cover data structures, logic
problems and systems design.
Dont forget to demonstrate your
understanding of Unix/Linux
Internals (system calls, signals, the
kernel, command lines), shell,
network and application tracing,
systems administration, file
systems, DNS, and TCP/IP
networking.
Where to Focus
Make sure to also demonstrate your
problem solving skills throughout the
interview. For coding questions,
consider using prototype code to give
more succinct solutions. For design
questions, work with your interviewer
to create a high-level system and dive
deeper on particular salient issues.
For general analysis questions, show
that you understand the
particularities of the problem
described and (where applicable)
offer multiple solutions, discussing
their relative merits. Our interviewers
are trying to understand if you are
able to help them solve some of the
challenges they face every day on
their own teams. Show them what
you know.
Algorithms: You will be expected to know the complexity of an algorithm and how you can improve/change it. Big-O notations, also
known as the run time characteristic of an algorithm. If you get a chance, try to study up on fancier algorithms, such as Dijkstra and A*. For
more information on algorithms, visit TopCoder.
Sorting: What common sorting functions are there? On what kind of input data are they efficient, when are they not? What does efficiency
mean in these cases in terms of runtime and space used? E.g. in exceptional cases insertion-sort or radix-sort are much better than the
generic QuickSort / MergeSort / HeapSort answers.
Data structures: Study up on as many other structures and algorithms as possible. Read about the most famous classes of NP-
complete problems, such as traveling salesman and the knapsack problem. Be able to recognize them when an interviewer asks you in
disguise. ;) You will also need to know about Trees, basic tree construction, traversal and manipulation algorithms, hash tables, stacks,
arrays, linked lists, priority queues, and when they are appropriate. Visit this guide for more information.
Parallel Computing
Mathematics: Some interviewers ask basic discrete math questions. This is more prevalent at Google than at other companies, because
we sometimes run into counting, probability and discrete math situations. Spend some time before the interview refreshing your memory
on the essentials of elementary probability theory and combinatorics. Being familiar with n-choose-k problems and ilk also helps.
Networking (optional): Show off your depth of knowledge and understanding of network theory, like different protocols (TCP/IP, UDP,
ICMP, etc), MAC addresses, IP packets, DNS, OSI layers, and load balancing. Check out Computer Networking: A Top-Down Approach.
Leadership: We consider the roles of a manager and the role of an individual contributor separately. If youre considering a project/tech lead
or manager role, well also like to see how you handle technical design disputes, projects that go off track or how you resolve inter-personal
issues that impact teams or projects.
Explain
We want to understand how you think, so explain your thought process and decision making throughout the interview. Remember, our
engineers are not only evaluating your technical abilities, but also how you approach problems and how you try to solve them. Explicitly state
and check assumptions with your interviewer as you solve a problem to ensure they are reasonable.
Clarify
Ask clarifying questions if you do not understand the problem or need more information. Many of the questions asked in an interview are
deliberately underspecified because our engineers are looking to see how you engage the problem. In particular, they are looking to see which
areas you think are the most important when solving a technological problem.
Improve
Think about ways to improve the solution that you present. In many cases, the first solution that springs to mind isn't the most elegant and may
need some refining. It's worthwhile to talk through your initial thoughts with the interviewer. Jumping immediately into presenting a brute force
solution is a great start, but take time to explore a more efficient solution.
Practice
Make sure you practice writing code on paper or a whiteboard. Be sure to test your own code and ensure its easily readable without bugs.
Ask Questions
At the end of the interview, most interviewers will ask you if you have any questions about the company, work environment, their experience,
etc. This is your chance to learn more about the role, the projects, and the type of work youll be doing at Google.
Online resources
Google Publications:
Data
Programming Pearls
Jon Bentley
Google Chubby
Introduction to Algorithms
Thomas H. Cormen
Google Education