Merge remote-tracking branch 'upstream/master' into vietnamese
This commit is contained in:
commit
301dfab110
52
README-he.md
52
README-he.md
@ -159,7 +159,7 @@ thousands of associative arrays, but I've never created data structures from scr
|
||||
But after going through this study plan I have high confidence I'll be hired. It's a long plan. It's going to take me
|
||||
months. If you are familiar with a lot of this already it will take you a lot less time.
|
||||
|
||||
## How to use it
|
||||
## איך להשתמש בזה
|
||||
|
||||
Everything below is an outline, and you should tackle the items in order from top to bottom.
|
||||
|
||||
@ -194,35 +194,35 @@ Print out a "[future Googler](https://github.com/jwasham/google-interview-univer
|
||||
|
||||
[](https://github.com/jwasham/google-interview-university/blob/master/extras/future-googler.pdf)
|
||||
|
||||
## Did I Get the Job?
|
||||
## האם קיבלתי את העבודה?
|
||||
|
||||
I'm in the queue right now. Hope to interview soon.
|
||||
אני בתור כרגע. אני מקווה להתראיין בקרוב.
|
||||
|
||||
Thanks for the referral, JP.
|
||||
|
||||
## Follow Along with Me
|
||||
|
||||
My story: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
|
||||
הסיפור שלי: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
|
||||
|
||||
I'm on the journey, too. Follow along:
|
||||
גם אני עובר את המסע. עקבו אחריי:
|
||||
|
||||
- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/)
|
||||
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
|
||||
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
||||
- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
|
||||
- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham)
|
||||
- **בלוג**: [GoogleyAsHeck.com](https://googleyasheck.com/)
|
||||
- טוויטר: [@googleyasheck](https://twitter.com/googleyasheck)
|
||||
- טוויטר: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
||||
- גוגל+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
|
||||
- לינקדאין: [johnawasham](https://www.linkedin.com/in/johnawasham)
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
- [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:
|
||||
- [ ] לסטודנטים - [Google Careers: Technical Development Guide](https://www.google.com/about/careers/students/guide-to-technical-development.html)
|
||||
- [ ] איך החיפש עובד:
|
||||
- [ ] [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/)
|
||||
@ -247,28 +247,28 @@ 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)
|
||||
- [ ] סרטונים:
|
||||
- [ ] [איך לעבוד בגוגל: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk)
|
||||
- [ ] [איך לעבוד בגוגל: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw)
|
||||
- [ ] [איך לעבוד בגוגל - 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)
|
||||
- [ ] [איך לעבוד בגוגל: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8)
|
||||
|
||||
- [ ] Articles:
|
||||
- [ ] [Becoming a Googler in Three Steps](http://www.google.com/about/careers/lifeatgoogle/hiringprocess/)
|
||||
- [ ] מאמרים:
|
||||
- [ ] [איך להפוך לעובד בגוגל בשלושה שלבים](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)
|
||||
- [ ] _(מאוד מיושן)_ [איך להשיג עבודה בגוגל, שאלות של ראיונות, תהליך המיון](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:
|
||||
- [ ] קורסי הכנה:
|
||||
- [ ] [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):
|
||||
- [ ] תוספות (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)
|
||||
- [ ] [ארבעה צעדים לקראת גוגל בלי תואר](https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx)
|
||||
- [ ] [לוח מחיק](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:
|
||||
|
File diff suppressed because it is too large
Load Diff
415
README.md
415
README.md
@ -1,32 +1,43 @@
|
||||
# Google Interview University
|
||||
# Coding Interview University
|
||||
|
||||
>**I originally created this as a short to-do list of study topics for becoming a software engineer, but it grew to the large list you see today.
|
||||
The items listed here will prepare you well for in an interview at just about any software company, including the giants: Amazon, Facebook, Google or Microsoft.**
|
||||
>
|
||||
> *Best of luck to you!*
|
||||
|
||||
Translations:
|
||||
- [中文版本](README-cn.md)
|
||||
- [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/google-interview-university/issues/80)
|
||||
- [हिन्दी (in progress)](README-hn.md) [Issue #81](https://github.com/jwasham/google-interview-university/issues/81)
|
||||
- [עברית (in progress)](README-he.md) [Issue #82](https://github.com/jwasham/google-interview-university/issues/82)
|
||||
- [Tiếng Việt (in progress)](README-vn.md) [Issue #92](https://github.com/jwasham/google-interview-university/issues/92)
|
||||
|
||||
- [中文版本](translations/README-cn.md)
|
||||
- translations in progress:
|
||||
- [Español](https://github.com/jwasham/coding-interview-university/issues/80)
|
||||
- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
|
||||
- [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
|
||||
- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101)
|
||||
- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98)
|
||||
- [Vietnamese](https://github.com/jwasham/coding-interview-university/issues/92)
|
||||
- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90)
|
||||
- [French](https://github.com/jwasham/coding-interview-university/issues/89)
|
||||
- [Russian](https://github.com/jwasham/coding-interview-university/issues/87)
|
||||
- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106)
|
||||
- [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113)
|
||||
- [Korean](https://github.com/jwasham/coding-interview-university/issues/118)
|
||||
- [Telugu](https://github.com/jwasham/coding-interview-university/issues/117)
|
||||
- [Polish](https://github.com/jwasham/coding-interview-university/issues/122)
|
||||
- [German](https://github.com/jwasham/coding-interview-university/issues/135)
|
||||
- [Urdu](https://github.com/jwasham/coding-interview-university/issues/140)
|
||||
- [Thai](https://github.com/jwasham/coding-interview-university/issues/156)
|
||||
|
||||
## 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.
|
||||
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
|
||||
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 view 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).
|
||||
|
||||
@ -37,11 +48,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)
|
||||
- [Did I Get the Job?](#did-i-get-the-job)
|
||||
- [Follow Along with Me](#follow-along-with-me)
|
||||
- [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)
|
||||
@ -80,6 +87,7 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
- traversals: BFS, DFS
|
||||
- [Even More Knowledge](#even-more-knowledge)
|
||||
- [Recursion](#recursion)
|
||||
- [Dynamic Programming](#dynamic-programming)
|
||||
- [Object-Oriented Programming](#object-oriented-programming)
|
||||
- [Design Patterns](#design-patterns)
|
||||
- [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability)
|
||||
@ -91,6 +99,11 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
- [Scheduling](#scheduling)
|
||||
- [Implement system routines](#implement-system-routines)
|
||||
- [String searching & manipulations](#string-searching--manipulations)
|
||||
- [Tries](#tries)
|
||||
- [Floating Point Numbers](#floating-point-numbers)
|
||||
- [Unicode](#unicode)
|
||||
- [Endianness](#endianness)
|
||||
- [Networking](#networking)
|
||||
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience)
|
||||
- [Final Review](#final-review)
|
||||
- [Coding Question Practice](#coding-question-practice)
|
||||
@ -105,11 +118,7 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
|
||||
- [Additional Books](#additional-books)
|
||||
- [Additional Learning](#additional-learning)
|
||||
- [Dynamic Programming](#dynamic-programming)
|
||||
- [Compilers](#compilers)
|
||||
- [Floating Point Numbers](#floating-point-numbers)
|
||||
- [Unicode](#unicode)
|
||||
- [Endianness](#endianness)
|
||||
- [Emacs and vi(m)](#emacs-and-vim)
|
||||
- [Unix command line tools](#unix-command-line-tools)
|
||||
- [Information theory](#information-theory)
|
||||
@ -117,18 +126,17 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
- [Entropy](#entropy)
|
||||
- [Cryptography](#cryptography)
|
||||
- [Compression](#compression)
|
||||
- [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions)
|
||||
- [Computer Security](#computer-security)
|
||||
- [Garbage collection](#garbage-collection)
|
||||
- [Parallel Programming](#parallel-programming)
|
||||
- [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems)
|
||||
- [A*](#a)
|
||||
- [Fast Fourier Transform](#fast-fourier-transform)
|
||||
- [Bloom Filter](#bloom-filter)
|
||||
- [HyperLogLog](#hyperloglog)
|
||||
- [Locality-Sensitive Hashing](#locality-sensitive-hashing)
|
||||
- [van Emde Boas Trees](#van-emde-boas-trees)
|
||||
- [Augmented Data Structures](#augmented-data-structures)
|
||||
- [Tries](#tries)
|
||||
- [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees)
|
||||
- [Balanced search trees](#balanced-search-trees)
|
||||
- AVL trees
|
||||
@ -148,7 +156,6 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
- [Geometry, Convex hull](#geometry-convex-hull)
|
||||
- [Discrete math](#discrete-math)
|
||||
- [Machine Learning](#machine-learning)
|
||||
- [Go](#go)
|
||||
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
||||
- [Video Series](#video-series)
|
||||
- [Computer Science Courses](#computer-science-courses)
|
||||
@ -157,12 +164,6 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
||||
|
||||
## Why use it?
|
||||
|
||||
I'm following this plan to prepare for my Google interview. I've been building the web, building
|
||||
services, and launching startups since 1997. I have an economics degree, not a CS degree. I've
|
||||
been very successful in my career, but I want to work at Google. I want to progress into larger systems
|
||||
and get a real understanding of computer systems, algorithmic efficiency, data structure performance,
|
||||
low-level languages, and how it all works. And if you don't know any of it, Google won't hire you.
|
||||
|
||||
When I started this project, I didn't know a stack from a heap, didn't know Big-O anything, anything about trees, or how to
|
||||
traverse a graph. If I had to code a sorting algorithm, I can tell ya it wouldn't have been very good.
|
||||
Every data structure I've ever used was built into the language, and I didn't know how they worked
|
||||
@ -170,8 +171,7 @@ under the hood at all. I've never had to manage memory unless a process I was ru
|
||||
memory" error, and then I'd have to find a workaround. I've used a few multidimensional arrays in my life and
|
||||
thousands of associative arrays, but I've never created data structures from scratch.
|
||||
|
||||
But after going through this study plan I have high confidence I'll be hired. It's a long plan. It's going to take me
|
||||
months. If you are familiar with a lot of this already it will take you a lot less time.
|
||||
It's a long plan. It may take you months. If you are familiar with a lot of this already it will take you a lot less time.
|
||||
|
||||
## How to use it
|
||||
|
||||
@ -179,14 +179,14 @@ Everything below is an outline, and you should tackle the items in order from to
|
||||
|
||||
I'm using Github's special markdown flavor, including tasks lists to check progress.
|
||||
|
||||
- [x] Create a new branch so you can check items like this, just put an x in the brackets: [x]
|
||||
**Create a new branch so you can check items like this, just put an x in the brackets: [x]**
|
||||
|
||||
|
||||
Fork a branch and follow the commands below
|
||||
|
||||
`git checkout -b progress`
|
||||
|
||||
`git remote add jwasham https://github.com/jwasham/google-interview-university`
|
||||
`git remote add jwasham https://github.com/jwasham/coding-interview-university`
|
||||
|
||||
`git fetch --all`
|
||||
|
||||
@ -202,54 +202,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)
|
||||
|
||||
## Did I Get the Job?
|
||||
|
||||
I'm in the queue right now. Hope to interview soon.
|
||||
|
||||
Thanks for the referral, JP.
|
||||
|
||||
## Follow Along with Me
|
||||
|
||||
My story: [Why I Studied Full-Time for 8 Months for a Google Interview](https://medium.com/@googleyasheck/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
|
||||
|
||||
I'm on the journey, too. Follow along:
|
||||
|
||||
- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/)
|
||||
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
|
||||
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
||||
- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
|
||||
- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham)
|
||||
|
||||

|
||||
|
||||
## 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
|
||||
|
||||
- [x] 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.
|
||||
@ -261,42 +218,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)
|
||||
|
||||
- [ ] 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:
|
||||
- [ ] [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/)
|
||||
- [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
||||
|
||||
- [ ] 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.
|
||||
|
||||
## 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
|
||||
@ -312,7 +249,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)
|
||||
|
||||
@ -326,19 +262,15 @@ This is a shorter list than what I used. This is abbreviated to save you time.
|
||||
|
||||
- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html)
|
||||
- answers in C++ and Java
|
||||
- recommended in Google candidate coaching
|
||||
- this is a good warm-up for Cracking the Coding Interview
|
||||
- not too difficult, most problems may be easier than what you'll see in an interview (from what I've read)
|
||||
- [ ] [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:
|
||||
|
||||
- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
|
||||
- all code is in C++, very good if you're looking to use C++ in your interview
|
||||
- a good book on problem solving in general.
|
||||
- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
|
||||
- [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
|
||||
|
||||
### Computer Architecture
|
||||
|
||||
@ -401,7 +333,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
|
||||
@ -424,12 +356,6 @@ OR:
|
||||
- algorithm catalog:
|
||||
- this is the real reason you buy this book.
|
||||
- about to get to this part. Will update here once I've made my way through it.
|
||||
- To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace
|
||||
(and important) graph problems are – they should be part of every working programmer's toolkit. The book also
|
||||
covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half
|
||||
of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve
|
||||
them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a
|
||||
great way to learn how to identify hundreds of problem types."
|
||||
- Can rent it on kindle
|
||||
- Half.com is a great resource for textbooks at good prices.
|
||||
- Answers:
|
||||
@ -439,7 +365,6 @@ OR:
|
||||
|
||||
- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)
|
||||
- **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently.
|
||||
- To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book."
|
||||
- Half.com is a great resource for textbooks at good prices.
|
||||
- aka CLR, sometimes CLRS, because Stein was late to the game
|
||||
|
||||
@ -465,7 +390,7 @@ through my notes and making flashcards so I could review.
|
||||
|
||||
Read please so you won't make my mistakes:
|
||||
|
||||
[Retaining Computer Science Knowledge](https://googleyasheck.com/retaining-computer-science-knowledge/)
|
||||
[Retaining Computer Science Knowledge](https://startupnextdoor.com/retaining-computer-science-knowledge/)
|
||||
|
||||
### 2. Use Flashcards
|
||||
|
||||
@ -477,7 +402,10 @@ I made a mobile-first website so I could review on my phone and tablet, wherever
|
||||
Make your own for free:
|
||||
|
||||
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
|
||||
- [My flash cards database](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.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.
|
||||
- [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.
|
||||
|
||||
**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
|
||||
@ -500,8 +428,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen
|
||||
|
||||
## What you won't see covered
|
||||
|
||||
This big list all started as a personal to-do list made from Google interview coaching notes. These are prevalent
|
||||
technologies but were not mentioned in those notes:
|
||||
These are prevalent technologies but not part of this study plan:
|
||||
|
||||
- SQL
|
||||
- Javascript
|
||||
@ -711,7 +638,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
|
||||
- binary search using recursion
|
||||
|
||||
- ### Bitwise operations
|
||||
- [ ] [Bits cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32)
|
||||
- [ ] [Bits cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/bits-cheat-cheet.pdf) - you should know many of the powers of 2 from (2^1 to 2^16 and 2^32)
|
||||
- [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, <<
|
||||
- [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture))
|
||||
- [ ] Good intro:
|
||||
@ -892,17 +819,19 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
|
||||
- [ ] [Randomization: Matrix Multiply, Quicksort, Freivalds' algorithm (video)](https://www.youtube.com/watch?v=cNB2lADK3_s&index=8&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp)
|
||||
- [ ] [Sorting in Linear Time (video)](https://www.youtube.com/watch?v=pOKy3RZbSws&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf&index=14)
|
||||
|
||||
As a summary, here is a visual representation of [15 sorting algorithms](https://www.youtube.com/watch?v=kPRA0W1kECg).
|
||||
If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
||||
|
||||
## Graphs
|
||||
|
||||
Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
|
||||
|
||||
- Notes from Yegge:
|
||||
- There are three basic ways to represent a graph in memory:
|
||||
- Notes:
|
||||
- There are 4 basic ways to represent a graph in memory:
|
||||
- objects and pointers
|
||||
- matrix
|
||||
- adjacency matrix
|
||||
- adjacency list
|
||||
- adjacency map
|
||||
- Familiarize yourself with each representation and its pros & cons
|
||||
- BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code
|
||||
- When asked a question, look for a graph-based solution first, then move on if none.
|
||||
@ -933,13 +862,6 @@ Graphs can be used to represent many problems in computer science, so this secti
|
||||
- Full Coursera Course:
|
||||
- [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
|
||||
|
||||
- Yegge: If you get a chance, try to study up on fancier algorithms:
|
||||
- [ ] Dijkstra's algorithm - see above - 6.006
|
||||
- [ ] A*
|
||||
- [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)
|
||||
- [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE)
|
||||
- [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE)
|
||||
|
||||
- I'll implement:
|
||||
- [ ] DFS with adjacency list (recursive)
|
||||
- [ ] DFS with adjacency list (iterative with stack)
|
||||
@ -971,6 +893,31 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- [ ] [What Is Tail Recursion Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad)
|
||||
- [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
||||
|
||||
- ### Dynamic Programming
|
||||
- This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky.
|
||||
- I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved.
|
||||
- [ ] Videos:
|
||||
- the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718)
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749)
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406)
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22)
|
||||
- [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558)
|
||||
- [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
||||
- [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12)
|
||||
- [ ] List of individual DP problems (each is short):
|
||||
[Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
|
||||
- [ ] Yale Lecture notes:
|
||||
- [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming)
|
||||
- [ ] Coursera:
|
||||
- [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem)
|
||||
- [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm)
|
||||
- [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm)
|
||||
- [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm)
|
||||
- [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation)
|
||||
- [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment)
|
||||
- [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment)
|
||||
|
||||
- ### Object-Oriented Programming
|
||||
- [ ] [Optional: UML 2.0 Series (video)](https://www.youtube.com/watch?v=OkC7HKtiZC0&list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc)
|
||||
- [ ] Object-Oriented Software Engineering: Software Dev Using UML and Java (21 videos):
|
||||
@ -978,11 +925,10 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
||||
- [ ] SOLID OOP Principles:
|
||||
- [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE)
|
||||
- [ ] [SOLID Design Patterns in C# (video)](https://www.youtube.com/playlist?list=PL8m4NUhTQU48oiGCSgCP1FiJEcg_xJzyQ)
|
||||
- [ ] [SOLID Principles (video)](https://www.youtube.com/playlist?list=PL4CE9F710017EA77A)
|
||||
- [ ] S - [Single Responsibility Principle](http://www.oodesign.com/single-responsibility-principle.html) | [Single responsibility to each Object](http://www.javacodegeeks.com/2011/11/solid-single-responsibility-principle.html)
|
||||
- [more flavor](https://docs.google.com/open?id=0ByOwmqah_nuGNHEtcU5OekdDMkk)
|
||||
- [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension for not for modification](https://en.wikipedia.org/wiki/Open/closed_principle)
|
||||
- [ ] O - [Open/Closed Principal](http://www.oodesign.com/open-close-principle.html) | [On production level Objects are ready for extension but not for modification](https://en.wikipedia.org/wiki/Open/closed_principle)
|
||||
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1&hl=en)
|
||||
- [ ] L - [Liskov Substitution Principal](http://www.oodesign.com/liskov-s-substitution-principle.html) | [Base Class and Derived class follow ‘IS A’ principal](http://stackoverflow.com/questions/56860/what-is-the-liskov-substitution-principle)
|
||||
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en)
|
||||
@ -1020,6 +966,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- [ ] [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
|
||||
- I know the canonical book is "Design Patterns: Elements of Reusable Object-Oriented Software", but Head First is great for beginners to OO.
|
||||
- [ ] [Handy reference: 101 Design Patterns & Tips for Developers](https://sourcemaking.com/design-patterns-and-tips)
|
||||
- [ ] [Design patterns for humans](https://github.com/kamranahmedse/design-patterns-for-humans#structural-design-patterns)
|
||||
|
||||
|
||||
- ### Combinatorics (n choose k) & Probability
|
||||
- [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
|
||||
@ -1080,6 +1028,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- livelock
|
||||
- CPU activity, interrupts, context switching
|
||||
- Modern concurrency constructs with multicore processors
|
||||
- [Paging, segmentation and virtual memory (video)](https://www.youtube.com/watch?v=LKe7xK0bF7o&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=2)
|
||||
- [Interrupts (video)](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3)
|
||||
- [Scheduling (video)](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8)
|
||||
- Process resource needs (memory: code, static storage, stack, heap, and also file descriptors, i/o)
|
||||
- Thread resource needs (shares above (minus stack) with other threads in the same process but each has its own pc, stack counter, registers, and stack)
|
||||
- Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy.
|
||||
@ -1096,16 +1047,22 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
|
||||
|
||||
- ### Papers
|
||||
- These are Google papers and well-known papers.
|
||||
- Reading all from end to end with full comprehension will likely take more time than you have. I recommend being selective on papers and their sections.
|
||||
- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/)
|
||||
- [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf)
|
||||
- [implemented in Go](https://godoc.org/github.com/thomas11/csp)
|
||||
- [Love classic papers?](https://www.cs.cmu.edu/~crary/819-f09/)
|
||||
- [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf)
|
||||
- replaced by Colossus in 2012
|
||||
- [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)
|
||||
- mostly replaced by Cloud Dataflow?
|
||||
- [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf)
|
||||
- [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf)
|
||||
- [An Inside Look at Google BigQuery](https://cloud.google.com/files/BigQueryTechnicalWP.pdf)
|
||||
- [ ] [2006: The Chubby Lock Service for Loosely-Coupled Distributed Systems](https://research.google.com/archive/chubby-osdi06.pdf)
|
||||
- [ ] [2007: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf)
|
||||
- The Dynamo paper kicked off the NoSQL revolution
|
||||
- [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf)
|
||||
- [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf)
|
||||
- [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf)
|
||||
- [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
|
||||
- paper not available
|
||||
- [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker:
|
||||
@ -1160,14 +1117,62 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
|
||||
If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
||||
|
||||
---
|
||||
- ### Tries
|
||||
- Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits
|
||||
to track the path.
|
||||
- I read through code, but will not implement.
|
||||
- [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
|
||||
- [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
|
||||
- [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
|
||||
- [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1)
|
||||
- [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries)
|
||||
- [ ] Short course videos:
|
||||
- [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries)
|
||||
- [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries)
|
||||
- [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie)
|
||||
- [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure)
|
||||
- [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/)
|
||||
- [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU)
|
||||
- [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf)
|
||||
|
||||
- ### Floating Point Numbers
|
||||
- [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU)
|
||||
- [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
|
||||
|
||||
- ### Unicode
|
||||
- [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html)
|
||||
- [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/)
|
||||
|
||||
- ### Endianness
|
||||
- [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html)
|
||||
- [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo)
|
||||
- [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0)
|
||||
- Very technical talk for kernel devs. Don't worry if most is over your head.
|
||||
- The first half is enough.
|
||||
|
||||
- ### Networking
|
||||
- **if you have networking experience or want to be a systems engineer, expect questions**
|
||||
- otherwise, this is just good to know
|
||||
- [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro)
|
||||
- [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8)
|
||||
- [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0)
|
||||
- [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM)
|
||||
- [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As)
|
||||
- [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0)
|
||||
- [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM)
|
||||
- [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8)
|
||||
- [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j)
|
||||
- [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4)
|
||||
- [ ] Sockets:
|
||||
- [ ] [Java - Sockets - Introduction (video)](https://www.youtube.com/watch?v=6G_W54zuadg&t=6s)
|
||||
- [ ] [Socket Programming (video)](https://www.youtube.com/watch?v=G75vN2mnJeQ)
|
||||
|
||||
## System Design, Scalability, Data Handling
|
||||
- **You can expect system design questions if you have 4+ years of experience.**
|
||||
- Scalability and System Design are very large topics with many topics and resources, since
|
||||
there is a lot to consider when designing a software/hardware system that can scale.
|
||||
Expect to spend quite a bit of time on this.
|
||||
- Considerations from Yegge:
|
||||
- Considerations:
|
||||
- scalability
|
||||
- Distill large data sets to single values
|
||||
- Transform one data set to another
|
||||
@ -1256,7 +1261,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- For even more, see "Mining Massive Datasets" video series in the Video Series section.
|
||||
- [ ] Practicing the system design process: Here are some ideas to try working through on paper, each with some documentation on how it was handled in the real world:
|
||||
- review: [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
|
||||
- [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
||||
- [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
||||
- flow:
|
||||
1. Understand the problem and scope:
|
||||
- define the use cases, with interviewer's help
|
||||
@ -1281,7 +1286,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
- [Design a random unique ID generation system](https://blog.twitter.com/2010/announcing-snowflake)
|
||||
- [Design an online multiplayer card game](http://www.indieflashblog.com/how-to-create-an-asynchronous-multiplayer-game.html)
|
||||
- [Design a key-value database](http://www.slideshare.net/dvirsky/introduction-to-redis)
|
||||
- [Design a function to return the top k requests during past time interval]( https://icmi.cs.ucsb.edu/research/tech_reports/reports/2005-23.pdf)
|
||||
- [Design a picture sharing system](http://highscalability.com/blog/2011/12/6/instagram-architecture-14-million-users-terabytes-of-photos.html)
|
||||
- [Design a recommendation system](http://ijcai13.org/files/tutorial_slides/td3.pdf)
|
||||
- [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/)
|
||||
@ -1291,7 +1295,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
||||
|
||||
## Final Review
|
||||
|
||||
This section will have shorter videos that can you watch pretty quickly to review most of the important concepts.
|
||||
This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
|
||||
It's nice if you want a refresher often.
|
||||
|
||||
- [ ] Series of 2-3 minutes short subject videos (23 videos)
|
||||
@ -1345,8 +1349,6 @@ There is a great intro for methodical, communicative problem solving in an inter
|
||||
interview books, too, but I found this outstanding:
|
||||
[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
|
||||
|
||||
[My Process for Coding Interview (Book) Exercises](https://googleyasheck.com/my-process-for-coding-interview-exercises/)
|
||||
|
||||
No whiteboard at home? That makes sense. I'm a weirdo and have a big whiteboard. Instead of a whiteboard, pick up a
|
||||
large drawing pad from an art store. You can sit on the couch and practice. This is my "sofa whiteboard".
|
||||
I added the pen in the photo for scale. If you use a pen, you'll wish you could erase. Gets messy quick.
|
||||
@ -1377,6 +1379,10 @@ Take coding challenges every day, as many as you can.
|
||||
- [ ] [How to Find a Solution](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-find-a-solution/)
|
||||
- [ ] [How to Dissect a Topcoder Problem Statement](https://www.topcoder.com/community/data-science/data-science-tutorials/how-to-dissect-a-topcoder-problem-statement/)
|
||||
|
||||
Coding Interview Question Videos:
|
||||
- [IDeserve (88 videos)](https://www.youtube.com/watch?v=NBcqBddFbZw&list=PLamzFoFxwoNjPfxzaWqs7cZGsPYy0x_gI)
|
||||
- [Tushar Roy (5 playlists)](https://www.youtube.com/user/tusharroy2525/playlists?shelf_id=2&view=50&sort=dd)
|
||||
|
||||
Challenge sites:
|
||||
- [LeetCode](https://leetcode.com/)
|
||||
- [TopCoder](https://www.topcoder.com/)
|
||||
@ -1387,9 +1393,11 @@ Challenge sites:
|
||||
- [InterviewCake](https://www.interviewcake.com/)
|
||||
- [Geeks for Geeks](http://www.geeksforgeeks.org/)
|
||||
- [InterviewBit](https://www.interviewbit.com/invite/icjf)
|
||||
- [Sphere Online Judge (spoj)](http://www.spoj.com/)
|
||||
|
||||
Maybe:
|
||||
- [Mock interviewers from big companies](http://www.gainlo.co/)
|
||||
Mock Interviews:
|
||||
- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/)
|
||||
- [Pramp: Mock interviews from/with peers](https://www.pramp.com/)
|
||||
|
||||
## Once you're closer to the interview
|
||||
|
||||
@ -1400,7 +1408,6 @@ Maybe:
|
||||
|
||||
## Your Resume
|
||||
|
||||
- [Ten Tips for a (Slightly) Less Awful Resume](http://steve-yegge.blogspot.co.uk/2007_09_01_archive.html)
|
||||
- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed
|
||||
|
||||
|
||||
@ -1413,7 +1420,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]?
|
||||
@ -1440,8 +1447,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.
|
||||
@ -1451,7 +1456,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.
|
||||
|
||||
@ -1472,36 +1477,12 @@ 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
|
||||
|
||||
- ### Dynamic Programming
|
||||
- This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky.
|
||||
- I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved.
|
||||
- [ ] Videos:
|
||||
- the Skiena videos can be hard to follow since he sometimes uses the whiteboard, which is too small to see
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 19 - Introduction to Dynamic Programming (video)](https://youtu.be/Qc2ieXRgR0k?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=1718)
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 20 - Edit Distance (video)](https://youtu.be/IsmMhMdyeGY?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=2749)
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 21 - Dynamic Programming Examples (video)](https://youtu.be/o0V9eYF4UI8?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&t=406)
|
||||
- [ ] [Skiena: CSE373 2012 - Lecture 22 - Applications of Dynamic Programming (video)](https://www.youtube.com/watch?v=dRbMC1Ltl3A&list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b&index=22)
|
||||
- [ ] [Simonson: Dynamic Programming 0 (starts at 59:18) (video)](https://youtu.be/J5aJEcOr6Eo?list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3558)
|
||||
- [ ] [Simonson: Dynamic Programming I - Lecture 11 (video)](https://www.youtube.com/watch?v=0EzHjQ_SOeU&index=11&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm)
|
||||
- [ ] [Simonson: Dynamic programming II - Lecture 12 (video)](https://www.youtube.com/watch?v=v1qiRwuJU7g&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=12)
|
||||
- [ ] List of individual DP problems (each is short):
|
||||
[Dynamic Programming (video)](https://www.youtube.com/playlist?list=PLrmLmBdmIlpsHaNTPP_jHHDx_os9ItYXr)
|
||||
- [ ] Yale Lecture notes:
|
||||
- [ ] [Dynamic Programming](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#dynamicProgramming)
|
||||
- [ ] Coursera:
|
||||
- [ ] [The RNA secondary structure problem (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/80RrW/the-rna-secondary-structure-problem)
|
||||
- [ ] [A dynamic programming algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/PSonq/a-dynamic-programming-algorithm)
|
||||
- [ ] [Illustrating the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/oUEK2/illustrating-the-dp-algorithm)
|
||||
- [ ] [Running time of the DP algorithm (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/nfK2r/running-time-of-the-dp-algorithm)
|
||||
- [ ] [DP vs. recursive implementation (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/M999a/dp-vs-recursive-implementation)
|
||||
- [ ] [Global pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/UZ7o6/global-pairwise-sequence-alignment)
|
||||
- [ ] [Local pairwise sequence alignment (video)](https://www.coursera.org/learn/algorithmic-thinking-2/lecture/WnNau/local-pairwise-sequence-alignment)
|
||||
These topics will likely not come up in an interview, but I added them to help you become a well-rounded
|
||||
software engineer, and to be aware of certain technologies and algorithms, so you'll have a bigger toolbox.
|
||||
|
||||
- ### Compilers
|
||||
- [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
|
||||
@ -1509,23 +1490,8 @@ You're never really done.
|
||||
- [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
|
||||
- [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
|
||||
|
||||
- ### Floating Point Numbers
|
||||
- [ ] simple 8-bit: [Representation of Floating Point Numbers - 1 (video - there is an error in calculations - see video description)](https://www.youtube.com/watch?v=ji3SfClm8TU)
|
||||
- [ ] 32 bit: [IEEE754 32-bit floating point binary (video)](https://www.youtube.com/watch?v=50ZYcZebIec)
|
||||
|
||||
- ### Unicode
|
||||
- [ ] [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets]( http://www.joelonsoftware.com/articles/Unicode.html)
|
||||
- [ ] [What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text](http://kunststube.net/encoding/)
|
||||
|
||||
- ### Endianness
|
||||
- [ ] [Big And Little Endian](https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html)
|
||||
- [ ] [Big Endian Vs Little Endian (video)](https://www.youtube.com/watch?v=JrNF0KRAlyo)
|
||||
- [ ] [Big And Little Endian Inside/Out (video)](https://www.youtube.com/watch?v=oBSuXP-1Tc0)
|
||||
- Very technical talk for kernel devs. Don't worry if most is over your head.
|
||||
- The first half is enough.
|
||||
|
||||
- ### Emacs and vi(m)
|
||||
- suggested by Yegge, from an old Amazon recruiting post: Familiarize yourself with a unix-based code editor
|
||||
- Familiarize yourself with a unix-based code editor
|
||||
- vi(m):
|
||||
- [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr)
|
||||
- [VIM Adventures](http://vim-adventures.com/)
|
||||
@ -1546,7 +1512,7 @@ You're never really done.
|
||||
- [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk)
|
||||
|
||||
- ### Unix command line tools
|
||||
- suggested by Yegge, from an old Amazon recruiting post. I filled in the list below from good tools.
|
||||
- I filled in the list below from good tools.
|
||||
- [ ] bash
|
||||
- [ ] cat
|
||||
- [ ] grep
|
||||
@ -1599,20 +1565,6 @@ You're never really done.
|
||||
- [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H)
|
||||
- [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s)
|
||||
|
||||
- ### Networking
|
||||
- **if you have networking experience or want to be a systems engineer, expect questions**
|
||||
- otherwise, this is just good to know
|
||||
- [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro)
|
||||
- [ ] [UDP and TCP: Comparison of Transport Protocols](https://www.youtube.com/watch?v=Vdc8TCESIg8)
|
||||
- [ ] [TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0)
|
||||
- [ ] [Packet Transmission across the Internet. Networking & TCP/IP tutorial.](https://www.youtube.com/watch?v=nomyRJehhnM)
|
||||
- [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As)
|
||||
- [ ] [SSL and HTTPS](https://www.youtube.com/watch?v=S2iBR2ZlZf0)
|
||||
- [ ] [SSL/TLS](https://www.youtube.com/watch?v=Rp3iZUvXWlM)
|
||||
- [ ] [HTTP 2.0](https://www.youtube.com/watch?v=E9FxNzv1Tr8)
|
||||
- [ ] [Video Series (21 videos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j)
|
||||
- [ ] [Subnetting Demystified - Part 5 CIDR Notation](https://www.youtube.com/watch?v=t5xYI0jzOf4)
|
||||
|
||||
- ### Computer Security
|
||||
- [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||
- [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||
@ -1661,6 +1613,11 @@ You're never really done.
|
||||
- [ ] [MessagePack](http://msgpack.org/index.html)
|
||||
- [ ] [Avro](https://avro.apache.org/)
|
||||
|
||||
- ### A*
|
||||
- [ ] [A Search Algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm)
|
||||
- [ ] [A* Pathfinding Tutorial (video)](https://www.youtube.com/watch?v=KNXfSOx4eEE)
|
||||
- [ ] [A* Pathfinding (E01: algorithm explanation) (video)](https://www.youtube.com/watch?v=-L-WgKMFuhE)
|
||||
|
||||
- ### Fast Fourier Transform
|
||||
- [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/)
|
||||
- [ ] [What is a Fourier transform? What is it used for?](http://www.askamathematician.com/2012/09/q-what-is-a-fourier-transform-what-is-it-used-for/)
|
||||
@ -1690,24 +1647,6 @@ You're never really done.
|
||||
- ### Augmented Data Structures
|
||||
- [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950)
|
||||
|
||||
- ### Tries
|
||||
- Note there are different kinds of tries. Some have prefixes, some don't, and some use string instead of bits
|
||||
to track the path.
|
||||
- I read through code, but will not implement.
|
||||
- [ ] [Sedgewick - Tries (3 videos)](https://www.youtube.com/playlist?list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
|
||||
- [ ] [1. R Way Tries](https://www.youtube.com/watch?v=buq2bn8x3Vo&index=3&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
|
||||
- [ ] [2. Ternary Search Tries](https://www.youtube.com/watch?v=LelV-kkYMIg&index=2&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ)
|
||||
- [ ] [3. Character Based Operations](https://www.youtube.com/watch?v=00YaFPcC65g&list=PLe-ggMe31CTe9IyG9MB8vt5xUJeYgOYRQ&index=1)
|
||||
- [ ] [Notes on Data Structures and Programming Techniques](http://www.cs.yale.edu/homes/aspnes/classes/223/notes.html#Tries)
|
||||
- [ ] Short course videos:
|
||||
- [ ] [Introduction To Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries)
|
||||
- [ ] [Performance Of Tries (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/PvlZW/core-performance-of-tries)
|
||||
- [ ] [Implementing A Trie (video)](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/DFvd3/core-implementing-a-trie)
|
||||
- [ ] [The Trie: A Neglected Data Structure](https://www.toptal.com/java/the-trie-a-neglected-data-structure)
|
||||
- [ ] [TopCoder - Using Tries](https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/)
|
||||
- [ ] [Stanford Lecture (real world use case) (video)](https://www.youtube.com/watch?v=TJ8SkcUSdbU)
|
||||
- [ ] [MIT, Advanced Data Structures, Strings (can get pretty obscure about halfway through)](https://www.youtube.com/watch?v=NinWEPPrkDQ&index=16&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf)
|
||||
|
||||
- ### Balanced search trees
|
||||
- Know least one type of balanced binary tree (and know how it's implemented):
|
||||
- "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular.
|
||||
@ -1870,16 +1809,6 @@ You're never really done.
|
||||
- [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
|
||||
- Data School: http://www.dataschool.io/
|
||||
|
||||
- ### Go
|
||||
- [ ] Videos:
|
||||
- [ ] [Why Learn Go?](https://www.youtube.com/watch?v=FTl0tl9BGdc)
|
||||
- [ ] [Go Programming](https://www.youtube.com/watch?v=CF9S4QZuV30)
|
||||
- [ ] [A Tour of Go](https://www.youtube.com/watch?v=ytEkHepK08c)
|
||||
- [ ] Books:
|
||||
- [ ] [An Introduction to Programming in Go (read free online)](https://www.golang-book.com/books/intro)
|
||||
- [ ] [The Go Programming Language (Donovan & Kernighan)](https://www.amazon.com/Programming-Language-Addison-Wesley-Professional-Computing/dp/0134190440)
|
||||
- [ ] [Bootcamp](https://www.golang-book.com/guides/bootcamp)
|
||||
|
||||
--
|
||||
|
||||
## Additional Detail on Some Subjects
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 14 KiB |
File diff suppressed because one or more lines are too long
@ -33,7 +33,7 @@
|
||||
- [Python Cheat Sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/python-cheat-sheet-v1.pdf)
|
||||
- [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA)
|
||||
- [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_)
|
||||
- [Zero to Hero (video)](https://www.youtube.com/watch?v=emY34tSKXc4)
|
||||
- [Zero to Hero (video)](https://www.youtube.com/watch?v=TV9tSHFAFjg)
|
||||
- [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA)
|
||||
- [Faster Python (video)](https://www.youtube.com/watch?v=JDSGVvMwNM8)
|
||||
- [CPython Walk (video)](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6)
|
||||
|
2033
translations/README-ar.md
Normal file
2033
translations/README-ar.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,9 @@
|
||||
> * 原文地址:[Google Interview University](https://github.com/jwasham/google-interview-university)
|
||||
* 原文作者:[John Washam](https://github.com/jwasham)
|
||||
* 译文出自:[掘金翻译计划](https://github.com/xitu/gold-miner)
|
||||
* 译者:[Aleen](https://github.com/aleen42),[Newton](https://github.com/Newt0n),[bobmayuze](https://github.com/bobmayuze),[Jaeger](https://github.com/laobie),[sqrthree](https://github.com/sqrthree)
|
||||
* 译者:[aleen42](https://github.com/aleen42),[Newton](https://github.com/Newt0n),[bobmayuze](https://github.com/bobmayuze),[Jaeger](https://github.com/laobie),[sqrthree](https://github.com/sqrthree)
|
||||
|
||||
[](https://github.com/xitu/gold-miner)
|
||||
|
||||
## 这是?
|
||||
|
||||
@ -22,8 +24,8 @@
|
||||
- [如何使用它](#如何使用它)
|
||||
- [拥有一名 Googler 的心态](#拥有一名-googler-的心态)
|
||||
- [我得到了工作吗?](#我得到了工作吗)
|
||||
- [跟随着我](#跟随着我)
|
||||
- [不要自以为自己不够聪明](#不要自以为自己不够聪明)
|
||||
- [跟着我的脚步](#跟着我的脚步)
|
||||
- [不要妄自菲薄](#不要妄自菲薄)
|
||||
- [关于 Google](#关于-google)
|
||||
- [相关视频资源](#相关视频资源)
|
||||
- [面试过程 & 通用的面试准备](#面试过程--通用的面试准备)
|
||||
@ -143,7 +145,7 @@
|
||||
|
||||
感谢 JP 的这次介绍。
|
||||
|
||||
## 跟随着我
|
||||
## 跟着我的脚步
|
||||
|
||||
目前我仍在该计划的执行过程中,如果你想跟随我脚步去学习的话,可以登进我在 [GoogleyAsHeck.com](https://googleyasheck.com/) 上所写的博客。
|
||||
|
||||
@ -156,9 +158,9 @@
|
||||
|
||||

|
||||
|
||||
## 不要自以为自己不够聪明
|
||||
## 不要妄自菲薄
|
||||
|
||||
- Google 的工程师都是才智过人的。但是,就算是工作在 Google 的他们,仍然会因为自己不够聪明而感到一种不安。
|
||||
- Google 的工程师都是才智过人的。但是,就算是工作在 Google 的他们,仍然会因为觉得自己不够聪明而感到一种不安。
|
||||
- [天才程序员的神话](https://www.youtube.com/watch?v=0SARbwvhupQ)
|
||||
|
||||
## 关于 Google
|
||||
@ -234,7 +236,7 @@
|
||||
- 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
|
||||
|
||||
[在此查看相关语言的资源](programming-language-resources.md)
|
||||
[在此查看相关语言的资源](../programming-language-resources.md)
|
||||
|
||||
由于,我正在学习C、C++ 和 Python。因此,在下面你会看到部分关于它们的学习资料。相关书籍请看文章的底部。
|
||||
|
||||
@ -316,7 +318,7 @@
|
||||
|
||||
- [ ] **编译器**
|
||||
- [ ] [编译器是如何在 ~1 分钟内工作(视频)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
|
||||
- [ ] [Harvard CS50 —— 编译器(视频)](https://www.youtube.com/watch?v=CSZLNYF4Klo)
|
||||
- [ ] [Hardvard CS50 —— 编译器(视频)](https://www.youtube.com/watch?v=CSZLNYF4Klo)
|
||||
- [ ] [C++(视频)](https://www.youtube.com/watch?v=twodd1KFfGk)
|
||||
- [ ] [掌握编译器的优化(C++)(视频)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
|
||||
|
||||
@ -806,7 +808,7 @@
|
||||
- [ ] [尾递归 (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
||||
|
||||
- ### 动态规划(Dynamic Programming)
|
||||
- This subject can be pretty difficult, as each DP soluble problem must be defined as a recursion relation, and coming up with it can be tricky.
|
||||
- **注意** :动态规划是门极为重要的技术,尽管其并未被 Google 提供的准备手册提及,但你可能会对寻求最佳解的方式有点疑问,所以我将其列入这份表单。
|
||||
- 这一部分会有点困难,每个可以用动态规划解决的问题都必须先定义出递推关系,要推导出来可能会有点棘手。
|
||||
- 我建议先阅读和学习足够多的动态规划的例子,以便对解决 DP 问题的一般模式有个扎实的理解。
|
||||
|
||||
@ -1435,7 +1437,7 @@
|
||||
- [ ] [第六章 (第 2 部分 ) - Abstraction-Occurrence, General Hierarchy, Player-Role, Singleton, Observer, Delegation (视频)](https://www.youtube.com/watch?v=U8-PGsjvZc4&index=12&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
||||
- [ ] [第六章 (第 3 部分 ) - Adapter, Facade, Immutable, Read-Only Interface, Proxy (video)](https://www.youtube.com/watch?v=7sduBHuex4c&index=13&list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
||||
- [ ] [视频](https://www.youtube.com/playlist?list=PLF206E906175C7E07)
|
||||
- [ ] [Head Fisrt 设计模型](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
|
||||
- [ ] [Head First 设计模型](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124)
|
||||
- 尽管这本书叫做设计模式:重复使用模块,但是我还是认为Head First是对于新手来说很不错的书。
|
||||
- [ ] [基于实际操作对于入门开发者的建议](https://sourcemaking.com/design-patterns-and-tips)
|
||||
|
2014
translations/README-fr.md
Normal file
2014
translations/README-fr.md
Normal file
File diff suppressed because it is too large
Load Diff
1984
translations/README-id.md
Normal file
1984
translations/README-id.md
Normal file
File diff suppressed because it is too large
Load Diff
2054
translations/README-ko.md
Normal file
2054
translations/README-ko.md
Normal file
File diff suppressed because it is too large
Load Diff
1978
translations/README-pl.md
Normal file
1978
translations/README-pl.md
Normal file
File diff suppressed because it is too large
Load Diff
2026
translations/README-uk.md
Normal file
2026
translations/README-uk.md
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user