Google Technical Internships
Interview Preparation
2018 | Confidential and Proprietary
Agenda
This guide is intended to help you prepare for Software Engineering internship and Student Trainee in Engineering Program (STEP) interviews at Google. If you have any additional questions, please don't hesitate to get in touch with your recruiter.
2
3
4
Interview Tips
Technical Preparation
Extra Prep Resources
Recruitment Process
1
2018 | Confidential and Proprietary
Recruitment Process
2018 | Confidential and Proprietary
Recruitment Process
Decision
Making
Project Search
2 x 45-minute Phone Interviews with a Google Engineer
Offer
A Google doc will be used as a virtual whiteboard for coding and algorithmic problems.
After your interviews are done, we’ll bring everything together from your application and interviews and review it. Your recruiter will then follow up regarding next steps
Your application is reviewed by our potential project hosts and engineers to determine if there is a skill match to a project. This can result in an additional phone interview with a potential host to discuss their project.
We’ll take a look at the additional information gathered and if your application is approved, we will make you an offer, confirm it in writing and talk to you about visas and starting your internship at Google!
2018 | Confidential and Proprietary
Internship Project Interviews
2018 | Confidential and Proprietary
Interview Tips
2018 | Confidential and Proprietary
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, questions about this are fair game and may be asked of you.
Explain
Explain your thought process and decision making throughout the interview. In all of Google's interviews, our engineers are evaluating not only your technical abilities but also how you approach problems and how you try to solve them. Many of the questions asked in Google interviews are open-ended because our engineers are looking to see how you break down and approach the problem. There is no “one true answer” to them. We want to understand how you think. This would include explicitly stating and checking any assumptions you make in your problem solving to ensure they are reasonable. Think out loud.
Click on screen to remove
2018 | Confidential and Proprietary
Interview Tips
Clarify
Ask clarifying questions if you do not understand the problem or need more information. Many of the questions asked in Google interviews 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 see as the most important piece of the technological puzzle you've been presented. Clarifying questions are encouraged!
Also, take interviewer tips seriously because they’re trying to give you helpful hints. They may ask some additional questions or share comments when you're solving a problem. Take a minute to think through these prompts -- they can help you land on a more optimal solution!
Click on screen to remove
2018 | Confidential and Proprietary
Interview Tips
Improve
Think about ways to improve the solution. Share the different options or tradeoffs you’re considering. Be flexible. In many cases, the first answer that springs to mind may need some refining. It is worthwhile to talk about your initial thoughts to a question. Here are some guidelines:
Click on screen to remove
2018 | Confidential and Proprietary
Interview Tips
Practice
Make sure you practice writing code on paper or a whiteboard in preparation for in-person interviews, or code in a Google Doc for phone interviews. Be sure to test your own code and ensure it’s easily readable without bugs. Keep in mind, you can choose one of the following programming languages you’re most comfortable coding in: C, C++, Java, Javascript & Python
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. It’s always good to have some pre-prepared for each interview.
Click on screen to remove
2018 | Confidential and Proprietary
Resources
Hiring Process for Students
Read more here.
Interviewing at Google
Read more here.
Google Code Jam Questions
Get some practice with samples from Google coding competitions here.
Take Dean’s advice!
Read it here, and try practicing coding in a Google doc or on a whiteboard with a friend.
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
2018 | Confidential and Proprietary
Technical Preparation
Coding
Google Engineers primarily code in C, C++, Java, Javascript & Python. We ask that you use one of these languages during your interview. For phone interviews, you will be asked to write code real time in Google Docs. You may be asked to:
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Algorithms
You will be expected to know the complexity of an algorithm and how you can improve/change it. You can find examples that will help you prepare on TopCoder. Some examples of algorithmic challenges you may be asked about include:
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Sorting
We recommend that you know the details of at least one n*log(n) sorting algorithm, preferably two (say, quicksort and merge sort). Merge sort can be highly useful in situations where quicksort is impractical, so take a look at it. 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.
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Data Structures
Study up on as many other structures and algorithms as possible. We recommend you know 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. Find out what NP-complete means. You will also need to know about Trees, basic tree construction, traversal and manipulation algorithms, hash tables, stacks, arrays, linked lists, priority queues.
Hashtables and Maps
Hashtables are arguably the single most important data structure known to mankind. You should be able to implement one using only arrays in your favorite language, in about the space of one interview. You’ll want to know the O() characteristics of the standard library implementation for Hashtables and Maps in the language you choose to write in.
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Trees
We recommend you know about basic tree construction, traversal and manipulation algorithms. You should be familiar with binary trees, n-ary trees, and trie-trees at the very least. You should be familiar with at least one flavor of balanced binary tree, whether it's a red/black tree, a splay tree or an AVL tree. You’ll want to know how it's implemented. You should know about tree traversal algorithms: BFS and DFS, and know the difference between inorder, postorder and preorder.
Min/Max Heaps
Heaps are incredibly useful. Understand their application and O() characteristics. We probably won’t ask you to implement one during an interview, but you should know when it makes sense to use one.
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Graphs
To consider a problem as a graph is often a very good abstraction to apply, since well known graph algorithms for distance, search, connectivity, cycle-detection etc. will then yield a solution to the original problem. There are 3 basic ways to represent a graph in memory (objects and pointers, matrix, and adjacency list); familiarize yourself with each representation and its pros/cons. You should know the basic graph traversal algorithms, breadth-first search and depth-first search. Know their computational complexity, their tradeoffs and how to implement them in real code.
Recursion
Many coding problems involve thinking recursively and potentially coding a recursive solution. Prepare for recursion, which can sometimes be tricky if not approached properly. Practice some problems that can be solved iteratively, but a more elegant solution is recursion.
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Operating Systems
You should understand processes, threads, concurrency issues, locks, mutexes, semaphores, monitors and how they all work. Understand deadlock, livelock and how to avoid them. Know what resources a process needs 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. The world is rapidly moving towards multi-core, so know the fundamentals of "modern" concurrency constructs.
Click on screen to remove
2018 | Confidential and Proprietary
Technical Preparation
Mathematics
Some interviewers ask basic discrete math questions. This is more prevalent at Google than at other companies because counting problems, probability problems and other Discrete Math 101 situations surrounds us. Spend some time before the interview refreshing your memory on (or teaching yourself) the essentials of elementary probability theory and combinatorics. You should be familiar with n-choose-k problems and their ilk – the more the better.
Click on screen to remove
2018 | Confidential and Proprietary
Resources
Distributed Systems and Parallel Programming
Read more here.
Scalable Web Architecture & Distributed systems
Read more here.
How Search Works
Read more here.
Click on screen to remove
2018 | Confidential and Proprietary
Extra Prep Resources
2018 | Confidential and Proprietary
Resources recommended by Googlers
Online Resources
Dean Jackson’s ACM article
Cracking the Coding Interview Video and Cracking the Coding Interview
Five Essential Phone Screen Questions by Steve Yegge
Google+ Technical Interview Coaching Session
For Underclassmen
Guide for Technical Development
How to Get Hired - What CS students need to know
Click on screen to remove
2018 | Confidential and Proprietary
Resources recommended by Googlers
Click on screen to remove
2018 | Confidential and Proprietary
Resources recommended by Googlers
Learn about Google products and technologies
Google Spanner: Google's Globally-Distributed Database
Industry News: Search Engine Land
Click on screen to remove
2018 | Confidential and Proprietary
Get some practice!
Click on screen to remove
2018 | Confidential and Proprietary
Best of luck with the process!
G
2018 | Confidential and Proprietary