Reorganized to add a book list.
This commit is contained in:
		
							
								
								
									
										213
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										213
									
								
								README.md
									
									
									
									
									
								
							| @@ -40,6 +40,7 @@ If you want to be a reliability engineer or systems engineer, study more from th | |||||||
| - [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) | ||||||
|  | - [Book List](#book-list) | ||||||
| - [Before you Get Started](#before-you-get-started) | - [Before you Get Started](#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) | ||||||
| @@ -312,6 +313,140 @@ Read more about choices: | |||||||
|  |  | ||||||
| You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. | You'll see some C, C++, and Python learning included below, because I'm learning. There are a few books involved, see the bottom. | ||||||
|  |  | ||||||
|  | ## Book List | ||||||
|  |  | ||||||
|  | This is a shorter list than what I used. This is abbreviated to save you time. | ||||||
|  |  | ||||||
|  | ### Interview Prep | ||||||
|  |  | ||||||
|  | - [ ] [Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition](http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html) | ||||||
|  |     - answers in C++ and Java | ||||||
|  |     - recommended in Google candidate coaching | ||||||
|  |     - this is a good warm-up for Cracking the Coding Interview | ||||||
|  |     - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) | ||||||
|  | - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) | ||||||
|  |     - answers in Java | ||||||
|  |     - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) | ||||||
|  |     - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". | ||||||
|  |  | ||||||
|  | If you have tons of extra time: | ||||||
|  |  | ||||||
|  | - [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) | ||||||
|  |     - all code is in C++, very good if you're looking to use C++ in your interview | ||||||
|  |     - a good book on problem solving in general. | ||||||
|  |  | ||||||
|  | ### Computer Architecture | ||||||
|  |  | ||||||
|  | If short on time: | ||||||
|  |  | ||||||
|  | - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) | ||||||
|  |     - The book was published in 2004, and is somehat outdated, but it's a terrific resource for understanding a computer in brief. | ||||||
|  |     - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. | ||||||
|  |     - These chapters are worth the read to give you a nice foundation: | ||||||
|  |         - Chapter 2 - Numeric Representation | ||||||
|  |         - Chapter 3 - Binary Arithmetic and Bit Operations | ||||||
|  |         - Chapter 4 - Floating-Point Representation | ||||||
|  |         - Chapter 5 - Character Representation | ||||||
|  |         - Chapter 6 - Memory Organization and Access | ||||||
|  |         - Chapter 7 - Composite Data Types and Memory Objects | ||||||
|  |         - Chapter 9 - CPU Architecture | ||||||
|  |         - Chapter 10 - Instruction Set Architecture | ||||||
|  |         - Chapter 11 - Memory Architecture and Organization  | ||||||
|  |  | ||||||
|  | If you have more time (I want this book): | ||||||
|  |  | ||||||
|  | - [ ] [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) | ||||||
|  |     - For a richer, more up-to-date (2011), but longer treatment | ||||||
|  |  | ||||||
|  | ### Language Specific | ||||||
|  |  | ||||||
|  | **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 algoritms 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. | ||||||
|  |  | ||||||
|  | [Additional language-specific resources here.](programming-language-resources.md) | ||||||
|  |  | ||||||
|  | ### C++ | ||||||
|  |  | ||||||
|  | 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++ 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. | ||||||
|  |  | ||||||
|  | ### Java | ||||||
|  |  | ||||||
|  | - [ ] [Algorithms (Sedgewick and Wayne)](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/) | ||||||
|  |     - videos with book content (and Sedgewick!): | ||||||
|  |         - [Algorithms I](https://www.youtube.com/user/algorithmscourses/playlists?view=50&sort=dd&shelf_id=2) | ||||||
|  |         - [Algorithms II](https://www.youtube.com/user/algorithmscourses/playlists?shelf_id=3&view=50&sort=dd) | ||||||
|  |  | ||||||
|  | OR: | ||||||
|  |  | ||||||
|  | - [ ] [Data Structures and Algorithms in Java](https://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/1118771338/) | ||||||
|  |     - by Goodrich, Tamassia, Goldwasser | ||||||
|  |     - used as optional text for CS intro course at UC Berkeley | ||||||
|  |     - see my book report on the Python version below. This book covers the same topics. | ||||||
|  |  | ||||||
|  | ### Python | ||||||
|  |  | ||||||
|  | - [ ] [Data Structures and Algorithms in Python](https://www.amazon.com/Structures-Algorithms-Python-Michael-Goodrich/dp/1118290275/) | ||||||
|  |     - by Goodrich, Tamassia, Goldwasser | ||||||
|  |     - I loved this book. It covered everything and more. | ||||||
|  |     - Pythonic code | ||||||
|  |     - my glowing book report: https://googleyasheck.com/book-report-data-structures-and-algorithms-in-python/ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Optional Books | ||||||
|  |  | ||||||
|  | **Some people recommend these, but I think it's going overboard, unless you have many years of software engineering experience and expect a much harder interview:** | ||||||
|  |  | ||||||
|  | - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) | ||||||
|  |     - As a review and problem recognition | ||||||
|  |     - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. | ||||||
|  |     - This book has 2 parts: | ||||||
|  |         - class textbook on data structures and algorithms | ||||||
|  |             - pros: | ||||||
|  |                 - is a good review as any algorithms textbook would be | ||||||
|  |                 - nice stories from his experiences solving problems in industry and academia | ||||||
|  |                 - code examples in C | ||||||
|  |             - cons: | ||||||
|  |                 - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects | ||||||
|  |                 - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have | ||||||
|  |                 - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. | ||||||
|  |         - algorithm catalog: | ||||||
|  |             - this is the real reason you buy this book. | ||||||
|  |             - about to get to this part. Will update here once I've made my way through it. | ||||||
|  |     - To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace | ||||||
|  |         (and important) graph problems are – they should be part of every working programmer's toolkit. The book also | ||||||
|  |         covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half | ||||||
|  |         of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve | ||||||
|  |         them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a | ||||||
|  |         great way to learn how to identify hundreds of problem types." | ||||||
|  |     - Can rent it on kindle | ||||||
|  |     - Half.com is a great resource for textbooks at good prices. | ||||||
|  |     - Answers: | ||||||
|  |         - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) | ||||||
|  |         - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) | ||||||
|  |     - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) | ||||||
|  |  | ||||||
|  | - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) | ||||||
|  |     - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. | ||||||
|  |     - To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." | ||||||
|  |     - Half.com is a great resource for textbooks at good prices. | ||||||
|  |     - aka CLR, sometimes CLRS, because Stein was late to the game | ||||||
|  |  | ||||||
|  | - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) | ||||||
|  |     - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but | ||||||
|  |       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~~ | ||||||
|  |     - 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. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Before you Get Started | ## Before you Get Started | ||||||
|  |  | ||||||
| This list grew over many months, and yes, it kind of got out of hand. | This list grew over many months, and yes, it kind of got out of hand. | ||||||
| @@ -1232,7 +1367,7 @@ interview books, too, but I found this outstanding: | |||||||
|  |  | ||||||
| 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. | I added the pen in the photo for scale. If you use a pen, you'll wish you could erase. Gets messy quick. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1244,81 +1379,13 @@ Supplemental: | |||||||
| - [Exercises for getting better at a given language](http://exercism.io/languages) | - [Exercises for getting better at a given language](http://exercism.io/languages) | ||||||
|  |  | ||||||
| **Read and Do Programming Problems (in this order):** | **Read and Do Programming Problems (in this order):** | ||||||
|  |  | ||||||
| - [ ] [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) | ||||||
|     - recommended in Google candidate coaching |     - answers in C, C++ and Java | ||||||
|     - this is a good warm-up for Cracking the Coding Interview |  | ||||||
|     - not too difficult, most problems may be easier than what you'll see in an interview (from what I've read) |  | ||||||
| - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) | - [ ] [Cracking the Coding Interview, 6th Edition](http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/) | ||||||
|     - recommended on the [Google Careers site](https://www.google.com/about/careers/how-we-hire/interview/) |     - answers in Java | ||||||
|     - If you see people reference "The Google Resume", it was a book replaced by "Cracking the Coding Interview". |  | ||||||
|  |  | ||||||
| **If you have time** |  | ||||||
| - [ ] [Grokking Algorithms](https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230) |  | ||||||
|     - This is a great book for review of CS concepts, and a very quick read. |  | ||||||
|     - Did not have as much Python code as I had hoped for, but has a great chapter on dynamic programming, so I worked through that and finally got the concept. |  | ||||||
| - [ ] [Write Great Code: Volume 1: Understanding the Machine](https://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038) |  | ||||||
|     - The book was published in 2004, and is a bit outdated, but it's a terrific resource for understanding a computer. |  | ||||||
|     - The author invented HLA, so take mentions and examples in HLA with a grain of salt. Not widely used, but decent examples of what assembly looks like. |  | ||||||
|     - These chapters are worth the read to give you a nice foundation: |  | ||||||
|         - Chapter 2 - Numeric Representation |  | ||||||
|         - Chapter 3 - Binary Arithmetic and Bit Operations |  | ||||||
|         - Chapter 4 - Floating-Point Representation |  | ||||||
|         - Chapter 5 - Character Representation |  | ||||||
|         - Chapter 6 - Memory Organization and Access |  | ||||||
|         - Chapter 7 - Composite Data Types and Memory Objects |  | ||||||
|         - Chapter 9 - CPU Architecture |  | ||||||
|         - Chapter 10 - Instruction Set Architecture |  | ||||||
|         - Chapter 11 - Memory Architecture and Organization  |  | ||||||
|     - For a richer, more up-to-date (2011), but longer treatment, pick up [Computer Architecture, Fifth Edition: A Quantitative Approach](https://www.amazon.com/dp/012383872X/) |  | ||||||
| - [ ] [Elements of Programming Interviews](https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836) |  | ||||||
|     - all code is in C++, if you're looking to use C++ in your interview |  | ||||||
|     - a good book on problem solving in general. |  | ||||||
|  |  | ||||||
| **Perhaps** |  | ||||||
|  |  | ||||||
| - [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880) |  | ||||||
|     - The first couple of chapters present clever solutions to programming problems (some very old using data tape) but |  | ||||||
|       that is just an intro. This a guidebook on program design and architecture, much like Code Complete, but much shorter. |  | ||||||
| - [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena) |  | ||||||
|     - As a review and problem recognition |  | ||||||
|     - The algorithm catalog portion is well beyond the scope of difficulty you'll get in an interview. |  | ||||||
|     - This book has 2 parts: |  | ||||||
|         - class textbook on data structures and algorithms |  | ||||||
|             - pros: |  | ||||||
|                 - is a good review as any algorithms textbook would be |  | ||||||
|                 - nice stories from his experiences solving problems in industry and academia |  | ||||||
|                 - code examples in C |  | ||||||
|             - cons: |  | ||||||
|                 - can be as dense or impenetrable as CLRS, and in some cases, CLRS may be a better alternative for some subjects |  | ||||||
|                 - chapters 7, 8, 9 can be painful to try to follow, as some items are not explained well or require more brain than I have |  | ||||||
|                 - don't get me wrong: I like Skiena, his teaching style, and mannerisms, but I may not be Stony Brook material. |  | ||||||
|         - algorithm catalog: |  | ||||||
|             - this is the real reason you buy this book. |  | ||||||
|             - about to get to this part. Will update here once I've made my way through it. |  | ||||||
|     - To quote Yegge: "More than any other book it helped me understand just how astonishingly commonplace |  | ||||||
|         (and important) graph problems are – they should be part of every working programmer's toolkit. The book also |  | ||||||
|         covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half |  | ||||||
|         of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve |  | ||||||
|         them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a |  | ||||||
|         great way to learn how to identify hundreds of problem types." |  | ||||||
|     - Can rent it on kindle |  | ||||||
|     - Half.com is a great resource for textbooks at good prices. |  | ||||||
|     - Answers: |  | ||||||
|         - [Solutions](http://www.algorithm.cs.sunysb.edu/algowiki/index.php/The_Algorithms_Design_Manual_(Second_Edition)) |  | ||||||
|         - [Solutions](http://blog.panictank.net/category/algorithmndesignmanualsolutions/page/2/) |  | ||||||
|     - [Errata](http://www3.cs.stonybrook.edu/~skiena/algorist/book/errata) |  | ||||||
|  |  | ||||||
| - [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844) |  | ||||||
|     - **Important:** Reading this book will only have limited value. This book is a great review of algorithms and data structures, but won't teach you how to write good code. You have to be able to code a decent solution efficiently. |  | ||||||
|     - To quote Yegge: "But if you want to come into your interviews *prepped*, then consider deferring your application until you've made your way through that book." |  | ||||||
|     - Half.com is a great resource for textbooks at good prices. |  | ||||||
|     - aka CLR, sometimes CLRS, because Stein was late to the game |  | ||||||
|      |  | ||||||
| **Removed**  |  | ||||||
| - ~~"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.  |  | ||||||
|     - Would rather spend time on coding problems from another book or online coding problems. |  | ||||||
|  |  | ||||||
|  | See [Book List above](#book-list) | ||||||
|  |  | ||||||
| ## Coding exercises/challenges | ## Coding exercises/challenges | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user