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
171
plan.txt
171
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:
|
||||
##########################################################################################
|
||||
|
||||
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:
|
||||
* - https://www.youtube.com/watch?v=42KTvGYQYnA
|
||||
@ -40,7 +79,7 @@ meaning the entire block is done.
|
||||
- Google uses clang-format (Google setting)
|
||||
- C++ Core Guidelines: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
|
||||
* - 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:
|
||||
* - https://class.coursera.org/compilers-004/lecture/1
|
||||
@ -53,11 +92,11 @@ meaning the entire block is done.
|
||||
The Gauntlet:
|
||||
|
||||
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++ - using built-in types, like STL's std::list for a linked list
|
||||
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.
|
||||
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)
|
||||
@ -67,19 +106,24 @@ Why code in all of these?
|
||||
----------------------------------------------------------------
|
||||
|
||||
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:
|
||||
- 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
|
||||
- cannot append or move if full - will not tackle allocating and copying to new memory
|
||||
- append(item)
|
||||
- insert(index, item)
|
||||
- prepend(item) - can use insert above at index 0
|
||||
- delete(index)
|
||||
- remove(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
|
||||
- O(1) to add/remove at end (amortized for allocations for more space), index, or update
|
||||
- O(n) to insert/remove elsewhere
|
||||
@ -254,6 +298,10 @@ System design:
|
||||
Performance analysis and optimization
|
||||
Testing
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Extras that can't hurt:
|
||||
|
||||
Information theory:
|
||||
- Markov processes:
|
||||
- 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
|
||||
Best/worst designs seen
|
||||
Ideas for improving existing products
|
||||
- my search idea (optimal result exhaustion and refresh)
|
||||
|
||||
##########################################################################################
|
||||
## Videos:
|
||||
@ -362,65 +395,42 @@ Continuous Pipelines at Google
|
||||
AddressSanitizer: A Fast Address Sanity Checker
|
||||
- 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:
|
||||
##########################################################################################
|
||||
|
||||
%%%%% 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:
|
||||
@ -430,15 +440,32 @@ Recommended: LeetCode: https://leetcode.com/
|
||||
|
||||
HackerRank: https://www.hackerrank.com/
|
||||
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/
|
||||
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. ##
|
||||
|
Reference in New Issue
Block a user