owned this note
owned this note
Published
Linked with GitHub
# [AIdrifter CS 浮生筆錄](https://hackmd.io/s/rypeUnYSb) <br> Google Interviews Process
## What to expect...
The interview will last around 45 minutes. It will be conducted by a Google Software Engineer who will ask you to solve a number of problems which will test your data structure knowledge, algorithms and coding skills. You will be given a problem or puzzle to solve and you’ll need to talk about your approach and discuss the complexity of the solutions you are proposing. You will then need to code up your solution. You may want to practice whiteboard coding with the first 100-150 unsorted problems on LeetCode with pen and paper.
The interview will be technical but we are very interested in your thought process, reasoning behind your answers and how you work to get to an efficient and accurate solution.
IMPORTANT NOTE: You’ll need a computer with Internet access for this interview so that you can do some coding exercises with your interviewer on a Google Doc. The coordination team will guide you through this once your interview timing has been confirmed. A headset may be useful as you will be talking and coding at the same time.
The best advice I can give is to talk through your solution, explain any trade offs you are making between time and memory and ask any questions you need to clarify the question. It is worthwhile to talk about your initial thoughts to a question, though a brute force solution will be received less well than taking time to compose a more efficient solution.
Additional tips:
1. Since we can’t have you write 100 lines of code or solve NLP problems in a 45 minute interview, we focus on the basics.
2. Know your basic algorithms and data structures - these are the building blocks to smart coding. Your first data structure / algorithms course is your best friend here. Some examples are big O notation, basic search algorithms, hash tables, queues, stacks, summation of a series, etc. You should not only know these, but understand them - why/when are they good - what are the drawbacks. It’s unlikely you’ll get a question like “name 3 search algorithms and tell me their running time”, but these are the tools you’re going to use in the analytical questions. Make sure you have a good toolkit with you!
3. Communication: Ask questions, discuss your thoughts, raise any problems you're having. Engineering is collaborative - so is the interview.
4. Be Calm: Don't be nervous if an interview challenges your answer. Review your work and be certain or take up his/her hint on the interview.
Suggested time allocation: (Not compulsory)
What would you need to do first before you dive into your solution?
(Clarify the problem). 1 minute
After you received additional information needed, what would happen next?
(Define the approach). 5 minutes - Verbal discussion of idea
After you come up with your approach, there will most likely be additional parameters given for the problem.
Now what would be your next step? (Proposed alternative solution)
Give yourself 5 minutes to come up with a new solution
If you are not sure if your preparation is on track, you can quickly take a look at the checklist below. >> Highly important!!
### Step 1. Understand Google Interview Process
Connect with Taiwan Google (Interview tips): https://www.youtube.com/watch?v=ceycGad3x7o
Interview tips from Google Software Engineers (English) : https://www.youtube.com/watch?v=XOtrOSatBoY&feature=youtu.be
Ask a Google Engineer — What is the Interview Process at Google? : https://www.youtube.com/watch?v=IWIi3C8Md_E
Hangouts On Air: Google Recruiters Share Technical Interview Tips : https://www.youtube.com/watch?v=qc1owf2-220
Google Technical Interview Workshop - Singapore : https://www.youtube.com/watch?feature=youtu.be&v=MyFxMpKn7yk&app=desktop
How to: Work at Google — Candidate Coaching Session for Technical Interviewing :
https://www.youtube.com/watch?v=oWbUtlUhwa8
Read through attached Interview preparation guides
:
### Step 2. Refresh yourself with CS fundamentals
Your old books!
**Cracking the Coding Interview**: This is one of the most helpful book you may find!!
We do expect you to know a lot about algorithms and data structures and to be able to implement them into your solutions - there is a great [bigocheatsheet](http://bigocheatsheet.com/) that may also help you!
C++/Python Style Guide: http://code.google.com/p/google-styleguide/
Java Style Guide: https://google.github.io/styleguide/javaguide.html
Introduction to Algorithms : 404 not found
[Algorithm Design Manua](https://github.com/addyrookie/Depot-App/blob/master/gmail/The%20Algorithm%20Design%20Manual%202ed%20%20by%20Steven%20S.%20Skiena.pdf)
### Step 3. Coding Practice + CS review
Websites such as [www.hackerrank.com](https://www.hackerrank.com/) and coding competition type of questions ([Project Euler](https://projecteuler.net/), [Topcoder](https://www.topcoder.com/), ACM - ICPC)
Cracked 50 questions?
Cracked 100 questions?
### Step 4. System Design Preparation
[Building large-scale distributed systems (video version)](http://static.googleusercontent.com/media/research.google.com/en//people/jeff/stanford-295-talk.pdf)
[The Google File System](https://ai.google/research/pubs/pub51)
[Bigtable: A Distributed Storage System for Structured Data](https://ai.google/research/pubs/pub27898)
[Systems design](https://github.com/checkcheckzz/system-design-interview)
Want to get a glimpse of Google coding and algorithm questions? You can practice your coding skill by using [Code Jam](https://code.google.com/codejam/contest/3254486/dashboard#s=a) Kickstart Platform! Code Jam hosts online [Kickstart](https://codingcompetitions.withgoogle.com/kickstart/schedule#kickstart) rounds that give participants the opportunity to test and grow their coding abilities! Participate in one—or join them all! You can also learn how to solve those problems by reading our analysis.
Ask yourself!
Do you feel confident with CS fundamentals?
Do you listen well?
Do you know what to ask to clarify the questions?
Do you feel confident with CS fundamentals?
Can you find the optimal solution to complicated coding/algorithm problems, present it in a very efficient/clean coding (no/less bug) manner, and share your thoughts logically?
Is your problem solving and coding speedy and efficient?
About the Role
Google’s software engineers develop the next-generation technologies that change how millions interact, making accessible and useful the world’s information, and our ambitions reach far beyond just Search. Learn [more about Google's Engineering roles](https://algorithm.yuanbin.me/zh-tw/) here
### Hiring Process
A preview of how the recruitment process would work, as mentioned:
Recruiter Prescreen → Phone Interview (1~2 sessions) → Onsite Interview (5 sessions) → Project Fit Talk* → Hiring Committee Review → Offer Review → Offer Delivery (Yippee!)
*We will work together with you to decide project allocation based on your background, interest and company hiring needs after interview stage.
## Google Phone Interview
The phone screen usually last between 30 and 60 minutes.
Your phone interview will cover data structures and algorithms. Be prepared to write around 20-30 lines of code in your strongest language. This should be clean, rich, robust code.
Your interviewer will ask one or two coding questions with lots of follow up questions. Be prepared to talk through your thought process while writing code in a `Google Doc` that you’ll share with your interviewer. We recommend using a hands-free headset or speakerphone so you can type freely.
- You will be asked an open ended question. Ask clarifying questions, devise requirements.
- You will be asked to explain it in an algorithm.
Convert it to a workable code.
- (Hint: Don't worry about getting it perfect because time is limited. Write what comes but then refine it later. Also make sure you consider `corner cases` and `edge cases`, production ready.)
- Optimize the code, follow it with test cases and find any bugs.
## Google Onsite Interview
This is it! You've passed the phone interviews and now you have received an onsite interview invitation. Onsite interview is the most important process of a Google interview, and your ability to receive an offer will largely depend on your performance during onsite interviews. Traditionally, the percentage of candidates who will receive an offer after onsite interview is about **1 of 5 to 1 of 7**.
You'll usually meet with five Googlers for about `30` to `45` minutes each, and one of them will be your `lunch interviewer` who does not submit interview feedback, so take this opportunity to freely ask questions.
All candidates will have the chance to highlight strengths in four different areas:
- **General cognitive ability**: Open-ended questions are asked to learn how you approach and solve problems. And there’s no one right answer—your ability to explain your thought process and how you use data to inform decisions is what’s most important.
- **Leadership**: Be prepared to discuss how you have used your communication and decision-making skills to `mobilize` others. This might be by stepping up to a leadership role at work or with an organization, or by helping a team succeed even when you weren’t `officially` the leader.
- **Role-related knowledge**: Google is interested in how your individual strengths combine with your experience to drive impact. Google don’t just look for how you can contribute today, but how you can grow into different roles—including ones that haven’t even been invented yet.
- **Googleyness**: Share how you work individually and on a team, how you help others, how you `navigate ambiguity`, and how you push yourself to grow outside of your comfort zone.
Note that Google put heavy emphasis on your analytical ability regardless of your job experience. Be prepared to showcase solid understanding of data structures and algorithms. If you have years of experiences in the industry and are `rusty` in your Computer Science fundamentals, invest more time in `brushing up` your basic CS fundamental skills. Otherwise, you may end up being rejected like [Max Howell](https://www.quora.com/Whats-the-logic-behind-Google-rejecting-Max-Howell-the-author-of-Homebrew-for-not-being-able-to-invert-a-binary-tree/answer/Max-Howell) for not able to [invert a binary tree](https://leetcode.com/problems/invert-binary-tree/).
Google wants to understand your coding skills and technical areas of expertise, including tools or programming languages and general knowledge on topics like data structures and algorithms. There's generally some back and forth in these discussions, just like there is on the job to push each other's thinking and learn about different approaches. So be prepared to talk through your solutions in depth. Push your own boundaries and find the best answer—that’s probably how you work anyway.
Technical onsite interviews at Google were historically conducted on whiteboards, but to provide a more `authentic` coding experience that’s less time-consuming, Google has started to offer laptops for coding interviews in some sites. These **chromebooks** have an **interview app** that let's you choose a coding language of your preference.
Throughout the interview process, feel free to ask your interviewers for clarification to make sure you **fully understand their questions**.
## Google Hiring Committee
After the onsite interview, each of your interviewers (except the lunch interviewer) will have to submit detailed interview feedback. Each interviewer's feedback is kept hidden from other interviewers to ensure one's feedback does not influence the others. Each interviewer will assign a `score` and make a Hire / No Hire decision.
Assume the scores from the feedback are good enough, your whole packet will be moved forward to the hiring committee for review.
The hiring committee will review all submitted feedback thoroughly and make a hire / no hire recommendation. For more details about this process, you can [read here](https://www.quora.com/What-happens-during-a-Google-hiring-committee-meeting).
## Google Offer Review
If Hiring Committee recommends hire, congratulations! You have arrived at the final stage of the process. There are about [10-12% candidates not extended offers at this stage](https://www.quora.com/My-Google-recruiter-has-asked-me-about-my-current-compensation-and-external-references-Whats-the-probability-of-not-getting-an-offer-from-this-point/answer/Bob-See). `Recruiter` requests for External References and Compensation History, conducts reference checks, and prepares a packet for the Offer Review Process.
The Offer Review process:
- Pre-Review Committee
- Compensation Committee Review
- Senior VP Review
There is a small percentage chance of [the offer not getting approved at the final SVP review](https://www.quora.com/Why-would-one-be-rejected-at-the-final-stage-at-Google/answer/Bob-See).