Added detail to the Coding Question Practice section.
Added an Additional Books section.
This commit is contained in:
parent
9bf5bc85f8
commit
d1c01de994
112
README.md
112
README.md
|
@ -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.
|
||||
|
||||
**Coding question practice is not about memorizing answers to programming problems.**
|
||||
|
||||
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/)
|
||||
|
||||
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.
|
||||
|
||||
![my sofa whiteboard](https://dng5l3qzreal6.cloudfront.net/2016/Oct/art_board_sm_2-1476233630368.jpg)
|
||||
|
||||
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)
|
||||
|
||||
## Books
|
||||
|
||||
### Mentioned in Google Coaching
|
||||
|
||||
**Read and do exercises:**
|
||||
|
||||
- [ ] 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
|
||||
|
|
Loading…
Reference in New Issue