Vous êtes sur la page 1sur 9

Interviewing @ Google London!

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 OFFICE, PEOPLE


AND PROJECTS

THE ROLES AND


RESPONSIBILITIES

THE RECRUITMENT
PROCESS

PREPARING FOR YOUR


INTERVIEW
+ Technical Prep
+ Interview Tips

EXTRA PREP YOU


MIGHT FIND
HELPFUL

Google Confidential and Proprietary

Interviewing @ Google London


The Office
We're among the company's most
established offices in Europe and home
to engineering and many other
departments and functions. In other
words, we're a diverse lot.
We have three offices in central
London. One office has a double-decker
bus on the third floor. Another, with a
Brighton theme, has colorful beach-hut
and bumper-car meeting rooms and a
mural of Brighton Pier. And our
engineering Googlers voted on their
workplace dcor, so their office looks
like something straight out of a sci-fi
film (more Star Trek: The Next
Generation than Star Trek).

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.

Still want more info?


Office location & Streetview
Office pictures

When were not working, youll


find us enjoying sushi or tapas in
one of our cafeterias, playing
music in our recording studio, or
taking a boxing, spinning or yoga
class.

London information
YouTube video
Life @ Google
Google UK

Google Confidential and Proprietary

The Roles and Responsibilities of a Site Reliability Engineer

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.

Get a Googlers Perspective:


Im from Rio de Janeiro, Brazil. I completed my bachelors in Computer Engineering at PUC-Rio and my masters
in Logic and Artificial Intelligence at Imperial College London last year. Im working alongside the Ads Site
Reliability team on optimizing database microsharding in a backend process. The databases shards are divided
into smaller chunks called microshards. The goal of my project is to optimize the partitioning into microshards in
order to decrease the 99th percentile processing time. Im experimenting with two different algorithms: a greedy
algorithm, which is non-optimal but has linear computation time, and a dynamic programming algorithm, which
always generates the optimal solution but has quadratic computation time.

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.

Still want more info?


Google jobs
Philosophy of SRE
A Google engineers career
Ask a Google engineer
Meet SREs
Hangout with an SRE

Google Confidential and Proprietary

The Recruitment Process


How we Hire
Google's hiring process is the
same globally. This consistent
approach allows engineers the
opportunity to develop their
future career at Google -across locations, products and
projects. Your recruiter will
conduct an initial call with you
and be your partner during the
whole process, keeping you
updated throughout. Please
bear in mind that each step of
the process will take a bit of
time, but well keep in touch so
you know what to expect.

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.

Still want more info?


nterviewing @ Google

Once everything is reviewed and approved, well extend the offer, send
you the details and talk through getting started at Google!

Google Confidential and Proprietary

Preparing for your Interview


Before You Start
Start by giving yourself an
overview of interviewing at
Google here and on our how
we hire page. You can also
check out Cracking the Code
and Dean Jacksons ACM
article on technical interviews
at Google for great tips on the
process and getting in some
practice.

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.

Still want more info?


About us
The Google story
How we hire
Tech interviews @ Google
Google Developers

Google Confidential and Proprietary

Preparing for your Interview


Technical Preparation - Software Engineering
Coding: You should know at least one programming language really well, usually C, C++, Python, Java, Ruby, Perl or Go. You will be
expected to write code in most of your interviews and to know a fair amount of detail about your favorite programming language. Make
sure to check out our Google code style guides. We care deeply about the quality of our code, so be prepared to show what you know
about APIs, OOD/OOP, testing code, and how to address edge cases in your solutions.

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

Still want more info?

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.

Tech interviews @ Google


Google Style Guide

Data structures: Study up on as many other structures and algorithms as possible. Read about the most famous classes of NP-

Distributed Systems &

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.

Google Confidential and Proprietary

Preparing for your Interview


Technical Preparation - Systems Engineering
Recursion: Many coding problems involve thinking recursively and potentially coding a recursive solution. Prepare for recursionwhich can
sometimes be tricky if not approached properly. Use recursion to find more elegant solutions to problems that can be solved iteratively.
Operating systems: Understand processes, threads, concurrency issues, locks, mutexes, semaphores, monitors and how they work.
Understand deadlock, livelock and how to avoid them. Know what resources a process and a thread needs. Understand how context
switching works, how it's initiated by the operating system and underlying hardware. Know a little about scheduling. Know the fundamentals
of "modern" concurrency constructs.
Unix / Linux systems: Know whats happening under the hood! Kernel, libraries, system calls, memory management, permissions, namebase servers, file systems, client-server protocols, understanding the shell. Check out these online books: The Art of Unix Programming and
Advanced Programming in the Unix Environment.
Troubleshooting: Interviewers are looking for a logical and structured approach to problem solving through network or distributed systems
scenarios. Here are some troubleshooting examples: an App Engine outage and the Life in App Engine Production.
System design: System design questions are used to assess a candidate's ability to combine knowledge, theory, experience and judgement
toward solving a real-world engineering problem. Sample topics include: Distributed systems, designing a system under certain constraints,
simplicity, limitations, robustness and tradeoffs. Make sure you also have an understanding of how the internet works and be familiar with
the various pieces (routers, domain name servers, load balancers, firewalls, etc.). For information on system design, you can look here. And
dont forget to check out how search works.

Still want more info?


Tech interviews @ Google
Underneath the covers at
Google
Scalable web architecture &
distributed systems
How Search works

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.

How complex systems fail

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.

Google Confidential and Proprietary

Preparing for your Interview


Interview Tips
Substantiate
Make sure that you substantiate what your CV/resume says for instance, if you list Java or Python as your key programming language, be
prepared to answer questions using these languages.

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.

Get some practice!

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

To practice for your interview, you


may want to try:
Google Code Jam questions -samples from Google coding
competitions.
Take Dean's advice! Try practicing
coding in a Google doc or on a
whiteboard with a friend.

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.

Google Confidential and Proprietary

Extra Prep You Might Find Useful


Recommended by Googlers
Books

Online resources

Programming Interviews Exposed: Secrets to


Landing Your Next Job

Google Publications:

John Mongan, Eric Giguere, Noah Suojanen, Noah Kindler

The Google File System

John Wiley & Sons, 13.11.2012

Bigtable: A Distributed Storage System for Structured

Computer System Engineering

Data

Robert Morris, Samuel Madden


Mit Press, 2009

MapReduce: Simplified Data Processing on Large Clusters

Programming Pearls

Google Spanner: Google's Globally-Distributed Database

Jon Bentley

Google Chubby

Still want even more info?


Google books
Google publications
Google scholar

Pearson Education, 01.09.2000

Introduction to Algorithms
Thomas H. Cormen

Google Education

Mit Press, 2009

Guide for Technical Development

Cracking the Coding Interview


Gayle Laakmann McDowell
CareerCup, LLC, 2011

Google Confidential and Proprietary

Vous aimerez peut-être aussi