Reorganized a few things. Added "future Googler" files.
This commit is contained in:
BIN
future-googler-preview.png
Normal file
BIN
future-googler-preview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
669
future-googler.pdf
Normal file
669
future-googler.pdf
Normal file
File diff suppressed because one or more lines are too long
167
plan.txt
167
plan.txt
@ -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,
|
You need to know C, C++, or Java to do the coding part of the interview.
|
||||||
meaning the entire block is done.
|
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:
|
Be thinking of:
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
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
|
The Algorithm Design Manual
|
||||||
http://sist.sysu.edu.cn/~isslxm/DSA/textbook/Skiena.-.TheAlgorithmDesignManual.pdf
|
http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202
|
||||||
|
|
||||||
Algorithms and Programming: Problems and Solutions:
|
Algorithms and Programming: Problems and Solutions:
|
||||||
http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474
|
http://www.amazon.com/Algorithms-Programming-Solutions-Alexander-Shen/dp/0817638474
|
||||||
|
|
||||||
Read first:
|
Read first:
|
||||||
Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition:
|
Programming Interviews Exposed: Secrets to Landing Your Next Job, 2nd Edition:
|
||||||
http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html
|
http://www.wiley.com/WileyCDA/WileyTitle/productCd-047012167X.html
|
||||||
|
|
||||||
Read second:
|
Read second:
|
||||||
Cracking the Coding Interview, Fourth Edition:
|
Cracking the Coding Interview, Fourth Edition:
|
||||||
http://www.amazon.com/Cracking-Coding-Interview-Fourth-Edition/dp/145157827X
|
- http://www.amazon.com/Cracking-Coding-Interview-6th-Programming/dp/0984782850/
|
||||||
|
|
||||||
%%%%% Additional %%%%%%%%%%%%%%%
|
Additional (not suggested by Google but I added):
|
||||||
|
|
||||||
Programming Pearls:
|
* - C Programming Language, Vol 2
|
||||||
- http://www.wou.edu/~jcm/Spring-P-2015/Programming%20Pearls%20(2nd%20Ed)%20Bentley.pdf
|
|
||||||
|
|
||||||
The Google Resume:
|
* - C++ Primer Plus, 6th Edition
|
||||||
- https://www.uop.edu.jo/download/research/members/495_1887_llll.pdf
|
|
||||||
|
|
||||||
* - 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,15 +440,32 @@ 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:
|
||||||
##########################################################################################
|
##########################################################################################
|
||||||
|
|
||||||
https://github.com/lekkas/c-algorithms
|
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
|
||||||
|
|
||||||
|
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. ##
|
||||||
|
Reference in New Issue
Block a user