Generalized around CS knowledge.
This commit is contained in:
parent
181423178a
commit
5e0a72d18a
100
README.md
100
README.md
@ -1,5 +1,7 @@
|
||||
# Google Interview University
|
||||
|
||||
(not only Google - for any software company)
|
||||
|
||||
Translations:
|
||||
- [中文版本](translations/README-cn.md)
|
||||
- translations in progress:
|
||||
@ -19,23 +21,30 @@ Translations:
|
||||
|
||||
## What is it?
|
||||
|
||||
This is my multi-month study plan for going from web developer (self-taught, no CS degree) to Google software engineer.
|
||||
This is my multi-month study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company.
|
||||
|
||||

|
||||
|
||||
This long list has been extracted and expanded from **Google's coaching notes**, so these are the things you need to know.
|
||||
>**I originally created this as a short to-do list of study topics, but it grew to the large list you see today. Working at
|
||||
Google was the original goal, hence the name. I didn't get an interview at Google, but the repo name lives on, and it would
|
||||
mess up a lot of folks to change it now. The items listed here will prepare you for a career at just about any software company,
|
||||
including the giants: Amazon, Microsoft, Google, and Facebook.**
|
||||
|
||||
You'll see a lot of Google-related items, but I've tried to generalize the list to make it useful for everyone.
|
||||
|
||||
This list was extracted and expanded from Google's coaching notes, so these are the things you need to know.
|
||||
There are extra items I added at the bottom that may come up in the interview or be helpful in solving a problem. Many items are from
|
||||
Steve Yegge's "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" and are reflected
|
||||
sometimes word-for-word in Google's coaching notes.
|
||||
|
||||
I've pared down what you need to know from what Yegge recommends. I've altered Yegge's requirements
|
||||
from information received from my contact at Google. This is meant for **new software engineers** or those switching from
|
||||
from information received from a contact at Google. This is meant for **new software engineers** or those switching from
|
||||
software/web development to software engineering (where computer science knowledge is required). If you have
|
||||
many years of experience and are claiming many years of software engineering experience, expect a harder interview.
|
||||
[Read more here](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/).
|
||||
|
||||
If you have many years of software/web development experience, note that Google views software engineering as
|
||||
different from software/web development and they require computer science knowledge.
|
||||
If you have many years of software/web development experience, note that large software companies like Google, Amazon,
|
||||
Facebook and Microsoft software engineering as different from software/web development, and they require computer science knowledge.
|
||||
|
||||
If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security).
|
||||
|
||||
@ -46,9 +55,7 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
- [What is it?](#what-is-it)
|
||||
- [Why use it?](#why-use-it)
|
||||
- [How to use it](#how-to-use-it)
|
||||
- [Get in a Googley Mood](#get-in-a-googley-mood)
|
||||
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough)
|
||||
- [About Google](#about-google)
|
||||
- [About Video Resources](#about-video-resources)
|
||||
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
|
||||
- [Pick One Language for the Interview](#pick-one-language-for-the-interview)
|
||||
@ -202,34 +209,11 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
|
||||
|
||||
[More about Github-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
|
||||
|
||||
## Get in a Googley Mood
|
||||
|
||||
Print out a "[future Googler](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)" sign (or two) and keep your eyes on the prize.
|
||||
|
||||
[](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)
|
||||
|
||||
## Don't feel you aren't smart enough
|
||||
- Google engineers are smart, but many have an insecurity that they aren't smart enough, even though they work at Google.
|
||||
- Successful software engineers are smart, but many have an insecurity that they aren't smart enough.
|
||||
- [The myth of the Genius Programmer](https://www.youtube.com/watch?v=0SARbwvhupQ)
|
||||
- [It's Dangerous to Go Alone: Battling the Invisible Monsters in Tech](https://www.youtube.com/watch?v=1i8ylq4j_EY)
|
||||
|
||||
## About Google
|
||||
|
||||
- [ ] For students - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html)
|
||||
- [ ] How Search Works:
|
||||
- [ ] [The Evolution of Search (video)](https://www.youtube.com/watch?v=mTBShTwCnD4)
|
||||
- [ ] [How Search Works - the story](https://www.google.com/insidesearch/howsearchworks/thestory/)
|
||||
- [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/)
|
||||
- [ ] [How Search Works - Matt Cutts (video)](https://www.youtube.com/watch?v=BNHR6IQJGZs)
|
||||
- [ ] [How Google makes improvements to its search algorithm (video)](https://www.youtube.com/watch?v=J5RZOU6vK4Q)
|
||||
- [ ] Series:
|
||||
- [ ] [How Google Search Dealt With Mobile](https://backchannel.com/how-google-search-dealt-with-mobile-33bc09852dc9)
|
||||
- [ ] [Google's Secret Study To Find Out Our Needs](https://backchannel.com/googles-secret-study-to-find-out-our-needs-eba8700263bf)
|
||||
- [ ] [Google Search Will Be Your Next Brain](https://backchannel.com/google-search-will-be-your-next-brain-5207c26e4523)
|
||||
- [ ] [The Deep Mind Of Demis Hassabis](https://backchannel.com/the-deep-mind-of-demis-hassabis-156112890d8a)
|
||||
- [ ] [Book: How Google Works](https://www.amazon.com/How-Google-Works-Eric-Schmidt/dp/1455582344)
|
||||
- [ ] [Made by Google announcement - Oct 2016 (video)](https://www.youtube.com/watch?v=q4y0KOeXViI)
|
||||
|
||||
## About Video Resources
|
||||
|
||||
Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs.
|
||||
@ -241,42 +225,22 @@ Sometimes the classes are not in session so you have to wait a couple of months,
|
||||
|
||||
## Interview Process & General Interview Prep
|
||||
|
||||
- [ ] Videos:
|
||||
- [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk)
|
||||
- [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw)
|
||||
- [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be)
|
||||
- [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be)
|
||||
- [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8)
|
||||
- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
|
||||
- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
|
||||
- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
|
||||
- [ ] Cracking The Coding Interview Set 1:
|
||||
- [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
|
||||
- [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ)
|
||||
- [ ] How to Get a Job at the Big 4:
|
||||
- [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
||||
|
||||
- [ ] Articles:
|
||||
- [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/)
|
||||
- [ ] [Get That Job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)
|
||||
- all the things he mentions that you need to know are listed below
|
||||
- [ ] _(very dated)_ [How To Get A Job At Google, Interview Questions, Hiring Process](http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html)
|
||||
- [ ] [Phone Screen Questions](http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions)
|
||||
|
||||
- [ ] Prep Courses:
|
||||
- [ ] Prep Course:
|
||||
- [ ] [Software Engineer Interview Unleashed (paid course)](https://www.udemy.com/software-engineer-interview-unleashed):
|
||||
- Learn how to make yourself ready for software engineer interviews from a former Google interviewer.
|
||||
|
||||
- [ ] Additional (not suggested by Google but I added):
|
||||
- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
|
||||
- [ ] [Four Steps To Google Without A Degree](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx)
|
||||
- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
|
||||
- [ ] [How Google Thinks About Hiring, Management And Culture](http://www.kpcb.com/blog/lessons-learned-how-google-thinks-about-hiring-management-and-culture)
|
||||
- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
|
||||
- [ ] Cracking The Coding Interview Set 1:
|
||||
- [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
|
||||
- [ ] [Cracking the Coding Interview with Author Gayle Laakmann McDowell (video)](https://www.youtube.com/watch?v=aClxtDcdpsQ)
|
||||
- [ ] How to Get a Job at the Big 4:
|
||||
- [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
||||
- [ ] [Failing at Google Interviews](http://alexbowe.com/failing-at-google-interviews/)
|
||||
|
||||
## Pick One Language for the Interview
|
||||
|
||||
I wrote this short article about it: [Important: Pick One Language for the Google Interview](https://googleyasheck.com/important-pick-one-language-for-the-google-interview/)
|
||||
|
||||
You can use a language you are comfortable in to do the coding part of the interview, but for Google, these are solid choices:
|
||||
You can use a language you are comfortable in to do the coding part of the interview, but for large companies, these are solid choices:
|
||||
|
||||
- C++
|
||||
- Java
|
||||
@ -292,7 +256,6 @@ You need to be very comfortable in the language and be knowledgeable.
|
||||
Read more about choices:
|
||||
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
|
||||
- http://blog.codingforinterviews.com/best-programming-language-jobs/
|
||||
- https://www.quora.com/What-is-the-best-language-to-program-in-for-an-in-person-Google-interview
|
||||
|
||||
[See language resources here](programming-language-resources.md)
|
||||
|
||||
@ -312,7 +275,6 @@ This is a shorter list than what I used. This is abbreviated to save you time.
|
||||
- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
|
||||
- answers in Java
|
||||
- recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/)
|
||||
- If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview".
|
||||
|
||||
If you have tons of extra time:
|
||||
|
||||
@ -381,7 +343,7 @@ OR:
|
||||
- by Goodrich, Tamassia, Goldwasser
|
||||
- I loved this book. It covered everything and more.
|
||||
- Pythonic code
|
||||
- my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/
|
||||
- my glowing book report: https://startupnextdoor.com/book-report-data-structures-and-algorithms-in-python/
|
||||
|
||||
|
||||
### Optional Books
|
||||
@ -460,7 +422,7 @@ Make your own for free:
|
||||
- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db):
|
||||
- [My flash cards database (new - 1800 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham-extreme.db):
|
||||
|
||||
Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required by Google.
|
||||
Keep in mind I went overboard and have cards covering everything from assembly language and Python trivia to machine learning and statistics. It's way too much for what's required.
|
||||
|
||||
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the
|
||||
same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
|
||||
@ -1434,7 +1396,7 @@ Have a story, not just data, about something you accomplished.
|
||||
- What's a tough problem you've solved?
|
||||
- Biggest challenges faced?
|
||||
- Best/worst designs seen?
|
||||
- Ideas for improving an existing Google product.
|
||||
- Ideas for improving an existing product.
|
||||
- How do you work best, as an individual and as part of a team?
|
||||
- Which of your skills or experiences would be assets in the role and why?
|
||||
- What did you most enjoy at [job x / project y]?
|
||||
@ -1461,8 +1423,6 @@ Have a story, not just data, about something you accomplished.
|
||||
|
||||
Congratulations!
|
||||
|
||||
- [10 things I wish I knew on my first day at Google](https://medium.com/@moonstorming/10-things-i-wish-i-knew-on-my-first-day-at-google-107581d87286#.livxn7clw)
|
||||
|
||||
Keep learning.
|
||||
|
||||
You're never really done.
|
||||
@ -1472,7 +1432,7 @@ You're never really done.
|
||||
*****************************************************************************************************
|
||||
*****************************************************************************************************
|
||||
|
||||
Everything below this point is optional. These are my recommendations, not Google's.
|
||||
Everything below this point is optional.
|
||||
By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for
|
||||
any software engineering job. You'll be a much more well-rounded software engineer.
|
||||
|
||||
@ -1493,8 +1453,6 @@ You're never really done.
|
||||
- [ ] [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)
|
||||
- aka the "Gang Of Four" book, or GOF
|
||||
- the canonical design patterns book
|
||||
- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html)
|
||||
- [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/)
|
||||
- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/)
|
||||
|
||||
## Additional Learning
|
||||
|
Loading…
x
Reference in New Issue
Block a user