Reorganized to add a book list.
This commit is contained in:
parent
f129ddcdfd
commit
1f7fe85f1f
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)
|
||||
- [Interview Process & General Interview Prep](#interview-process--general-interview-prep)
|
||||
- [Pick One Language for the Interview](#pick-one-language-for-the-interview)
|
||||
- [Book List](#book-list)
|
||||
- [Before you Get Started](#before-you-get-started)
|
||||
- [What you Won't See Covered](#what-you-wont-see-covered)
|
||||
- [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.
|
||||
|
||||
## 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
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
**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)
|
||||
- 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)
|
||||
- answers in C, C++ and Java
|
||||
- [ ] [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/)
|
||||
- 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.
|
||||
- answers in Java
|
||||
|
||||
See [Book List above](#book-list)
|
||||
|
||||
## Coding exercises/challenges
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user