浏览代码

Reorganized a few things. Added "future Googler" files.

John Washam 9 年之前
父节点
当前提交
985bffae8e
共有 3 个文件被更改,包括 133 次插入73 次删除
  1. 二进制
      future-googler-preview.png
  2. 33 0
      future-googler.pdf
  3. 100 73
      plan.txt

二进制
future-googler-preview.png


文件差异内容过多而无法显示
+ 33 - 0
future-googler.pdf


+ 100 - 73
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,
-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.                                                                               ##
-##########################################################################################
+##########################################################################################

部分文件因为文件数量过多而无法显示