|
@@ -68,7 +68,6 @@ sometimes word-for-word in Google's coaching notes.
|
|
|
- [String searching & manipulations](#string-searching--manipulations)
|
|
|
- [Final Review](#final-review)
|
|
|
- [Coding Question Practice](#coding-question-practice)
|
|
|
-- [Books](#books)
|
|
|
- [Coding exercises/challenges](#coding-exerciseschallenges)
|
|
|
- [Once you're closer to the interview](#once-youre-closer-to-the-interview)
|
|
|
- [Your Resume](#your-resume)
|
|
@@ -78,6 +77,7 @@ sometimes word-for-word in Google's coaching notes.
|
|
|
|
|
|
---------------- Everything below this point is optional ----------------
|
|
|
|
|
|
+- [Additional Books](#additional-books)
|
|
|
- [Additional Learning](#additional-learning)
|
|
|
- [Unicode](#unicode)
|
|
|
- [Endianness](#endianness)
|
|
@@ -1185,67 +1185,70 @@ You'll get more graph practice in Skiena's book (see Books section below) and th
|
|
|
#### Sorts:
|
|
|
|
|
|
- [ ] Merge Sort: https://www.youtube.com/watch?v=GCae1WNvnZM
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+---
|
|
|
|
|
|
## Coding Question Practice
|
|
|
|
|
|
-- [ ] [Great intro (copied from System Design section): Algorithm design:](http://www.hiredintech.com/algorithm-design/)
|
|
|
-- [ ] [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/)
|
|
|
-- [ ] [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/)
|
|
|
+Now that you know all the computer science topics above, it's time to practice answering coding problems.
|
|
|
|
|
|
-- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php)
|
|
|
+**Coding question practice is not about memorizing answers to programming problems.**
|
|
|
|
|
|
-- [Exercises for getting better at a given language](http://exercism.io/languages)
|
|
|
+Why you need to practice doing programming problems:
|
|
|
+- problem recognition, and where the right data structures and algorithms fit in
|
|
|
+- gathering requirements for the problem
|
|
|
+- talking your way through the problem like you will in the interview
|
|
|
+- coding on a whiteboard or paper, not a computer
|
|
|
+- coming up with time and space complexity for your solutions
|
|
|
+- testing your solutions
|
|
|
+
|
|
|
+There is a great intro for methodical, communicative problem solving in an interview. You'll get this from the programming
|
|
|
+interview books, too, but I found this outstanding:
|
|
|
+- [ ] [Algorithm design](http://www.hiredintech.com/algorithm-design/)
|
|
|
|
|
|
-## Books
|
|
|
+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.
|
|
|
|
|
|
-### Mentioned in Google Coaching
|
|
|
+
|
|
|
|
|
|
-**Read and do exercises:**
|
|
|
+Supplemental:
|
|
|
+
|
|
|
+- [Mathematics for Topcoders](https://www.topcoder.com/community/data-science/data-science-tutorials/mathematics-for-topcoders/)
|
|
|
+- [Dynamic Programming – From Novice to Advanced](https://www.topcoder.com/community/data-science/data-science-tutorials/dynamic-programming-from-novice-to-advanced/)
|
|
|
+- [MIT Interview Materials](https://web.archive.org/web/20160906124824/http://courses.csail.mit.edu/iap/interview/materials.php)
|
|
|
+- [Exercises for getting better at a given language](http://exercism.io/languages)
|
|
|
|
|
|
-- [ ] The Algorithm Design Manual (Skiena)
|
|
|
- - Book (can rent on kindle):
|
|
|
- - [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202)
|
|
|
+**Read as a review and problem recognition**
|
|
|
+- [ ] [Algorithm Design Manual](http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202) (Skiena)
|
|
|
+ - 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)
|
|
|
|
|
|
- Once you've understood everything in the daily plan, and read and done exercises from the the books above,
|
|
|
- read and do exercises from the books below. Then move to coding challenges (further down below)
|
|
|
-
|
|
|
-**Read first:**
|
|
|
+**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)
|
|
|
-
|
|
|
-**Read second (recommended by many, but not in Google coaching docs):**
|
|
|
+ - recommended in Google candidate coaching
|
|
|
- [ ] [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".
|
|
|
|
|
|
-### Additional books
|
|
|
-
|
|
|
- These were not suggested by Google but I added because I needed the background knowledge
|
|
|
-
|
|
|
-- [ ] C Programming Language, Vol 2
|
|
|
- - [answers to questions](https://github.com/lekkas/c-algorithms)
|
|
|
-
|
|
|
-- [ ] C++ Primer Plus, 6th Edition
|
|
|
-
|
|
|
-- [ ] [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)
|
|
|
-
|
|
|
-
|
|
|
- These two were very recommended.
|
|
|
-
|
|
|
-
|
|
|
+**If you have time**
|
|
|
- [ ] [Programming Pearls](http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880)
|
|
|
-
|
|
|
- [ ] [Algorithms and Programming: Problems and Solutions](http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474)
|
|
|
-
|
|
|
-### If you have time
|
|
|
-
|
|
|
- [ ] [Introduction to Algorithms](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844)
|
|
|
+ - 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
|
|
|
- [ ] [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
|
|
|
- good book on problem solving in general.
|
|
@@ -1284,10 +1287,9 @@ Take coding challenges every day, as many as you can.
|
|
|
|
|
|
## Be thinking of for when the interview comes
|
|
|
|
|
|
- Think of about 20 interview questions you'll get, along the lines of the items below.
|
|
|
- Have 2-3 answers for each
|
|
|
- Have a story, not just data, about something you accomplished
|
|
|
-
|
|
|
+Think of about 20 interview questions you'll get, along the lines of the items below. Have 2-3 answers for each.
|
|
|
+Have a story, not just data, about something you accomplished.
|
|
|
+
|
|
|
- Why do you want this job?
|
|
|
- What's a tough problem you've solved?
|
|
|
- Biggest challenges faced?
|
|
@@ -1332,13 +1334,31 @@ You're never really done.
|
|
|
|
|
|
Everything below this point is optional. These are my recommendations, not Google's.
|
|
|
By studying these, you'll get greater exposure to more CS concepts, and will be better prepared for
|
|
|
- any software engineering job.
|
|
|
+ any software engineering job. You'll be a much more well-rounded software engineer.
|
|
|
|
|
|
*****************************************************************************************************
|
|
|
*****************************************************************************************************
|
|
|
|
|
|
---
|
|
|
|
|
|
+## Additional Books
|
|
|
+
|
|
|
+- [ ] [C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
|
|
|
+ - [answers to questions](https://github.com/lekkas/c-algorithms)
|
|
|
+- [ ] [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)
|
|
|
+ - and oldie but a goodie
|
|
|
+- [ ] [The Linux Command Line: A Complete Introduction](https://www.amazon.com/dp/1593273894/)
|
|
|
+ - a modern option
|
|
|
+- [ ] [TCP/IP Illustrated Series](https://en.wikipedia.org/wiki/TCP/IP_Illustrated)
|
|
|
+- [ ] [Head First Design Patterns](https://www.amazon.com/gp/product/0596007124/)
|
|
|
+ - a gentle introduction to design patterns
|
|
|
+- [ ] [Design Patterns: Elements of Reusable Object-Oriented Software](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612)
|
|
|
+ - aka the "Gang Of Four" book, or GOF
|
|
|
+ - the canonical design patterns book
|
|
|
+- [ ] [Site Reliability Engineering](https://landing.google.com/sre/book.html)
|
|
|
+ - [Site Reliability Engineering: How Google Runs Production Systems](https://landing.google.com/sre/)
|
|
|
+- [ ] [UNIX and Linux System Administration Handbook, 4th Edition](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0131480057/)
|
|
|
+
|
|
|
## Additional Learning
|
|
|
|
|
|
- ### Unicode
|