commit
ce6e9c6941
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
.idea
|
.idea
|
||||||
personal-9894.md
|
personal-9894.md
|
||||||
|
~$ADME-es.txt
|
||||||
|
translations/~$ADME-es.md
|
||||||
|
469
README.md
469
README.md
@ -1,38 +1,50 @@
|
|||||||
# Google Interview University
|
# Coding Interview University
|
||||||
|
|
||||||
Translations:
|
> 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. After going through this study plan, [I got hired
|
||||||
|
> as a Software Development Engineer at Amazon](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)!
|
||||||
|
> You probably won't have to study as much as I did. Anyway, everything you need is here.
|
||||||
|
>
|
||||||
|
> 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:
|
||||||
- [中文版本](translations/README-cn.md)
|
- [中文版本](translations/README-cn.md)
|
||||||
|
- [Tiếng Việt - Vietnamese](translations/README-vi.md)
|
||||||
- translations in progress:
|
- translations in progress:
|
||||||
- [Español](https://github.com/jwasham/google-interview-university/issues/80)
|
- [Español](https://github.com/jwasham/coding-interview-university/issues/80)
|
||||||
- [हिन्दी](https://github.com/jwasham/google-interview-university/issues/81)
|
- [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
|
||||||
- [עברית](https://github.com/jwasham/google-interview-university/issues/82)
|
- [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
|
||||||
- [Bahasa Indonesia](https://github.com/jwasham/google-interview-university/issues/101)
|
- [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101)
|
||||||
- [Arabic](https://github.com/jwasham/google-interview-university/issues/98)
|
- [Arabic](https://github.com/jwasham/coding-interview-university/issues/98)
|
||||||
- [Vietnamese](https://github.com/jwasham/google-interview-university/issues/92)
|
- [Turkish](https://github.com/jwasham/coding-interview-university/issues/90)
|
||||||
- [Turkish](https://github.com/jwasham/google-interview-university/issues/90)
|
- [French](https://github.com/jwasham/coding-interview-university/issues/89)
|
||||||
- [French](https://github.com/jwasham/google-interview-university/issues/89)
|
- [Russian](https://github.com/jwasham/coding-interview-university/issues/87)
|
||||||
- [Russian](https://github.com/jwasham/google-interview-university/issues/87)
|
- [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106)
|
||||||
- [Ukrainian](https://github.com/jwasham/google-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)
|
||||||
|
- [Greek](https://github.com/jwasham/coding-interview-university/issues/166)
|
||||||
|
- [Italian](https://github.com/jwasham/coding-interview-university/issues/170)
|
||||||
|
|
||||||
## What is it?
|
## 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.
|
This is meant for **new software engineers** or those switching from
|
||||||
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
|
software/web development to software engineering (where computer science knowledge is required). If you have
|
||||||
Steve Yegge's "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" and are reflected
|
many years of experience and are claiming many years of software engineering experience, expect a harder interview.
|
||||||
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
|
If you have many years of software/web development experience, note that large software companies like Google, Amazon,
|
||||||
from information received from my contact at Google. This is meant for **new software engineers** or those switching from
|
Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge.
|
||||||
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 want to be a reliability engineer or systems engineer, study more from the optional list (networking, security).
|
If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security).
|
||||||
|
|
||||||
@ -43,11 +55,7 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
|||||||
- [What is it?](#what-is-it)
|
- [What is it?](#what-is-it)
|
||||||
- [Why use it?](#why-use-it)
|
- [Why use it?](#why-use-it)
|
||||||
- [How to use it](#how-to-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)
|
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough)
|
||||||
- [About Google](#about-google)
|
|
||||||
- [About Video Resources](#about-video-resources)
|
- [About Video Resources](#about-video-resources)
|
||||||
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
|
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
|
||||||
- [Pick One Language for the Interview](#pick-one-language-for-the-interview)
|
- [Pick One Language for the Interview](#pick-one-language-for-the-interview)
|
||||||
@ -98,6 +106,11 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
|||||||
- [Scheduling](#scheduling)
|
- [Scheduling](#scheduling)
|
||||||
- [Implement system routines](#implement-system-routines)
|
- [Implement system routines](#implement-system-routines)
|
||||||
- [String searching & manipulations](#string-searching--manipulations)
|
- [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)
|
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience)
|
||||||
- [Final Review](#final-review)
|
- [Final Review](#final-review)
|
||||||
- [Coding Question Practice](#coding-question-practice)
|
- [Coding Question Practice](#coding-question-practice)
|
||||||
@ -113,9 +126,6 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
|||||||
- [Additional Books](#additional-books)
|
- [Additional Books](#additional-books)
|
||||||
- [Additional Learning](#additional-learning)
|
- [Additional Learning](#additional-learning)
|
||||||
- [Compilers](#compilers)
|
- [Compilers](#compilers)
|
||||||
- [Floating Point Numbers](#floating-point-numbers)
|
|
||||||
- [Unicode](#unicode)
|
|
||||||
- [Endianness](#endianness)
|
|
||||||
- [Emacs and vi(m)](#emacs-and-vim)
|
- [Emacs and vi(m)](#emacs-and-vim)
|
||||||
- [Unix command line tools](#unix-command-line-tools)
|
- [Unix command line tools](#unix-command-line-tools)
|
||||||
- [Information theory](#information-theory)
|
- [Information theory](#information-theory)
|
||||||
@ -123,18 +133,17 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
|||||||
- [Entropy](#entropy)
|
- [Entropy](#entropy)
|
||||||
- [Cryptography](#cryptography)
|
- [Cryptography](#cryptography)
|
||||||
- [Compression](#compression)
|
- [Compression](#compression)
|
||||||
- [Redes](#redes) (si tienes experiencia en redes o quieres ser ingeniero de sistemas, espera preguntas)
|
- [Computer Security](#computer-security)
|
||||||
- [Seguridad informática](#seguridad-informática)
|
- [Garbage collection](#garbage-collection)
|
||||||
- [Recolección de basura](#recolección-de-basura)
|
- [Parallel Programming](#parallel-programming)
|
||||||
- [Programación paralela](#programación-paralela)
|
|
||||||
- [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems)
|
- [Messaging, Serialization, and Queueing Systems](#messaging-serialization-and-queueing-systems)
|
||||||
|
- [A*](#a)
|
||||||
- [Fast Fourier Transform](#fast-fourier-transform)
|
- [Fast Fourier Transform](#fast-fourier-transform)
|
||||||
- [Bloom Filter](#bloom-filter)
|
- [Bloom Filter](#bloom-filter)
|
||||||
- [HyperLogLog](#hyperloglog)
|
- [HyperLogLog](#hyperloglog)
|
||||||
- [Locality-Sensitive Hashing](#locality-sensitive-hashing)
|
- [Locality-Sensitive Hashing](#locality-sensitive-hashing)
|
||||||
- [van Emde Boas Trees](#van-emde-boas-trees)
|
- [van Emde Boas Trees](#van-emde-boas-trees)
|
||||||
- [Augmented Data Structures](#augmented-data-structures)
|
- [Augmented Data Structures](#augmented-data-structures)
|
||||||
- [Tries](#tries)
|
|
||||||
- [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees)
|
- [N-ary (K-ary, M-ary) trees](#n-ary-k-ary-m-ary-trees)
|
||||||
- [Balanced search trees](#balanced-search-trees)
|
- [Balanced search trees](#balanced-search-trees)
|
||||||
- AVL trees
|
- AVL trees
|
||||||
@ -154,7 +163,6 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
|||||||
- [Geometry, Convex hull](#geometry-convex-hull)
|
- [Geometry, Convex hull](#geometry-convex-hull)
|
||||||
- [Discrete math](#discrete-math)
|
- [Discrete math](#discrete-math)
|
||||||
- [Machine Learning](#machine-learning)
|
- [Machine Learning](#machine-learning)
|
||||||
- [Go](#go)
|
|
||||||
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
- [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
||||||
- [Video Series](#video-series)
|
- [Video Series](#video-series)
|
||||||
- [Computer Science Courses](#computer-science-courses)
|
- [Computer Science Courses](#computer-science-courses)
|
||||||
@ -163,12 +171,6 @@ If you want to be a reliability engineer or systems engineer, study more from th
|
|||||||
|
|
||||||
## Why use it?
|
## 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
|
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.
|
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
|
Every data structure I've ever used was built into the language, and I didn't know how they worked
|
||||||
@ -176,8 +178,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
|
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.
|
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
|
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.
|
||||||
months. If you are familiar with a lot of this already it will take you a lot less time.
|
|
||||||
|
|
||||||
## How to use it
|
## How to use it
|
||||||
|
|
||||||
@ -192,7 +193,7 @@ I'm using Github's special markdown flavor, including tasks lists to check progr
|
|||||||
|
|
||||||
`git checkout -b progress`
|
`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`
|
`git fetch --all`
|
||||||
|
|
||||||
@ -208,54 +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)
|
[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
|
## 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)
|
- [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)
|
- [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
|
## About Video Resources
|
||||||
|
|
||||||
Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs.
|
Some videos are available only by enrolling in a Coursera, EdX, or Lynda.com class. These are called MOOCs.
|
||||||
@ -267,42 +225,25 @@ Sometimes the classes are not in session so you have to wait a couple of months,
|
|||||||
|
|
||||||
## Interview Process & General Interview Prep
|
## Interview Process & General Interview Prep
|
||||||
|
|
||||||
- [ ] Videos:
|
- [ ] [ABC: Always Be Coding](https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4)
|
||||||
- [ ] [How to Work at Google: Prepare for an Engineering Interview (video)](https://www.youtube.com/watch?v=ko-KkSmp-Lk)
|
- [ ] [Whiteboarding](https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1)
|
||||||
- [ ] [How to Work at Google: Example Coding/Engineering Interview (video)](https://www.youtube.com/watch?v=XKu_SEDAykw)
|
- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
|
||||||
- [ ] [How to Work at Google - Candidate Coaching Session (video)](https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be)
|
- [ ] [Demystifying Tech Recruiting](https://www.youtube.com/watch?v=N233T0epWTs)
|
||||||
- [ ] [Google Recruiters Share Technical Interview Tips (video)](https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be)
|
- [ ] Cracking The Coding Interview Set 1:
|
||||||
- [ ] [How to Work at Google: Tech Resume Preparation (video)](https://www.youtube.com/watch?v=8npJLXkcmu8)
|
- [ ] [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:
|
- [ ] Prep Course:
|
||||||
- [ ] [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):
|
- [ ] [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.
|
- Learn how to make yourself ready for software engineer interviews from a former Google interviewer.
|
||||||
|
- [ ] [Python for Data Structures, Algorithms, and Interviews! (paid course)](https://www.udemy.com/python-for-data-structures-algorithms-and-interviews/):
|
||||||
- [ ] Additional (not suggested by Google but I added):
|
- A Python centric interview prep course which covers data structures, algorithms, mock interviews and much more.
|
||||||
- [ ] [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
|
## 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 large companies, these are solid choices:
|
||||||
|
|
||||||
You can use a language you are comfortable in to do the coding part of the interview, but for Google, these are solid choices:
|
|
||||||
|
|
||||||
- C++
|
- C++
|
||||||
- Java
|
- Java
|
||||||
@ -318,7 +259,6 @@ You need to be very comfortable in the language and be knowledgeable.
|
|||||||
Read more about choices:
|
Read more about choices:
|
||||||
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
|
- http://www.byte-by-byte.com/choose-the-right-language-for-your-coding-interview/
|
||||||
- http://blog.codingforinterviews.com/best-programming-language-jobs/
|
- 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)
|
[See language resources here](programming-language-resources.md)
|
||||||
|
|
||||||
@ -332,19 +272,17 @@ 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)
|
- [ ] [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
|
- answers in C++ and Java
|
||||||
- recommended in Google candidate coaching
|
|
||||||
- this is a good warm-up for Cracking the Coding Interview
|
- 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)
|
- 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/)
|
- [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/)
|
||||||
- answers in Java
|
- 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:
|
If you have tons of extra time:
|
||||||
|
|
||||||
- [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
|
- [ ] [Elements of Programming Interviews (C++ version)](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
|
- [ ] Elements of Programming Interviews (Java version)
|
||||||
- a good book on problem solving in general.
|
- [book](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
|
||||||
|
- [Companion Project - Method Stub and Test Cases for Every Problem in the Book](https://github.com/gardncl/elements-of-programming-interviews)
|
||||||
|
|
||||||
### Computer Architecture
|
### Computer Architecture
|
||||||
|
|
||||||
@ -362,7 +300,7 @@ If short on time:
|
|||||||
- Chapter 7 - Composite Data Types and Memory Objects
|
- Chapter 7 - Composite Data Types and Memory Objects
|
||||||
- Chapter 9 - CPU Architecture
|
- Chapter 9 - CPU Architecture
|
||||||
- Chapter 10 - Instruction Set Architecture
|
- Chapter 10 - Instruction Set Architecture
|
||||||
- Chapter 11 - Memory Architecture and Organization
|
- Chapter 11 - Memory Architecture and Organization
|
||||||
|
|
||||||
If you have more time (I want this book):
|
If you have more time (I want this book):
|
||||||
|
|
||||||
@ -373,7 +311,7 @@ If you have more time (I want this book):
|
|||||||
|
|
||||||
**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions.
|
**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions.
|
||||||
|
|
||||||
If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems.
|
If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems.
|
||||||
**You can skip all the video lectures in this project**, unless you'd like a review.
|
**You can skip all the video lectures in this project**, unless you'd like a review.
|
||||||
|
|
||||||
[Additional language-specific resources here.](programming-language-resources.md)
|
[Additional language-specific resources here.](programming-language-resources.md)
|
||||||
@ -382,7 +320,7 @@ If you read though one of these, you should have all the data structures and alg
|
|||||||
|
|
||||||
I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome.
|
I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome.
|
||||||
|
|
||||||
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
|
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
|
||||||
- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
|
- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
|
||||||
|
|
||||||
If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource.
|
If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource.
|
||||||
@ -407,7 +345,7 @@ OR:
|
|||||||
- by Goodrich, Tamassia, Goldwasser
|
- by Goodrich, Tamassia, Goldwasser
|
||||||
- I loved this book. It covered everything and more.
|
- I loved this book. It covered everything and more.
|
||||||
- Pythonic code
|
- 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
|
### Optional Books
|
||||||
@ -430,12 +368,6 @@ OR:
|
|||||||
- algorithm catalog:
|
- algorithm catalog:
|
||||||
- this is the real reason you buy this book.
|
- 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.
|
- 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
|
- Can rent it on kindle
|
||||||
- Half.com is a great resource for textbooks at good prices.
|
- Half.com is a great resource for textbooks at good prices.
|
||||||
- Answers:
|
- Answers:
|
||||||
@ -445,7 +377,6 @@ OR:
|
|||||||
|
|
||||||
- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)
|
- [ ] [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.
|
- **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.
|
- Half.com is a great resource for textbooks at good prices.
|
||||||
- aka CLR, sometimes CLRS, because Stein was late to the game
|
- aka CLR, sometimes CLRS, because Stein was late to the game
|
||||||
|
|
||||||
@ -454,7 +385,7 @@ OR:
|
|||||||
that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter.
|
that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter.
|
||||||
|
|
||||||
- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~
|
- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~
|
||||||
- A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results.
|
- A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results.
|
||||||
- Would rather spend time on coding problems from another book or online coding problems.
|
- Would rather spend time on coding problems from another book or online coding problems.
|
||||||
|
|
||||||
|
|
||||||
@ -471,7 +402,7 @@ through my notes and making flashcards so I could review.
|
|||||||
|
|
||||||
Read please so you won't make my mistakes:
|
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
|
### 2. Use Flashcards
|
||||||
|
|
||||||
@ -483,16 +414,16 @@ I made a mobile-first website so I could review on my phone and tablet, wherever
|
|||||||
Make your own for free:
|
Make your own for free:
|
||||||
|
|
||||||
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
|
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
|
||||||
- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db):
|
- [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):
|
- [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
|
**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
|
same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
|
||||||
your brain.
|
your brain.
|
||||||
|
|
||||||
An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. It uses a repetition system to help you remember.
|
An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. It uses a repetition system to help you remember.
|
||||||
It's user-friendly, available on all platforms and has a cloud sync system. It costs $25 on iOS but is free on other platforms.
|
It's user-friendly, available on all platforms and has a cloud sync system. It costs $25 on iOS but is free on other platforms.
|
||||||
|
|
||||||
My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya))
|
My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya))
|
||||||
@ -509,8 +440,7 @@ There are a lot of distractions that can take up valuable time. Focus and concen
|
|||||||
|
|
||||||
## What you won't see covered
|
## 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
|
These are prevalent technologies but not part of this study plan:
|
||||||
technologies but were not mentioned in those notes:
|
|
||||||
|
|
||||||
- SQL
|
- SQL
|
||||||
- Javascript
|
- Javascript
|
||||||
@ -538,9 +468,9 @@ Why code in all of these?
|
|||||||
I may not have time to do all of these for every subject, but I'll try.
|
I may not have time to do all of these for every subject, but I'll try.
|
||||||
|
|
||||||
You can see my code here:
|
You can see my code here:
|
||||||
- [C] (https://github.com/jwasham/practice-c)
|
- [C](https://github.com/jwasham/practice-c)
|
||||||
- [C++] (https://github.com/jwasham/practice-cpp)
|
- [C++](https://github.com/jwasham/practice-cpp)
|
||||||
- [Python] (https://github.com/jwasham/practice-python)
|
- [Python](https://github.com/jwasham/practice-python)
|
||||||
|
|
||||||
You don't need to memorize the guts of every algorithm.
|
You don't need to memorize the guts of every algorithm.
|
||||||
|
|
||||||
@ -551,9 +481,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
|
|||||||
- [ ] **Learn C**
|
- [ ] **Learn C**
|
||||||
- C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying.
|
- C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying.
|
||||||
- [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
|
- [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
|
||||||
- This is a short book, but it will give you a great handle on the C language and if you practice it a little
|
- This is a short book, but it will give you a great handle on the C language and if you practice it a little
|
||||||
you'll quickly get proficient. Understanding C helps you understand how programs and memory work.
|
you'll quickly get proficient. Understanding C helps you understand how programs and memory work.
|
||||||
- [answers to questions](https://github.com/lekkas/c-algorithms)
|
- [answers to questions](https://github.com/lekkas/c-algorithms)
|
||||||
|
|
||||||
- [ ] **How computers process a program:**
|
- [ ] **How computers process a program:**
|
||||||
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
|
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
|
||||||
@ -720,7 +650,7 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
|
|||||||
- binary search using recursion
|
- binary search using recursion
|
||||||
|
|
||||||
- ### Bitwise operations
|
- ### 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: &, |, ^, ~, >>, <<
|
- [ ] Get a really good understanding of manipulating bits with: &, |, ^, ~, >>, <<
|
||||||
- [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture))
|
- [ ] [words](https://en.wikipedia.org/wiki/Word_(computer_architecture))
|
||||||
- [ ] Good intro:
|
- [ ] Good intro:
|
||||||
@ -901,17 +831,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)
|
- [ ] [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)
|
- [ ] [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)
|
If you need more detail on this subject, see "Sorting" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
||||||
|
|
||||||
## Graphs
|
## Graphs
|
||||||
|
|
||||||
Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
|
Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting were.
|
||||||
|
|
||||||
- Notes from Yegge:
|
- Notes:
|
||||||
- There are three basic ways to represent a graph in memory:
|
- There are 4 basic ways to represent a graph in memory:
|
||||||
- objects and pointers
|
- objects and pointers
|
||||||
- matrix
|
- adjacency matrix
|
||||||
- adjacency list
|
- adjacency list
|
||||||
|
- adjacency map
|
||||||
- Familiarize yourself with each representation and its pros & cons
|
- 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
|
- 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.
|
- When asked a question, look for a graph-based solution first, then move on if none.
|
||||||
@ -942,13 +874,6 @@ Graphs can be used to represent many problems in computer science, so this secti
|
|||||||
- Full Coursera Course:
|
- Full Coursera Course:
|
||||||
- [ ] [Algorithms on Graphs (video)](https://www.coursera.org/learn/algorithms-on-graphs/home/welcome)
|
- [ ] [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:
|
- I'll implement:
|
||||||
- [ ] DFS with adjacency list (recursive)
|
- [ ] DFS with adjacency list (recursive)
|
||||||
- [ ] DFS with adjacency list (iterative with stack)
|
- [ ] DFS with adjacency list (iterative with stack)
|
||||||
@ -981,7 +906,6 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
- [ ] [Tail Recursion (video)](https://www.youtube.com/watch?v=L1jjXGfxozc)
|
||||||
|
|
||||||
- ### Dynamic Programming
|
- ### Dynamic Programming
|
||||||
- **NOTE:** DP is a valuable technique, but it is not mentioned on any of the prep material Google provides. But you could get a problem where DP provides an optimal solution. So I'm including it.
|
|
||||||
- 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.
|
- 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.
|
- I suggest looking at many examples of DP problems until you have a solid understanding of the pattern involved.
|
||||||
- [ ] Videos:
|
- [ ] Videos:
|
||||||
@ -1013,11 +937,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)
|
- [OOSE: Software Dev Using UML and Java](https://www.youtube.com/playlist?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO)
|
||||||
- [ ] SOLID OOP Principles:
|
- [ ] SOLID OOP Principles:
|
||||||
- [ ] [Bob Martin SOLID Principles of Object Oriented and Agile Design (video)](https://www.youtube.com/watch?v=TMuno5RZNeE)
|
- [ ] [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)
|
- [ ] [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)
|
- [ ] 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)
|
- [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)
|
- [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)
|
- [ ] 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)
|
- [more flavor](http://docs.google.com/a/cleancoder.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh&hl=en)
|
||||||
@ -1055,6 +978,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)
|
- [ ] [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.
|
- 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)
|
- [ ] [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
|
- ### Combinatorics (n choose k) & Probability
|
||||||
- [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
|
- [ ] [Math Skills: How to find Factorial, Permutation and Combination (Choose) (video)](https://www.youtube.com/watch?v=8RRo6Ti9d0U)
|
||||||
@ -1115,6 +1040,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- livelock
|
- livelock
|
||||||
- CPU activity, interrupts, context switching
|
- CPU activity, interrupts, context switching
|
||||||
- Modern concurrency constructs with multicore processors
|
- 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)
|
- 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)
|
- 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.
|
- Forking is really copy on write (read-only) until the new process writes to memory, then it does a full copy.
|
||||||
@ -1131,11 +1059,10 @@ 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)
|
- [ ] [Mutex in Python](https://www.youtube.com/watch?v=0zaPs8OtyKY)
|
||||||
|
|
||||||
- ### Papers
|
- ### 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.
|
- 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)
|
- [ ] [1978: Communicating Sequential Processes](http://spinroot.com/courses/summer/Papers/hoare_1978.pdf)
|
||||||
- [implemented in Go](https://godoc.org/github.com/thomas11/csp)
|
- [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)
|
- [ ] [2003: The Google File System](http://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf)
|
||||||
- replaced by Colossus in 2012
|
- 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)
|
- [ ] [2004: MapReduce: Simplified Data Processing on Large Clusters]( http://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf)
|
||||||
@ -1143,6 +1070,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- [ ] [2006: Bigtable: A Distributed Storage System for Structured Data](https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.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)
|
- [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)
|
- [ ] [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)](https://www.akkadia.org/drepper/cpumemory.pdf)
|
- [ ] [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)
|
||||||
- [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.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)
|
- [ ] [2010: Dremel: Interactive Analysis of Web-Scale Datasets](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/36632.pdf)
|
||||||
@ -1197,17 +1126,65 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2)
|
- [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2)
|
||||||
- [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66)
|
- [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66)
|
||||||
- [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
- [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
||||||
|
|
||||||
If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
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
|
## System Design, Scalability, Data Handling
|
||||||
- **You can expect system design questions if you have 4+ years of experience.**
|
- **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
|
- 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.
|
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.
|
Expect to spend quite a bit of time on this.
|
||||||
- Considerations from Yegge:
|
- Considerations:
|
||||||
- scalability
|
- scalability
|
||||||
- Distill large data sets to single values
|
- Distill large data sets to single values
|
||||||
- Transform one data set to another
|
- Transform one data set to another
|
||||||
@ -1220,7 +1197,8 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- simplicity and robustness
|
- simplicity and robustness
|
||||||
- tradeoffs
|
- tradeoffs
|
||||||
- performance analysis and optimization
|
- performance analysis and optimization
|
||||||
- [ ] **START HERE**: [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
|
- [ ] **START HERE**: [The System Design Primer](https://github.com/donnemartin/system-design-primer)
|
||||||
|
- [ ] [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
|
||||||
- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023)
|
- [ ] [How Do I Prepare To Answer Design Questions In A Technical Inverview?](https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023)
|
||||||
- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/)
|
- [ ] [8 Things You Need to Know Before a System Design Interview](http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/)
|
||||||
- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/)
|
- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/)
|
||||||
@ -1295,8 +1273,9 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability)
|
- [Timelines at Scale](https://www.infoq.com/presentations/Twitter-Timeline-Scalability)
|
||||||
- For even more, see "Mining Massive Datasets" video series in the Video Series section.
|
- 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:
|
- [ ] 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/)
|
- review: [The System Design Primer](https://github.com/donnemartin/system-design-primer)
|
||||||
- [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
- [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
|
||||||
|
- [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
||||||
- flow:
|
- flow:
|
||||||
1. Understand the problem and scope:
|
1. Understand the problem and scope:
|
||||||
- define the use cases, with interviewer's help
|
- define the use cases, with interviewer's help
|
||||||
@ -1384,8 +1363,6 @@ There is a great intro for methodical, communicative problem solving in an inter
|
|||||||
interview books, too, but I found this outstanding:
|
interview books, too, but I found this outstanding:
|
||||||
[Algorithm design canvas](http://www.hiredintech.com/algorithm-design/)
|
[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
|
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".
|
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.
|
I added the pen in the photo for scale. If you use a pen, you'll wish you could erase. Gets messy quick.
|
||||||
@ -1416,19 +1393,30 @@ 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 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/)
|
- [ ] [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:
|
Challenge sites:
|
||||||
- [LeetCode](https://leetcode.com/)
|
- [LeetCode](https://leetcode.com/)
|
||||||
- [TopCoder](https://www.topcoder.com/)
|
- [TopCoder](https://www.topcoder.com/)
|
||||||
- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems)
|
- [Project Euler (math-focused)](https://projecteuler.net/index.php?section=problems)
|
||||||
- [Codewars](http://www.codewars.com)
|
- [Codewars](http://www.codewars.com)
|
||||||
|
- [HackerEarth](https://www.hackerearth.com/)
|
||||||
- [HackerRank](https://www.hackerrank.com/)
|
- [HackerRank](https://www.hackerrank.com/)
|
||||||
- [Codility](https://codility.com/programmers/)
|
- [Codility](https://codility.com/programmers/)
|
||||||
- [InterviewCake](https://www.interviewcake.com/)
|
- [InterviewCake](https://www.interviewcake.com/)
|
||||||
- [Geeks for Geeks](http://www.geeksforgeeks.org/)
|
- [Geeks for Geeks](http://www.geeksforgeeks.org/)
|
||||||
- [InterviewBit](https://www.interviewbit.com/invite/icjf)
|
- [InterviewBit](https://www.interviewbit.com/invite/icjf)
|
||||||
|
- [Sphere Online Judge (spoj)](http://www.spoj.com/)
|
||||||
|
|
||||||
Maybe:
|
Challenge repos:
|
||||||
- [Mock interviewers from big companies](http://www.gainlo.co/)
|
- [Interactive Coding Interview Challenges in Python](https://github.com/donnemartin/interactive-coding-challenges)
|
||||||
|
|
||||||
|
Mock Interviews:
|
||||||
|
- [Gainlo.co: Mock interviewers from big companies](http://www.gainlo.co/)
|
||||||
|
- [Pramp: Mock interviews from/with peers](https://www.pramp.com/)
|
||||||
|
- [Refdash: Mock interviews](https://refdash.com/)
|
||||||
|
|
||||||
## Once you're closer to the interview
|
## Once you're closer to the interview
|
||||||
|
|
||||||
@ -1439,7 +1427,6 @@ Maybe:
|
|||||||
|
|
||||||
## Your Resume
|
## 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
|
- See Resume prep items in Cracking The Coding Interview and back of Programming Interviews Exposed
|
||||||
|
|
||||||
|
|
||||||
@ -1452,7 +1439,7 @@ Have a story, not just data, about something you accomplished.
|
|||||||
- What's a tough problem you've solved?
|
- What's a tough problem you've solved?
|
||||||
- Biggest challenges faced?
|
- Biggest challenges faced?
|
||||||
- Best/worst designs seen?
|
- 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?
|
- 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?
|
- Which of your skills or experiences would be assets in the role and why?
|
||||||
- What did you most enjoy at [job x / project y]?
|
- What did you most enjoy at [job x / project y]?
|
||||||
@ -1479,8 +1466,6 @@ Have a story, not just data, about something you accomplished.
|
|||||||
|
|
||||||
Congratulations!
|
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.
|
Keep learning.
|
||||||
|
|
||||||
You're never really done.
|
You're never really done.
|
||||||
@ -1490,7 +1475,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
|
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.
|
any software engineering job. You'll be a much more well-rounded software engineer.
|
||||||
|
|
||||||
@ -1511,35 +1496,21 @@ 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)
|
- [ ] [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
|
- aka the "Gang Of Four" book, or GOF
|
||||||
- the canonical design patterns book
|
- 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/)
|
- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/)
|
||||||
|
|
||||||
## Additional Learning
|
## Additional Learning
|
||||||
|
|
||||||
|
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
|
- ### Compilers
|
||||||
- [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
|
- [ ] [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
|
||||||
- [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo)
|
- [ ] [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo)
|
||||||
- [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
|
- [ ] [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
|
||||||
- [ ] [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)
|
- [ ] [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)
|
- ### 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):
|
- vi(m):
|
||||||
- [Editing With vim 01 - Installation, Setup, and The Modes (video)](https://www.youtube.com/watch?v=5givLEMcINQ&index=1&list=PL13bz4SHGmRxlZVmWQ9DvXo1fEg4UdGkr)
|
- [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/)
|
- [VIM Adventures](http://vim-adventures.com/)
|
||||||
@ -1560,7 +1531,7 @@ You're never really done.
|
|||||||
- [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk)
|
- [(maybe) Org Mode In Depth: Managing Structure (video)](https://www.youtube.com/watch?v=nsGYet02bEk)
|
||||||
|
|
||||||
- ### Unix command line tools
|
- ### 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
|
- [ ] bash
|
||||||
- [ ] cat
|
- [ ] cat
|
||||||
- [ ] grep
|
- [ ] grep
|
||||||
@ -1613,46 +1584,30 @@ You're never really done.
|
|||||||
- [ ] [Compressor Head videos](https://www.youtube.com/playlist?list=PLOU2XLYxmsIJGErt5rrCqaSGTMyyqNt2H)
|
- [ ] [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)
|
- [ ] [(optional) Google Developers Live: GZIP is not enough!](https://www.youtube.com/watch?v=whGwm0Lky2s)
|
||||||
|
|
||||||
- ### Redes
|
|
||||||
- **si tienes experiencia en redes o quieres ser ingeniero en sistemas, espera preguntas**
|
|
||||||
- pero de cualquier forma es bueno saber lo siguiente
|
|
||||||
- [ ] [Khan Academy](https://www.khanacademy.org/computing/computer-science/internet-intro)
|
|
||||||
- [ ] [UDP y TCP: Comparación de protocolos de transporte](https://www.youtube.com/watch?v=Vdc8TCESIg8)
|
|
||||||
- [ ] [TCP/IP y el modelo OSI, ¡explicado!](https://www.youtube.com/watch?v=e5DEVa9eSN0)
|
|
||||||
- [ ] [Transmisión de paquetes a través del Internet. Tutorial en redes y TCP/IP.](https://www.youtube.com/watch?v=nomyRJehhnM)
|
|
||||||
- [ ] [HTTP](https://www.youtube.com/watch?v=WGJrLqtX7As)
|
|
||||||
- [ ] [SSL y 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)
|
|
||||||
- [ ] [Serie de vídeos (21 vídeos)](https://www.youtube.com/playlist?list=PLEbnTDJUr_IegfoqO4iPnPYQui46QqT0j)
|
|
||||||
- [ ] [Subredes desmistificadas - Notación CIDR Parte 5](https://www.youtube.com/watch?v=t5xYI0jzOf4)
|
|
||||||
|
|
||||||
- ### Seguridad informática
|
- ### Computer Security
|
||||||
- [MIT (23 vídeos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Introducción, modelos de amenaza](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Ataques de secuestro de control](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2)
|
- [ ] [Control Hijacking Attacks](https://www.youtube.com/watch?v=6bwzNg5qQ0o&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=2)
|
||||||
- [ ] [Desbordamientos de búfer: ataques y defensas](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3)
|
- [ ] [Buffer Overflow Exploits and Defenses](https://www.youtube.com/watch?v=drQyrzRoRiA&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=3)
|
||||||
- [ ] [Separación de privilegios](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Privilege Separation](https://www.youtube.com/watch?v=6SIJmoE9L9g&index=4&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Capacidades](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Capabilities](https://www.youtube.com/watch?v=8VqTSY-11F4&index=5&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Aislamiento de código nativo](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6)
|
- [ ] [Sandboxing Native Code](https://www.youtube.com/watch?v=VEV74hwASeU&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh&index=6)
|
||||||
- [ ] [Modelo de seguridad web](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Web Security Model](https://www.youtube.com/watch?v=chkFBigodIw&index=7&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Asegurando aplicaciones web](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Securing Web Applications](https://www.youtube.com/watch?v=EBQIGy1ROLY&index=8&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Ejecución simbólica](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Symbolic Execution](https://www.youtube.com/watch?v=yRVZPvHYHzw&index=9&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Seguridad de redes](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Network Security](https://www.youtube.com/watch?v=SIEVvk3NVuk&index=11&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Protocolos de red](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Network Protocols](https://www.youtube.com/watch?v=QOtA76ga_fY&index=12&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
- [ ] [Ataque de canal lateral](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
- [ ] [Side-Channel Attacks](https://www.youtube.com/watch?v=PuVMkSEcPiI&index=15&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
||||||
|
|
||||||
- ### Recolección de basura
|
- ### Garbage collection
|
||||||
- [ ] [Recolección de basura (Java); Aumentando estructuras de datos (vídeo)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25)
|
- [ ] [Garbage collection (Java); Augmenting data str (video)](https://www.youtube.com/watch?v=StdfeXaKGEc&list=PL-XXv-cvA_iAlnI-BQr9hjqADPBtujFJd&index=25)
|
||||||
- [ ] [Compiladores (vídeo)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff)
|
- [ ] [Compilers (video)](https://www.youtube.com/playlist?list=PLO9y7hOkmmSGTy5z6HZ-W4k2y8WXF7Bff)
|
||||||
- [ ] [Recolección de basura en Python (vídeo)](https://www.youtube.com/watch?v=iHVs_HkjdmI)
|
- [ ] [GC in Python (video)](https://www.youtube.com/watch?v=iHVs_HkjdmI)
|
||||||
- [ ] [Deep Dive Java: ¡La recolección de basura es buena!](https://www.infoq.com/presentations/garbage-collection-benefits)
|
- [ ] [Deep Dive Java: Garbage Collection is Good!](https://www.infoq.com/presentations/garbage-collection-benefits)
|
||||||
- [ ] [Deep Dive Python: La recolección de basura en CPython (vídeo)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3)
|
- [ ] [Deep Dive Python: Garbage Collection in CPython (video)](https://www.youtube.com/watch?v=P-8Z0-MhdQs&list=PLdzf4Clw0VbOEWOS_sLhT_9zaiQDrS5AR&index=3)
|
||||||
|
|
||||||
- ### Programación paralela
|
|
||||||
- [ ] [Coursera (Scala)](https://www.coursera.org/learn/parprog1/home/week/1)
|
|
||||||
- [ ] [Python eficiente para computación paralela de alto rendimiento (vídeo)](https://www.youtube.com/watch?v=uY85GkaYzBk)
|
|
||||||
|
|
||||||
|
- ### Parallel Programming
|
||||||
- ### Messaging, Serialization, and Queueing Systems
|
- ### Messaging, Serialization, and Queueing Systems
|
||||||
- [ ] [Thrift](https://thrift.apache.org/)
|
- [ ] [Thrift](https://thrift.apache.org/)
|
||||||
- [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html)
|
- [Tutorial](http://thrift-tutorial.readthedocs.io/en/latest/intro.html)
|
||||||
@ -1675,6 +1630,11 @@ You're never really done.
|
|||||||
- [ ] [MessagePack](http://msgpack.org/index.html)
|
- [ ] [MessagePack](http://msgpack.org/index.html)
|
||||||
- [ ] [Avro](https://avro.apache.org/)
|
- [ ] [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
|
- ### Fast Fourier Transform
|
||||||
- [ ] [An Interactive Guide To The Fourier Transform](https://betterexplained.com/articles/an-interactive-guide-to-the-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/)
|
- [ ] [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/)
|
||||||
@ -1704,24 +1664,6 @@ You're never really done.
|
|||||||
- ### Augmented Data Structures
|
- ### Augmented Data Structures
|
||||||
- [ ] [CS 61B Lecture 39: Augmenting Data Structures](https://youtu.be/zksIj9O8_jc?list=PL4BBB74C7D2A1049C&t=950)
|
- [ ] [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
|
- ### Balanced search trees
|
||||||
- Know least one type of balanced binary tree (and know how it's implemented):
|
- 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.
|
- "Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular.
|
||||||
@ -1884,16 +1826,6 @@ You're never really done.
|
|||||||
- [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
|
- [Machine Learning for Software Engineers](https://github.com/ZuzooVn/machine-learning-for-software-engineers)
|
||||||
- Data School: http://www.dataschool.io/
|
- 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
|
## Additional Detail on Some Subjects
|
||||||
@ -2034,4 +1966,3 @@ Sit back and enjoy. "Netflix and skill" :P
|
|||||||
|
|
||||||
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
|
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
|
||||||
- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
|
- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
|
||||||
|
|
||||||
|
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 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)
|
- [Python in One Video](https://www.youtube.com/watch?v=N4mEzFDjqtA)
|
||||||
- [Series on 3.4 (video)](https://www.youtube.com/playlist?list=PL6gx4Cwl9DGAcbMi1sH6oAMk4JHw91mC_)
|
- [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)
|
- [Statistics for Hackers (video)](https://www.youtube.com/watch?v=Iq9DzN6mvYA)
|
||||||
- [Faster Python (video)](https://www.youtube.com/watch?v=JDSGVvMwNM8)
|
- [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)
|
- [CPython Walk (video)](https://www.youtube.com/watch?v=LhadeL7_EIU&list=PLzV58Zm8FuBL6OAv1Yu6AwXZrnsFbbR0S&index=6)
|
||||||
|
2033
translations/ar/README.md
Normal file
2033
translations/ar/README.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -1174,7 +1174,7 @@
|
|||||||
|
|
||||||
- [ ] C++ Primer Plus, 6th Edition
|
- [ ] C++ Primer Plus, 6th Edition
|
||||||
|
|
||||||
- [ ] [《Unxi 环境高级编程》 The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info)
|
- [ ] [《Unix 环境高级编程》 The Unix Programming Environment](http://product.half.ebay.com/The-UNIX-Programming-Environment-by-Brian-W-Kernighan-and-Rob-Pike-1983-Other/54385&tg=info)
|
||||||
|
|
||||||
- [ ] [《编程珠玑》 Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
|
- [ ] [《编程珠玑》 Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
|
||||||
|
|
||||||
@ -1437,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)
|
- [ ] [第六章 (第 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)
|
- [ ] [第六章 (第 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)
|
- [ ] [视频](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是对于新手来说很不错的书。
|
- 尽管这本书叫做设计模式:重复使用模块,但是我还是认为Head First是对于新手来说很不错的书。
|
||||||
- [ ] [基于实际操作对于入门开发者的建议](https://sourcemaking.com/design-patterns-and-tips)
|
- [ ] [基于实际操作对于入门开发者的建议](https://sourcemaking.com/design-patterns-and-tips)
|
||||||
|
|
1950
translations/es/README.md
Normal file
1950
translations/es/README.md
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,48 +1,44 @@
|
|||||||
# Google Interview University
|
# Google Interview University
|
||||||
|
|
||||||
Original: [англійською](README.md)
|
Translations:
|
||||||
|
- [中文版本](README-cn.md)
|
||||||
|
- [Español (in progress)](README-es.md) [Issue #80](https://github.com/jwasham/google-interview-university/issues/80)
|
||||||
|
- मानक हिन्दी (in progress) [Issue #81](https://github.com/jwasham/google-interview-university/issues/81)
|
||||||
|
|
||||||
## Що це?
|
## C'est quoi?
|
||||||
|
|
||||||
Це мій багатомісячний навчальний план для перетворення з веб-розробника (самоучки без ступеню з CS)
|
C'est un plan d'études de plusieurs mois pour aller d'un développeur web (Autodidacte, sans diplôme en informatique) à ingénieur logiciel google.
|
||||||
на розробника програмного забезпечення у Google.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Цей довгий список був видобутий і розширений з **тренувальних нотаток Google**, отже це речі, які ви повинні знати.
|
Cette longue liste a été extraite et étendue de **Google's coaching notes**, ce sont donc des choses que vous devez savoir.
|
||||||
Тут є додаткові пункти, які я додав знизу — вони можуть зустрітися в інтерв’ю або бути корисними у вирішенні завдань.
|
En bas, j'ai rajouté des unités supplémentaires qui peuvent être soulevées pendant l'entretien, ou qui peuvent être utiles pour résoudre des problèmes. Plusieurs unités proviennent de
|
||||||
Багато пунктів взято з «[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)» Steve Yegge,
|
"[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" par Steve Yegge, et sont parfois reflétées mot pour mot dans les notes de coaching de google.
|
||||||
вони іноді дослівно відображаються в тренувальних нотатках Google.
|
|
||||||
|
|
||||||
Я обрав, що вам потрібно знати, базуючись на рекомендаціях Yegge. Я вніс зміни до вимог Yegge на основі інформації,
|
J'ai épuré ce que vous devez savoir de ce qui est recommendé par Yegge. J'ai modifié les prérequis de Yegge.
|
||||||
отриманої від мого контакту у Google. Це призначено для **нових розробників програмного забезпечення** або тих,
|
D'après les informations reçues de la part des contact travaillant à Google. Ceci est destiné aux **new software engineers** ou aux developpeur logiciel/web qui souhaitent devenir des ingénieurs en génie logiciel (où la science de l'informatique est requise). Si vous avez plusieurs années d'expérience et vous déclarez plusieurs années d'éxperience en génie logiciel attendez vous à un entretien plus dur.
|
||||||
що переходять з веб-розробки на розробку програмного забезпечення (де потрібне знання CS). Якщо у вас багаторічний
|
[Read more here](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/).
|
||||||
досвід, і ви заявляєте про багаторічний досвід розробки програмного забезпечення, очікуйте на більш жорстке інтерв’ю.
|
|
||||||
[Прочитайте більше](https://googleyasheck.com/what-you-need-to-know-for-your-google-interview-and-what-you-dont/).
|
|
||||||
|
|
||||||
Якщо у вас багато років досвіду веб-розробки, майте на увазі, що Google відрізняє розробку програмного забезпечення
|
Si vous avez plusieurs années d'experience en development web/logiciel, notez que google font une distinction entre le développement logiciel et l'ingénieurie en génie civil.
|
||||||
від веб-розробки, і вони потребують знання Computer Science.
|
|
||||||
|
|
||||||
Якщо ви хочете бути інженером з надійності або системним інженером, вчіть більше за опціональним списком (мережі,
|
|
||||||
безпека).
|
|
||||||
|
|
||||||
|
Si vous souhaitez devenir ingénieur de fiabilité, ou ingénieur systèmes, suivez plus de cours de la liste optionelle (Réseau, sécurité)
|
||||||
---
|
---
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [What is it?](#what-is-it)
|
- [C'est quoi?](#what-is-it)
|
||||||
- [Why use it?](#why-use-it)
|
- [Pourquoi l'utilisier?](#why-use-it)
|
||||||
- [How to use it](#how-to-use-it)
|
- [Comment s'en servir](#how-to-use-it)
|
||||||
- [Get in a Googley Mood](#get-in-a-googley-mood)
|
- [Se mettre dans l'humeur Googley](#get-in-a-googley-mood)
|
||||||
- [Did I Get the Job?](#did-i-get-the-job)
|
- [J'ai décroché le Job?](#did-i-get-the-job)
|
||||||
- [Follow Along with Me](#follow-along-with-me)
|
- [Follow Along with Me](#follow-along-with-me)
|
||||||
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough)
|
- [Don't feel you aren't smart enough](#dont-feel-you-arent-smart-enough)
|
||||||
- [About Google](#about-google)
|
- [A propos de Google](#about-google)
|
||||||
- [About Video Resources](#about-video-resources)
|
- [A propos des ressources vidéo](#about-video-resources)
|
||||||
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
|
- [Déroulement de l'entretien & préparations générales à l'entretien](#interview-process--general-interview-prep)
|
||||||
- [Pick One Language for the Interview](#pick-one-language-for-the-interview)
|
- [Choisir un langage pour l'entretien](#pick-one-language-for-the-interview)
|
||||||
- [Book List](#book-list)
|
- [List de livres](#book-list)
|
||||||
- [Before you Get Started](#before-you-get-started)
|
- [Avant de commencer](#before-you-get-started)
|
||||||
- [What you Won't See Covered](#what-you-wont-see-covered)
|
- [What you Won't See Covered](#what-you-wont-see-covered)
|
||||||
- [Prerequisite Knowledge](#prerequisite-knowledge)
|
- [Prerequisite Knowledge](#prerequisite-knowledge)
|
||||||
- [The Daily Plan](#the-daily-plan)
|
- [The Daily Plan](#the-daily-plan)
|
||||||
@ -54,45 +50,45 @@ Original: [англійською](README.md)
|
|||||||
- [Queue](#queue)
|
- [Queue](#queue)
|
||||||
- [Hash table](#hash-table)
|
- [Hash table](#hash-table)
|
||||||
- [More Knowledge](#more-knowledge)
|
- [More Knowledge](#more-knowledge)
|
||||||
- [Binary search](#binary-search)
|
- [Recherche dichotomique](#binary-search)
|
||||||
- [Bitwise operations](#bitwise-operations)
|
- [Opérations bit à bit](#bitwise-operations)
|
||||||
- [Trees](#trees)
|
- [Arbes](#trees)
|
||||||
- [Trees - Notes & Background](#trees---notes--background)
|
- [Arbres - Notes & Background](#trees---notes--background)
|
||||||
- [Binary search trees: BSTs](#binary-search-trees-bsts)
|
- [Arbres binaires de recherche: BSTs](#binary-search-trees-bsts)
|
||||||
- [Heap / Priority Queue / Binary Heap](#heap--priority-queue--binary-heap)
|
- [Tas / File de Priorité / Tas binaire](#heap--priority-queue--binary-heap)
|
||||||
- balanced search trees (general concept, not details)
|
- Arbre de recherche equilibré (general concept, not details)
|
||||||
- traversals: preorder, inorder, postorder, BFS, DFS
|
- Parcours : Préfixe, infixe, postfixe, BFS, DFS
|
||||||
- [Sorting](#sorting)
|
- [Tri](#sorting)
|
||||||
- selection
|
- sélection
|
||||||
- insertion
|
- insertion
|
||||||
- heapsort
|
- tri par tas
|
||||||
- quicksort
|
- tri rapide
|
||||||
- merge sort
|
- tri fusion
|
||||||
- [Graphs](#graphs)
|
- [Graphes](#graphs)
|
||||||
- directed
|
- orienté
|
||||||
- undirected
|
- non orienté
|
||||||
- adjacency matrix
|
- matrice d'adjacence
|
||||||
- adjacency list
|
- liste d'adjacence
|
||||||
- traversals: BFS, DFS
|
- parcours: BFS, DFS
|
||||||
- [Even More Knowledge](#even-more-knowledge)
|
- [Even More Knowledge](#even-more-knowledge)
|
||||||
- [Recursion](#recursion)
|
- [Récursivité](#recursion)
|
||||||
- [Object-Oriented Programming](#object-oriented-programming)
|
- [Programmation orientée objet](#object-oriented-programming)
|
||||||
- [Design Patterns](#design-patterns)
|
- [Design Patterns](#design-patterns)
|
||||||
- [Combinatorics (n choose k) & Probability](#combinatorics-n-choose-k--probability)
|
- [Combinatoire (k parmi n) et probabilité](#combinatorics-n-choose-k--probability)
|
||||||
- [NP, NP-Complete and Approximation Algorithms](#np-np-complete-and-approximation-algorithms)
|
- [NP, NP-complet et les Algorithmes d'approximation](#np-np-complete-and-approximation-algorithms)
|
||||||
- [Caches](#caches)
|
- [Caches](#caches)
|
||||||
- [Processes and Threads](#processes-and-threads)
|
- [Processus et Threads](#processes-and-threads)
|
||||||
- [Papers](#papers)
|
- [Documents](#papers)
|
||||||
- [Testing](#testing)
|
- [Tests](#testing)
|
||||||
- [Scheduling](#scheduling)
|
- [Ordonnancement](#scheduling)
|
||||||
- [Implement system routines](#implement-system-routines)
|
- [Implémentation des routines système](#implement-system-routines)
|
||||||
- [String searching & manipulations](#string-searching--manipulations)
|
- [String searching & manipulations](#string-searching--manipulations)
|
||||||
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience)
|
- [System Design, Scalability, Data Handling](#system-design-scalability-data-handling) (if you have 4+ years experience)
|
||||||
- [Final Review](#final-review)
|
- [Final Review](#final-review)
|
||||||
- [Coding Question Practice](#coding-question-practice)
|
- [Coding Question Practice](#coding-question-practice)
|
||||||
- [Coding exercises/challenges](#coding-exerciseschallenges)
|
- [Coding exercises/challenges](#coding-exerciseschallenges)
|
||||||
- [Once you're closer to the interview](#once-youre-closer-to-the-interview)
|
- [Once you're closer to the interview](#once-youre-closer-to-the-interview)
|
||||||
- [Your Resume](#your-resume)
|
- [Votre CV](#your-resume)
|
||||||
- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes)
|
- [Be thinking of for when the interview comes](#be-thinking-of-for-when-the-interview-comes)
|
||||||
- [Have questions for the interviewer](#have-questions-for-the-interviewer)
|
- [Have questions for the interviewer](#have-questions-for-the-interviewer)
|
||||||
- [Once You've Got The Job](#once-youve-got-the-job)
|
- [Once You've Got The Job](#once-youve-got-the-job)
|
||||||
@ -175,7 +171,7 @@ 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.
|
I'm using Github's special markdown flavor, including tasks lists to check progress.
|
||||||
|
|
||||||
**Create a new branch so you can check items like this, just put an x in the brackets: [x]**
|
- [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
|
Fork a branch and follow the commands below
|
||||||
@ -215,7 +211,7 @@ I'm in the queue right now. Hope to interview soon.
|
|||||||
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)
|
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:
|
I'm on the journey, too. Follow along:
|
||||||
|
|
||||||
- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/)
|
- **Blog**: [GoogleyAsHeck.com](https://googleyasheck.com/)
|
||||||
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
|
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
|
||||||
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
||||||
@ -352,7 +348,7 @@ If short on time:
|
|||||||
- Chapter 7 - Composite Data Types and Memory Objects
|
- Chapter 7 - Composite Data Types and Memory Objects
|
||||||
- Chapter 9 - CPU Architecture
|
- Chapter 9 - CPU Architecture
|
||||||
- Chapter 10 - Instruction Set Architecture
|
- Chapter 10 - Instruction Set Architecture
|
||||||
- Chapter 11 - Memory Architecture and Organization
|
- Chapter 11 - Memory Architecture and Organization
|
||||||
|
|
||||||
If you have more time (I want this book):
|
If you have more time (I want this book):
|
||||||
|
|
||||||
@ -363,7 +359,7 @@ If you have more time (I want this book):
|
|||||||
|
|
||||||
**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions.
|
**You need to choose a language for the interview (see above).** Here are my recommendations by language. I don't have resources for all languages. I welcome additions.
|
||||||
|
|
||||||
If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems.
|
If you read though one of these, you should have all the data structures and algorithms knowledge you'll need to start doing coding problems.
|
||||||
**You can skip all the video lectures in this project**, unless you'd like a review.
|
**You can skip all the video lectures in this project**, unless you'd like a review.
|
||||||
|
|
||||||
[Additional language-specific resources here.](programming-language-resources.md)
|
[Additional language-specific resources here.](programming-language-resources.md)
|
||||||
@ -372,7 +368,7 @@ If you read though one of these, you should have all the data structures and alg
|
|||||||
|
|
||||||
I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome.
|
I haven't read these two, but they are highly rated and written by Sedgewick. He's awesome.
|
||||||
|
|
||||||
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
|
- [ ] [Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching](https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882/)
|
||||||
- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
|
- [ ] [Algorithms in C++ Part 5: Graph Algorithms](https://www.amazon.com/Algorithms-Part-Graph-3rd-Pt-5/dp/0201361183/)
|
||||||
|
|
||||||
If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource.
|
If you have a better recommendation for C++, please let me know. Looking for a comprehensive resource.
|
||||||
@ -444,7 +440,7 @@ OR:
|
|||||||
that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter.
|
that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter.
|
||||||
|
|
||||||
- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~
|
- ~~"Algorithms and Programming: Problems and Solutions" by Shen~~
|
||||||
- A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results.
|
- A fine book, but after working through problems on several pages I got frustrated with the Pascal, do while loops, 1-indexed arrays, and unclear post-condition satisfaction results.
|
||||||
- Would rather spend time on coding problems from another book or online coding problems.
|
- Would rather spend time on coding problems from another book or online coding problems.
|
||||||
|
|
||||||
|
|
||||||
@ -473,16 +469,13 @@ I made a mobile-first website so I could review on my phone and tablet, wherever
|
|||||||
Make your own for free:
|
Make your own for free:
|
||||||
|
|
||||||
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
|
- [Flashcards site repo](https://github.com/jwasham/computer-science-flash-cards)
|
||||||
- [My flash cards database (old - 1200 cards)](https://github.com/jwasham/computer-science-flash-cards/blob/master/cards-jwasham.db):
|
- [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 (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.
|
|
||||||
|
|
||||||
**Note on flashcards:** The first time you recognize you know the answer, don't mark it as known. You have to see the
|
**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
|
same card and answer it several times correctly before you really know it. Repetition will put that knowledge deeper in
|
||||||
your brain.
|
your brain.
|
||||||
|
|
||||||
An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. It uses a repetition system to help you remember.
|
An alternative to using my flashcard site is [Anki](http://ankisrs.net/), which has been recommended to me numerous times. It uses a repetition system to help you remember.
|
||||||
It's user-friendly, available on all platforms and has a cloud sync system. It costs $25 on iOS but is free on other platforms.
|
It's user-friendly, available on all platforms and has a cloud sync system. It costs $25 on iOS but is free on other platforms.
|
||||||
|
|
||||||
My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya))
|
My flashcard database in Anki format: https://ankiweb.net/shared/info/25173560 (thanks [@xiewenya](https://github.com/xiewenya))
|
||||||
@ -541,9 +534,9 @@ Write code on a whiteboard or paper, not a computer. Test with some sample input
|
|||||||
- [ ] **Learn C**
|
- [ ] **Learn C**
|
||||||
- C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying.
|
- C is everywhere. You'll see examples in books, lectures, videos, *everywhere* while you're studying.
|
||||||
- [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
|
- [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
|
||||||
- This is a short book, but it will give you a great handle on the C language and if you practice it a little
|
- This is a short book, but it will give you a great handle on the C language and if you practice it a little
|
||||||
you'll quickly get proficient. Understanding C helps you understand how programs and memory work.
|
you'll quickly get proficient. Understanding C helps you understand how programs and memory work.
|
||||||
- [answers to questions](https://github.com/lekkas/c-algorithms)
|
- [answers to questions](https://github.com/lekkas/c-algorithms)
|
||||||
|
|
||||||
- [ ] **How computers process a program:**
|
- [ ] **How computers process a program:**
|
||||||
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
|
- [ ] [How does CPU execute program (video)](https://www.youtube.com/watch?v=42KTvGYQYnA)
|
||||||
@ -1104,12 +1097,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- replaced by Colossus in 2012
|
- 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)
|
- [ ] [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?
|
- mostly replaced by Cloud Dataflow?
|
||||||
- [ ] [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: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](https://www.akkadia.org/drepper/cpumemory.pdf)
|
- [ ] [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)
|
||||||
- [ ] [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/)
|
- [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
|
||||||
- paper not available
|
- paper not available
|
||||||
- [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker:
|
- [ ] 2012: AddressSanitizer: A Fast Address Sanity Checker:
|
||||||
@ -1161,15 +1149,15 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|||||||
- [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2)
|
- [ ] [4. Boyer-Moore](https://www.youtube.com/watch?v=fI7Ch6pZXfM&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66&index=2)
|
||||||
- [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66)
|
- [ ] [5. Rabin-Karp](https://www.youtube.com/watch?v=QzI0p6zDjK4&index=1&list=PLe-ggMe31CTdAdjXB3lIuf2maubzo9t66)
|
||||||
- [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
- [ ] [Search pattern in text (video)](https://www.coursera.org/learn/data-structures/lecture/tAfHI/search-pattern-in-text)
|
||||||
|
|
||||||
If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## System Design, Scalability, Data Handling
|
## System Design, Scalability, Data Handling
|
||||||
- **You can expect system design questions if you have 4+ years of experience.**
|
- **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
|
- 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.
|
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.
|
Expect to spend quite a bit of time on this.
|
||||||
- Considerations from Yegge:
|
- Considerations from Yegge:
|
||||||
- scalability
|
- scalability
|
||||||
@ -1285,6 +1273,7 @@ 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 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 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 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 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 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/)
|
- [Design a URL-shortener system: copied from above](http://www.hiredintech.com/system-design/the-system-design-process/)
|
||||||
@ -2023,4 +2012,3 @@ Sit back and enjoy. "Netflix and skill" :P
|
|||||||
|
|
||||||
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
|
- [Directory of Online CS Courses](https://github.com/open-source-society/computer-science)
|
||||||
- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
|
- [Directory of CS Courses (many with online lectures)](https://github.com/prakhar1989/awesome-courses)
|
||||||
|
|
@ -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
|
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.
|
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.
|
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)
|
[](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.
|
Thanks for the referral, JP.
|
||||||
|
|
||||||
## Follow Along with Me
|
## 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/)
|
- **בלוג**: [GoogleyAsHeck.com](https://googleyasheck.com/)
|
||||||
- Twitter: [@googleyasheck](https://twitter.com/googleyasheck)
|
- טוויטר: [@googleyasheck](https://twitter.com/googleyasheck)
|
||||||
- Twitter: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
- טוויטר: [@StartupNextDoor](https://twitter.com/StartupNextDoor)
|
||||||
- Google+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
|
- גוגל+: [+Googleyasheck](https://plus.google.com/+Googleyasheck)
|
||||||
- LinkedIn: [johnawasham](https://www.linkedin.com/in/johnawasham)
|
- לינקדאין: [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.
|
- 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)
|
- [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)
|
- [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)
|
- [ ] לסטודנטים - [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)
|
- [ ] [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 - the story](https://www.google.com/insidesearch/howsearchworks/thestory/)
|
||||||
- [ ] [How Search Works](https://www.google.com/insidesearch/howsearchworks/)
|
- [ ] [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
|
## 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)
|
- [ ] [איך לעבוד בגוגל: 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)
|
- [ ] [איך לעבוד בגוגל: 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)
|
- [ ] [איך לעבוד בגוגל - 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)
|
- [ ] [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)
|
- [ ] [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
|
- 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)
|
- [ ] [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):
|
- [ ] [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.
|
- 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)
|
- [ ] [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)
|
- [ ] [ארבעה צעדים לקראת גוגל בלי תואר](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/@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)
|
- [ ] [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/)
|
- [ ] [Effective Whiteboarding during Programming Interviews](http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/)
|
||||||
- [ ] Cracking The Coding Interview Set 1:
|
- [ ] Cracking The Coding Interview Set 1:
|
1609
translations/hi/README.md
Normal file
1609
translations/hi/README.md
Normal file
File diff suppressed because it is too large
Load Diff
1984
translations/id/README.md
Normal file
1984
translations/id/README.md
Normal file
File diff suppressed because it is too large
Load Diff
2054
translations/ko/README.md
Normal file
2054
translations/ko/README.md
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
translations/mock-up/its-dangerous-to-go-alone-pycon.pptx
Normal file
BIN
translations/mock-up/its-dangerous-to-go-alone-pycon.pptx
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
1939
translations/th/README.md
Normal file
1939
translations/th/README.md
Normal file
File diff suppressed because it is too large
Load Diff
1939
translations/uk/README.md
Normal file
1939
translations/uk/README.md
Normal file
File diff suppressed because it is too large
Load Diff
1957
translations/vi/README.md
Normal file
1957
translations/vi/README.md
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user