|
@@ -1,9 +1,48 @@
|
|
|
|
+##########################################################################################
|
|
|
|
+## How to read this
|
|
|
|
+##########################################################################################
|
|
|
|
+
|
|
|
|
+Everything below is an outline, and you should tackle the items in order from top to bottom.
|
|
|
|
+
|
|
|
|
+I put an asterisk * at the beginning of a line when I'm done with it. When all sub-items are done,
|
|
|
|
+I put a * at the top level, meaning the entire block is done. Sorry you have to remove all my *
|
|
|
|
+to use this the same way. If you search/replace, there are a couple of places to look out for.
|
|
|
|
+
|
|
|
|
+##########################################################################################
|
|
|
|
+## Interview Prep:
|
|
|
|
+##########################################################################################
|
|
|
|
+
|
|
|
|
+* - Videos:
|
|
|
|
+ * - https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be
|
|
|
|
+ * - https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be
|
|
|
|
+
|
|
|
|
+Articles:
|
|
|
|
+ - http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html
|
|
|
|
+ - http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
|
|
|
|
+ - http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions
|
|
|
|
+ - http://www.google.com/about/careers/lifeatgoogle/hiringprocess/
|
|
|
|
+
|
|
|
|
+Additional (not suggested by Google but I added):
|
|
|
|
+ - https://courses.csail.mit.edu/iap/interview/materials.php
|
|
|
|
+ - http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/
|
|
|
|
+ - https://www.youtube.com/watch?v=rEJzOhC5ZtQ&feature=youtu.be
|
|
|
|
+ - https://www.youtube.com/watch?v=aClxtDcdpsQ&feature=youtu.be
|
|
|
|
+ - https://www.youtube.com/watch?v=2cf9xo1S134&feature=youtu.be
|
|
|
|
+ - https://www.youtube.com/watch?v=YJZCUhxNCv8
|
|
|
|
+ * - https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2#.4heg8zvm4
|
|
|
|
+ * - https://medium.com/always-be-coding/four-steps-to-google-without-a-degree-8f381aa6bd5e#.asalo1vfx
|
|
|
|
+ * - https://medium.com/@dpup/whiteboarding-4df873dbba2e#.hf6jn45g1
|
|
|
|
+
|
|
##########################################################################################
|
|
##########################################################################################
|
|
## Knowledge:
|
|
## Knowledge:
|
|
##########################################################################################
|
|
##########################################################################################
|
|
|
|
|
|
-I put a * at the beginning of a line when I'm done with it. When all sub-items are done, I put a * the top level,
|
|
|
|
-meaning the entire block is done.
|
|
|
|
|
|
+You need to know C, C++, or Java to do the coding part of the interview.
|
|
|
|
+They will sometimes make an exception and let you use Python or some other language, but the language
|
|
|
|
+must be mainstream and allow you write your code low-level enough to solve the problems.
|
|
|
|
+You'll see some C, C++ learning included below.
|
|
|
|
+
|
|
|
|
+There are a few books involved, see the bottom
|
|
|
|
|
|
* - how computers process a program:
|
|
* - how computers process a program:
|
|
* - https://www.youtube.com/watch?v=42KTvGYQYnA
|
|
* - https://www.youtube.com/watch?v=42KTvGYQYnA
|
|
@@ -40,7 +79,7 @@ meaning the entire block is done.
|
|
- Google uses clang-format (Google setting)
|
|
- Google uses clang-format (Google setting)
|
|
- C++ Core Guidelines: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
|
|
- C++ Core Guidelines: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
|
|
* - Efficiency with Algorithms, Performance with Data Structures: https://youtu.be/fHNmRkzxHWs
|
|
* - Efficiency with Algorithms, Performance with Data Structures: https://youtu.be/fHNmRkzxHWs
|
|
- - review: https://www.youtube.com/watch?v=Rub-JsjMhWY
|
|
|
|
|
|
+ - review of C++ concepts: https://www.youtube.com/watch?v=Rub-JsjMhWY
|
|
|
|
|
|
* - compilers:
|
|
* - compilers:
|
|
* - https://class.coursera.org/compilers-004/lecture/1
|
|
* - https://class.coursera.org/compilers-004/lecture/1
|
|
@@ -53,11 +92,11 @@ meaning the entire block is done.
|
|
The Gauntlet:
|
|
The Gauntlet:
|
|
|
|
|
|
Each day I take one subject from the list below, watch videos about that subject, and write an implementation in:
|
|
Each day I take one subject from the list below, watch videos about that subject, and write an implementation in:
|
|
- C
|
|
|
|
|
|
+ C - using structs and functions that take a struct * and something else as args.
|
|
C++ - without using built-in types
|
|
C++ - without using built-in types
|
|
C++ - using built-in types, like STL's std::list for a linked list
|
|
C++ - using built-in types, like STL's std::list for a linked list
|
|
Python - without using built-in types
|
|
Python - without using built-in types
|
|
- and write tests to ensure I'm doing it right
|
|
|
|
|
|
+ and write tests to ensure I'm doing it right, keep it simple with just assert() statements
|
|
Each subject does not require a whole day to be able to understand it fully.
|
|
Each subject does not require a whole day to be able to understand it fully.
|
|
Why code in all of these?
|
|
Why code in all of these?
|
|
Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember)
|
|
Practice, practice, practice, until I'm sick of it, and can do it with no problem (some have many edge cases and bookkeeping details to remember)
|
|
@@ -67,19 +106,24 @@ Why code in all of these?
|
|
----------------------------------------------------------------
|
|
----------------------------------------------------------------
|
|
|
|
|
|
arrays
|
|
arrays
|
|
- - No need to spend a day on this.
|
|
|
|
|
|
+ No need to spend a whole day on this.
|
|
|
|
+ * - Description:
|
|
|
|
+ - https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
|
|
|
|
+ - https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays
|
|
- Implement:
|
|
- Implement:
|
|
- - raw data array with allocated memory
|
|
|
|
|
|
+ - Practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing.
|
|
|
|
+ * - new raw data array with allocated memory (can allocate int array under the hood, just not use its features)
|
|
|
|
+ * - size() - number of items
|
|
|
|
+ * - capacity() - number of items it can hold
|
|
|
|
+ * - is_empty()
|
|
- at(index) - returns item at given index
|
|
- at(index) - returns item at given index
|
|
|
|
+ - cannot append or move if full - will not tackle allocating and copying to new memory
|
|
- append(item)
|
|
- append(item)
|
|
- insert(index, item)
|
|
- insert(index, item)
|
|
- prepend(item) - can use insert above at index 0
|
|
- prepend(item) - can use insert above at index 0
|
|
- delete(index)
|
|
- delete(index)
|
|
- remove(item)
|
|
- remove(item)
|
|
- find(item)
|
|
- find(item)
|
|
- - Nothing to implement, but practice coding using arrays and pointers, and pointer math to jump to an index instead of using indexing.
|
|
|
|
- - https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
|
|
|
|
- - https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays
|
|
|
|
- Time
|
|
- Time
|
|
- O(1) to add/remove at end (amortized for allocations for more space), index, or update
|
|
- O(1) to add/remove at end (amortized for allocations for more space), index, or update
|
|
- O(n) to insert/remove elsewhere
|
|
- O(n) to insert/remove elsewhere
|
|
@@ -254,6 +298,10 @@ System design:
|
|
Performance analysis and optimization
|
|
Performance analysis and optimization
|
|
Testing
|
|
Testing
|
|
|
|
|
|
|
|
+-------------------------------------------------------------------
|
|
|
|
+
|
|
|
|
+Extras that can't hurt:
|
|
|
|
+
|
|
Information theory:
|
|
Information theory:
|
|
- Markov processes:
|
|
- Markov processes:
|
|
- https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation
|
|
- https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/waxgx/core-markov-text-generation
|
|
@@ -279,26 +327,11 @@ Machine Learning:
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
-When you have time:
|
|
|
|
-
|
|
|
|
-C++ Talks at CPPCon:
|
|
|
|
- - https://www.youtube.com/watch?v=hEx5DNLWGgA&index=2&list=PLHTh1InhhwT75gykhs7pqcR_uSiG601oh
|
|
|
|
-
|
|
|
|
-Compilers:
|
|
|
|
- - https://class.coursera.org/compilers-004/lecture
|
|
|
|
-
|
|
|
|
-Computer and processor architecture:
|
|
|
|
- - https://class.coursera.org/comparch-003/lecture
|
|
|
|
-
|
|
|
|
-Long series of C++ videos:
|
|
|
|
- - https://www.youtube.com/playlist?list=PLfVsf4Bjg79Cu5MYkyJ-u4SyQmMhFeC1C
|
|
|
|
-
|
|
|
|
----
|
|
|
|
|
|
+Be thinking of:
|
|
|
|
|
|
Biggest challenges faced
|
|
Biggest challenges faced
|
|
Best/worst designs seen
|
|
Best/worst designs seen
|
|
Ideas for improving existing products
|
|
Ideas for improving existing products
|
|
- - my search idea (optimal result exhaustion and refresh)
|
|
|
|
|
|
|
|
##########################################################################################
|
|
##########################################################################################
|
|
## Videos:
|
|
## Videos:
|
|
@@ -362,65 +395,42 @@ Continuous Pipelines at Google
|
|
AddressSanitizer: A Fast Address Sanity Checker
|
|
AddressSanitizer: A Fast Address Sanity Checker
|
|
- http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf
|
|
- http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37752.pdf
|
|
|
|
|
|
-
|
|
|
|
-##########################################################################################
|
|
|
|
-## Interview Prep:
|
|
|
|
-##########################################################################################
|
|
|
|
-
|
|
|
|
-Videos:
|
|
|
|
- - https://www.youtube.com/watch?v=oWbUtlUhwa8&feature=youtu.be
|
|
|
|
- - https://www.youtube.com/watch?v=qc1owf2-220&feature=youtu.be
|
|
|
|
-
|
|
|
|
-Articles:
|
|
|
|
- - http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html
|
|
|
|
- - http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html
|
|
|
|
- - http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions
|
|
|
|
- - http://www.google.com/about/careers/lifeatgoogle/hiringprocess/
|
|
|
|
-
|
|
|
|
-Additional:
|
|
|
|
- - https://courses.csail.mit.edu/iap/interview/materials.php
|
|
|
|
- - http://www.coderust.com/blog/2014/04/10/effective-whiteboarding-during-programming-interviews/
|
|
|
|
- - https://www.youtube.com/watch?v=rEJzOhC5ZtQ&feature=youtu.be
|
|
|
|
- - https://www.youtube.com/watch?v=aClxtDcdpsQ&feature=youtu.be
|
|
|
|
- - https://www.youtube.com/watch?v=2cf9xo1S134&feature=youtu.be
|
|
|
|
-
|
|
|
|
##########################################################################################
|
|
##########################################################################################
|
|
## Books:
|
|
## Books:
|
|
##########################################################################################
|
|
##########################################################################################
|
|
|
|
|
|
-%%%%% Mentioned in Coaching %%%%%%%%%%%%%%%
|
|
|
|
|
|
+Mentioned in Coaching:
|
|
|
|
|
|
-The Algorithm Design Manual
|
|
|
|
- http://sist.sysu.edu.cn/~isslxm/DSA/textbook/Skiena.-.TheAlgorithmDesignManual.pdf
|
|
|
|
|
|
+ The Algorithm Design Manual
|
|
|
|
+ http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202
|
|
|
|
|
|
-Algorithms and Programming: Problems and Solutions:
|
|
|
|
- http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474
|
|
|
|
|
|
+ Algorithms and Programming: Problems and Solutions:
|
|
|
|
+ http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474
|
|
|
|
|
|
-Read first:
|
|
|
|
-Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition:
|
|
|
|
- http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html
|
|
|
|
|
|
+ Read first:
|
|
|
|
+ Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition:
|
|
|
|
+ http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html
|
|
|
|
|
|
-Read second:
|
|
|
|
-Cracking the Coding Interview, Fourth Edition:
|
|
|
|
- http://www.amazon.com/Cracking-Coding-Interview-Fourth-Edition/dp/145157827X
|
|
|
|
|
|
+ Read second:
|
|
|
|
+ Cracking the Coding Interview, Fourth Edition:
|
|
|
|
+ - http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/
|
|
|
|
|
|
-%%%%% Additional %%%%%%%%%%%%%%%
|
|
|
|
|
|
+Additional (not suggested by Google but I added):
|
|
|
|
|
|
-Programming Pearls:
|
|
|
|
- - http://www.wou.edu/~jcm/Spring-P-2015/Programming%20Pearls%20(2nd%20Ed)%20Bentley.pdf
|
|
|
|
|
|
+ * - C Programming Language, Vol 2
|
|
|
|
|
|
-The Google Resume:
|
|
|
|
- - https://www.uop.edu.jo/download/research/members/495_1887_llll.pdf
|
|
|
|
|
|
+ * - C++ Primer Plus, 6th Edition
|
|
|
|
|
|
-* - C Programming Language, Vol 2
|
|
|
|
|
|
+ Programming Pearls:
|
|
|
|
+ - http://www.amazon.com/Programming-Pearls-2nd-Jon-Bentley/dp/0201657880
|
|
|
|
|
|
-* - C++ Primer Plus
|
|
|
|
|
|
+ If you see people reference "The Google Resume", it was replaced by "Cracking the Coding Interview".
|
|
|
|
|
|
-Clean Code
|
|
|
|
|
|
+ Clean Code
|
|
|
|
|
|
-Code Complete
|
|
|
|
|
|
+ Code Complete
|
|
|
|
|
|
-Introduction to Algorithms
|
|
|
|
|
|
+ Introduction to Algorithms
|
|
|
|
|
|
##########################################################################################
|
|
##########################################################################################
|
|
## Coding exercises/challenges:
|
|
## Coding exercises/challenges:
|
|
@@ -430,16 +440,33 @@ Recommended: LeetCode: https://leetcode.com/
|
|
|
|
|
|
HackerRank: https://www.hackerrank.com/
|
|
HackerRank: https://www.hackerrank.com/
|
|
Codility: https://codility.com/programmers/
|
|
Codility: https://codility.com/programmers/
|
|
-Proect Euler: https://projecteuler.net/index.php?section=problems
|
|
|
|
|
|
+Project Euler: https://projecteuler.net/index.php?section=problems
|
|
InterviewCake: https://www.interviewcake.com/
|
|
InterviewCake: https://www.interviewcake.com/
|
|
InterviewBit: https://www.interviewbit.com/invite/icjf
|
|
InterviewBit: https://www.interviewbit.com/invite/icjf
|
|
|
|
|
|
##########################################################################################
|
|
##########################################################################################
|
|
-## Code:
|
|
|
|
|
|
+## Code References:
|
|
|
|
+##########################################################################################
|
|
|
|
+
|
|
|
|
+For review questions in C book:
|
|
|
|
+ https://github.com/lekkas/c-algorithms
|
|
|
|
+
|
|
##########################################################################################
|
|
##########################################################################################
|
|
|
|
+## Once you've got the job (this is mainly for me):
|
|
|
|
+##########################################################################################
|
|
|
|
+
|
|
|
|
+C++ Talks at CPPCon:
|
|
|
|
+ - https://www.youtube.com/watch?v=hEx5DNLWGgA&index=2&list=PLHTh1InhhwT75gykhs7pqcR_uSiG601oh
|
|
|
|
|
|
-https://github.com/lekkas/c-algorithms
|
|
|
|
|
|
+Compilers:
|
|
|
|
+ - https://class.coursera.org/compilers-004/lecture
|
|
|
|
+
|
|
|
|
+Computer and processor architecture:
|
|
|
|
+ - https://class.coursera.org/comparch-003/lecture
|
|
|
|
+
|
|
|
|
+Long series of C++ videos:
|
|
|
|
+ - https://www.youtube.com/playlist?list=PLfVsf4Bjg79Cu5MYkyJ-u4SyQmMhFeC1C
|
|
|
|
|
|
##########################################################################################
|
|
##########################################################################################
|
|
## Done. ##
|
|
## Done. ##
|
|
-##########################################################################################
|
|
|
|
|
|
+##########################################################################################
|