|
@@ -1,28 +1,29 @@
|
|
-# Google Interview University
|
|
|
|
|
|
+# Coding Interview University
|
|
|
|
|
|
->**I originally created this as a short to-do list of study topics, but it grew to the large list you see today. Working at
|
|
|
|
-Google was the original motivator, hence the name. [I didn't get an interview at Google](https://googleyasheck.com/i-didnt-get-hired-heres-why/),
|
|
|
|
-but the repo name lives on, and it would mess up a lot of folks to change it now. The items listed here will prepare you
|
|
|
|
-for a career at just about any software company, including the giants: Amazon, Microsoft, Google, and Facebook.**
|
|
|
|
|
|
+>**I originally created this as a short to-do list of study topics for becoming a software engineer, but it grew to the large list you see today.
|
|
|
|
+The items listed here will prepare you well for in an interview at just about any software company, including the giants: Amazon, Facebook, Google or Microsoft.**
|
|
>
|
|
>
|
|
> *Best of luck to you!*
|
|
> *Best of luck to you!*
|
|
|
|
|
|
Translations:
|
|
Translations:
|
|
- [中文版本](translations/README-cn.md)
|
|
- [中文版本](translations/README-cn.md)
|
|
- translations in progress:
|
|
- translations in progress:
|
|
- - [Español](https://github.com/jwasham/google-interview-university/issues/80)
|
|
|
|
- - [हिन्दी](https://github.com/jwasham/google-interview-university/issues/81)
|
|
|
|
- - [עברית](https://github.com/jwasham/google-interview-university/issues/82)
|
|
|
|
- - [Bahasa Indonesia](https://github.com/jwasham/google-interview-university/issues/101)
|
|
|
|
- - [Arabic](https://github.com/jwasham/google-interview-university/issues/98)
|
|
|
|
- - [Vietnamese](https://github.com/jwasham/google-interview-university/issues/92)
|
|
|
|
- - [Turkish](https://github.com/jwasham/google-interview-university/issues/90)
|
|
|
|
- - [French](https://github.com/jwasham/google-interview-university/issues/89)
|
|
|
|
- - [Russian](https://github.com/jwasham/google-interview-university/issues/87)
|
|
|
|
- - [Ukrainian](https://github.com/jwasham/google-interview-university/issues/106)
|
|
|
|
- - [Brazilian Portuguese](https://github.com/jwasham/google-interview-university/issues/113)
|
|
|
|
- - [Korean](https://github.com/jwasham/google-interview-university/issues/118)
|
|
|
|
- - [Polish](https://github.com/jwasham/google-interview-university/issues/122)
|
|
|
|
|
|
+ - [Español](https://github.com/jwasham/coding-interview-university/issues/80)
|
|
|
|
+ - [हिन्दी](https://github.com/jwasham/coding-interview-university/issues/81)
|
|
|
|
+ - [עברית](https://github.com/jwasham/coding-interview-university/issues/82)
|
|
|
|
+ - [Bahasa Indonesia](https://github.com/jwasham/coding-interview-university/issues/101)
|
|
|
|
+ - [Arabic](https://github.com/jwasham/coding-interview-university/issues/98)
|
|
|
|
+ - [Vietnamese](https://github.com/jwasham/coding-interview-university/issues/92)
|
|
|
|
+ - [Turkish](https://github.com/jwasham/coding-interview-university/issues/90)
|
|
|
|
+ - [French](https://github.com/jwasham/coding-interview-university/issues/89)
|
|
|
|
+ - [Russian](https://github.com/jwasham/coding-interview-university/issues/87)
|
|
|
|
+ - [Ukrainian](https://github.com/jwasham/coding-interview-university/issues/106)
|
|
|
|
+ - [Brazilian Portuguese](https://github.com/jwasham/coding-interview-university/issues/113)
|
|
|
|
+ - [Korean](https://github.com/jwasham/coding-interview-university/issues/118)
|
|
|
|
+ - [Telugu](https://github.com/jwasham/coding-interview-university/issues/117)
|
|
|
|
+ - [Polish](https://github.com/jwasham/coding-interview-university/issues/122)
|
|
|
|
+ - [German](https://github.com/jwasham/coding-interview-university/issues/135)
|
|
|
|
+ - [Urdu](https://github.com/jwasham/coding-interview-university/issues/140)
|
|
|
|
|
|
## What is it?
|
|
## What is it?
|
|
|
|
|
|
@@ -30,21 +31,12 @@ This is my multi-month study plan for going from web developer (self-taught, no
|
|
|
|
|
|

|
|

|
|
|
|
|
|
-You'll see a lot of Google-related items, but I've tried to generalize the list to make it useful for everyone.
|
|
|
|
-
|
|
|
|
-This list was extracted and expanded from Google's coaching notes, so these are the things you need to know.
|
|
|
|
-There are extra items I added at the bottom that may come up in the interview or be helpful in solving a problem. Many items are from
|
|
|
|
-Steve Yegge's "[Get that job at Google](http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html)" and are reflected
|
|
|
|
-sometimes word-for-word in Google's coaching notes.
|
|
|
|
-
|
|
|
|
-I've pared down what you need to know from what Yegge recommends. I've altered Yegge's requirements
|
|
|
|
-from information received from a contact at Google. This is meant for **new software engineers** or those switching from
|
|
|
|
|
|
+This is meant for **new software engineers** or those switching from
|
|
software/web development to software engineering (where computer science knowledge is required). If you have
|
|
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.
|
|
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 large software companies like Google, Amazon,
|
|
If you have many years of software/web development experience, note that large software companies like Google, Amazon,
|
|
-Facebook and Microsoft software engineering as different from software/web development, and they require computer science knowledge.
|
|
|
|
|
|
+Facebook and Microsoft view software engineering as different from software/web development, and they require computer science knowledge.
|
|
|
|
|
|
If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security).
|
|
If you want to be a reliability engineer or systems engineer, study more from the optional list (networking, security).
|
|
|
|
|
|
@@ -106,6 +98,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)
|
|
@@ -121,9 +118,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)
|
|
@@ -131,18 +125,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)
|
|
- - [Networking](#networking) (if you have networking experience or want to be a systems engineer, expect questions)
|
|
|
|
- [Computer Security](#computer-security)
|
|
- [Computer Security](#computer-security)
|
|
- [Garbage collection](#garbage-collection)
|
|
- [Garbage collection](#garbage-collection)
|
|
- [Parallel Programming](#parallel-programming)
|
|
- [Parallel Programming](#parallel-programming)
|
|
- [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
|
|
@@ -162,7 +155,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)
|
|
@@ -193,7 +185,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`
|
|
|
|
|
|
@@ -232,7 +224,7 @@ Sometimes the classes are not in session so you have to wait a couple of months,
|
|
- [ ] [Gayle L McDowell - Cracking The Coding Interview (video)](https://www.youtube.com/watch?v=rEJzOhC5ZtQ)
|
|
- [ ] [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)
|
|
- [ ] [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:
|
|
- - [ ] ['How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft' (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
|
|
|
|
|
+ - [ ] [How to Get a Job at the Big 4 - Amazon, Facebook, Google & Microsoft (video)](https://www.youtube.com/watch?v=YJZCUhxNCv8)
|
|
|
|
|
|
- [ ] Prep Course:
|
|
- [ ] Prep Course:
|
|
- [ ] [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):
|
|
@@ -269,18 +261,15 @@ This is a shorter list than what I used. This is abbreviated to save you time.
|
|
|
|
|
|
- [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html)
|
|
- [ ] [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 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)
|
|
|
|
- - all code is in C++, very good if you're looking to use C++ in your interview
|
|
|
|
- - a good book on problem solving in general.
|
|
|
|
|
|
+- [ ] [Elements of Programming Interviews (C++ version)](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836)
|
|
|
|
+- [ ] [Elements of Programming Interviews (Java version)](https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517435803/)
|
|
|
|
|
|
### Computer Architecture
|
|
### Computer Architecture
|
|
|
|
|
|
@@ -366,12 +355,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:
|
|
@@ -381,7 +364,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
|
|
|
|
|
|
@@ -407,7 +389,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
|
|
|
|
|
|
@@ -445,8 +427,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
|
|
|
|
-technologies but were not mentioned in those notes:
|
|
|
|
|
|
+These are prevalent technologies but not part of this study plan:
|
|
|
|
|
|
- SQL
|
|
- SQL
|
|
- Javascript
|
|
- Javascript
|
|
@@ -656,7 +637,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:
|
|
@@ -843,11 +824,12 @@ If you need more detail on this subject, see "Sorting" section in [Additional De
|
|
|
|
|
|
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:
|
|
|
|
- - There are three basic ways to represent a graph in memory:
|
|
|
|
|
|
+- Notes:
|
|
|
|
+ - There are 4 basic ways to represent a graph in memory:
|
|
- objects and pointers
|
|
- 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.
|
|
@@ -878,13 +860,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)
|
|
@@ -917,7 +892,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:
|
|
@@ -1069,11 +1043,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)
|
|
@@ -1081,7 +1054,9 @@ 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: 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: Dynamo: Amazon’s Highly Available Key-value Store](https://www.akkadia.org/drepper/cpumemory.pdf)
|
|
|
|
+ - The Dynamo paper kicked off the NoSQL revolution
|
|
|
|
+ - [ ] [2007: What Every Programmer Should Know About Memory (very long, and the author encourages skipping of some sections)](http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf)
|
|
- [ ] [2010: Dapper, a Large-Scale Distributed Systems Tracing Infrastructure](https://research.google.com/pubs/archive/36356.pdf)
|
|
- [ ] [2010: 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)
|
|
- [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
|
|
- [ ] [2012: Google's Colossus](https://www.wired.com/2012/07/google-colossus/)
|
|
@@ -1138,14 +1113,62 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
|
|
|
If you need more detail on this subject, see "String Matching" section in [Additional Detail on Some Subjects](#additional-detail-on-some-subjects)
|
|
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
|
|
@@ -1234,7 +1257,7 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
- For even more, see "Mining Massive Datasets" video series in the Video Series section.
|
|
- 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: [System Design from HiredInTech](http://www.hiredintech.com/system-design/)
|
|
- - [cheat sheet](https://github.com/jwasham/google-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
|
|
|
|
|
+ - [cheat sheet](https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf)
|
|
- flow:
|
|
- 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
|
|
@@ -1322,8 +1345,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.
|
|
@@ -1383,7 +1404,6 @@ Mock Interviews:
|
|
|
|
|
|
## 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
|
|
|
|
|
|
|
|
|
|
@@ -1457,29 +1477,17 @@ You're never really done.
|
|
|
|
|
|
## 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/)
|
|
@@ -1500,7 +1508,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
|
|
@@ -1553,23 +1561,6 @@ 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)
|
|
|
|
|
|
-- ### 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)
|
|
|
|
-
|
|
|
|
- ### Computer Security
|
|
- ### Computer Security
|
|
- [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
|
- [MIT (23 videos)](https://www.youtube.com/playlist?list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
|
- [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
|
- [ ] [Introduction, Threat Models](https://www.youtube.com/watch?v=GqmQg-cszw4&index=1&list=PLUl4u3cNGP62K2DjQLRxDNRi0z2IRWnNh)
|
|
@@ -1618,6 +1609,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/)
|
|
@@ -1647,24 +1643,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.
|
|
@@ -1827,16 +1805,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
|