瀏覽代碼

Added the big list.

John Washam 9 年之前
父節點
當前提交
c950b20893
共有 2 個文件被更改,包括 383 次插入1 次删除
  1. 1 1
      README.md
  2. 382 0
      plan.txt

+ 1 - 1
README.md

@@ -1,3 +1,3 @@
 # Project 9894
 
-TBD
+This is a setup for this project, which is stealthy right now. Will add more detail soon.

+ 382 - 0
plan.txt

@@ -0,0 +1,382 @@
+##########################################################################################
+##  Knowledge:
+##########################################################################################
+
+* - Computer Arch Intro & Basics:
+    https://www.youtube.com/watch?v=zLP_X4wyHbY&list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq&index=1
+
+* - Parity & Hamming Code:
+    Parity:
+        https://www.youtube.com/watch?v=DdMcAUlxh1M
+    Hamming Code:
+        https://www.youtube.com/watch?v=1A_NcXxdoCc
+        https://www.youtube.com/watch?v=JAMLuxdHH8o
+    Error Checking:
+        https://www.youtube.com/watch?v=wbH2VxzmoZk
+
+* - C
+    * - K&R C book (ANSI C)
+- C++
+    * - basics
+    * - pointers
+    * - functions
+    * - references
+    * - templates
+    * - compilation
+    * - scope & linkage
+    * - namespaces
+    * - OOP
+    * - STL
+    * - functors: http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html
+    * - C++ at Google: https://www.youtube.com/watch?v=NOCElcMcFik
+    * - Google C++ Style Guide: https://google.github.io/styleguide/cppguide.html
+        - 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
+
+compilers:
+    * - https://class.coursera.org/compilers-004/lecture/1
+    * - https://class.coursera.org/compilers-004/lecture/2
+    * - C++: https://www.youtube.com/watch?v=twodd1KFfGk
+    * - Understanding Compiler Optimization (C++): https://www.youtube.com/watch?v=FnGCDLhaxKU
+
+how computers process a program:
+    - https://www.youtube.com/watch?v=42KTvGYQYnA
+    - https://www.youtube.com/watch?v=Mv2XQgpbTNE
+    - https://www.youtube.com/watch?v=h8T3PWauYF4
+
+linked lists
+    - https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
+    - singly-linked
+        - https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists
+    - doubly-linked
+        - https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists
+    - reverse a singly-linked list
+stacks
+    - see: https://class.coursera.org/algs4partI-010/lecture
+    - https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks
+queues
+    - see: https://class.coursera.org/algs4partI-010/lecture
+    - https://www.coursera.org/learn/data-structures/lecture/EShpq/queues
+arrays
+    - https://www.coursera.org/learn/data-structures/lecture/OsBSF/arrays
+    - https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays
+Vectors
+    - Vector calculus ?
+heaps
+    - https://www.coursera.org/learn/data-structures/lecture/GRV2q/binary-trees
+    - min heap
+    - max heap
+Priority Queue
+    - https://www.coursera.org/learn/data-structures/lecture/2OpTs/introduction
+    - see: https://class.coursera.org/algs4partI-010/lecture
+    - https://class.coursera.org/algs4partI-010/lecture/39
+    - https://en.wikipedia.org/wiki/Priority_queue
+Disjoint Sets:
+    - https://www.coursera.org/learn/data-structures/lecture/JssSY/overview
+    - https://www.coursera.org/learn/data-structures/lecture/Mxu0w/trees
+hashtables
+    - https://www.youtube.com/watch?v=C4Kc8xzcA68
+    - https://class.coursera.org/algs4partI-010/lecture/52
+    - https://www.coursera.org/learn/data-structures/home/week/3
+    - see: https://class.coursera.org/algs4partI-010/lecture
+    - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/m7UuP/core-hash-tables
+    - test: implement with only arrays
+tries
+    - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/08Xyf/core-introduction-to-tries
+Circular buffer/FIFO:
+    - https://en.wikipedia.org/wiki/Circular_buffer
+Bit operations
+    - count on bits
+        - https://youtu.be/Hzuzo9NJrlc
+    - max run of off bits
+    - bit shifting
+binary search
+Sorting
+    - no bubble sort - it's terrible
+    - at least one n*log(n) sorting algorithm, preferably two (say, quicksort and merge sort)
+    - Which algorithms can be used on lists? Which on arrays? Which on both? Is Quicksort stable?
+    - algos:
+        - mergesort
+        - quicksort
+Caches
+    - LRU cache
+Trees
+    - https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/ovovP/core-trees
+    - see: https://class.coursera.org/algs4partI-010/lecture
+    - basic tree construction
+    - traversal
+    - manipulation algorithms
+    - binary search trees BSTs
+        - https://www.coursera.org/learn/data-structures/lecture/E7cXP/introduction
+        - applications:
+            - https://class.coursera.org/algs4partI-010/lecture/57
+    - n-ary trees
+    - trie-trees
+    - at least one type of balanced binary tree (and know how it's implemented):
+        - red/black tree
+            - https://class.coursera.org/algs4partI-010/lecture/50
+        - splay trees
+            - https://www.coursera.org/learn/data-structures/lecture/O9nZ6/splay-trees
+        - AVL trees
+            - https://www.coursera.org/learn/data-structures/lecture/Qq5E0/avl-trees
+            - https://www.coursera.org/learn/data-structures/lecture/PKEBC/avl-tree-implementation
+            - https://www.coursera.org/learn/data-structures/lecture/22BgE/split-and-merge
+        - 2-3 Search Trees
+            - https://class.coursera.org/algs4partI-010/lecture/49
+        - B-Trees:
+            - https://class.coursera.org/algs4partI-010/lecture/51
+    - BFS (breadth-first search)
+    - DFS (depth-first search)
+    - know the difference between
+        - inorder
+        - postorder
+        - preorder
+Graphs:
+    There are three basic ways to represent a graph in memory:
+        - objects and pointers
+        - matrix
+        - adjacency list
+    - familiarize yourself with each representation and its pros & cons
+    - now their computational complexity, their tradeoffs, and how to implement them in real code
+    - If you get a chance, try to study up on fancier algorithms:
+        - Dijkstra
+        - A*
+Other data structures:
+    - You should study up on as many other data structures and algorithms as possible
+    - You should especially know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise.
+    - Find out what NP-complete means.
+Recursion
+    -  when it is appropriate to use it
+Algorithmic complexity
+open-ended problems
+    - manipulate strings
+    - manipulate patterns
+design patterns:
+    - strategy
+    - singleton
+    - adapter
+    - prototype
+    - decorator
+Combinatorics (n choose k)
+Probability
+Dynamic Programming
+Processes, Threads, Concurrency issues
+    - difference: https://www.quora.com/What-is-the-difference-between-a-process-and-a-thread
+    - threads: https://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M
+        - stopped here: https://www.youtube.com/watch?v=_N0B5ua7oN8&list=PL5jc9xFGsL8E12so1wlMS0r0hTQoJL74M&index=4
+    - locks
+    - mutexes
+    - semaphores
+    - monitors
+    - how they work
+    - deadlock
+    - livelock
+Process resource needs
+Thread resource needs
+Modern concurrency constructs with multicore processors
+Context switching
+    - How context switching is initiated by the operating system and underlying hardware
+Scheduling
+Weighted random sampling
+Implement system routines
+Distill large data sets to single values
+Transform one data set to another
+Handling obscenely large amounts of data
+System design:
+    - features sets
+    - interfaces
+    - class hierarchies
+    - designing a system under certain constraints
+    - simplicity and robustness
+    - tradeoffs
+Performance analysis and optimization
+Testing
+
+Information theory:
+    - 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/gZhiC/core-implementing-markov-text-generation
+    - https://www.khanacademy.org/computing/computer-science/informationtheory/moderninfotheory/v/symbol-rate-information-theory
+    - includes Markov chain
+
+Bloom Filter
+    - https://www.youtube.com/watch?v=-SuTGoFYjZs
+    - http://blog.michaelschmatz.com/2016/04/11/how-to-write-a-bloom-filter-cpp/
+
+C (for basis of C)
+C++ (for interview answers)
+
+Machine Learning:
+    - http://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/
+    - review videos
+    - intro in Goodreader on iPad
+    - http://www.dataschool.io/
+
+---
+
+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
+
+---
+
+Biggest challenges faced
+Best/worst designs seen
+Ideas for improving existing products
+    - my search idea (optimal result exhaustion and refresh)
+
+##########################################################################################
+##  Videos:
+##########################################################################################
+
+6.042: Math for CS (25 videos):
+    - https://www.youtube.com/watch?v=L3LMbpZIKhQ&list=PLB7540DEDD482705B
+
+6.006: Intro to Algorithms (47 videos):
+    - https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP61Oq3tWYp6V_F-5jb5L2iHb&nohtml5=False
+
+6.033: Computer System Engineering (22 videos):
+    - https://www.youtube.com/watch?v=zm2VP0kHl1M&list=PL6535748F59DCA484
+
+6.046: Design and Analysis of Algorithms (34 videos):
+    - https://www.youtube.com/watch?v=2P-yW7LQr08&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp
+
+6.851: Advanced Data Structures (22 videos):
+    - https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
+
+Stanford: Programming Paradigms (17 videos)
+    - https://www.youtube.com/watch?v=jTSvthW34GU&list=PLC0B8B318B7394B6F&nohtml5=False
+
+##########################################################################################
+##  Articles:
+##########################################################################################
+
+- https://www.topcoder.com/community/data-science/data-science-tutorials/the-importance-of-algorithms/
+- http://highscalability.com/blog/2016/4/4/how-to-remove-duplicates-in-a-large-dataset-reducing-memory.html
+- http://highscalability.com/blog/2016/3/23/what-does-etsys-architecture-look-like-today.html
+- http://highscalability.com/blog/2016/3/21/to-compress-or-not-to-compress-that-was-ubers-question.html
+- http://highscalability.com/blog/2016/3/3/asyncio-tarantool-queue-get-in-the-queue.html
+- http://highscalability.com/blog/2016/2/25/when-should-approximate-query-processing-be-used.html
+- http://highscalability.com/blog/2016/2/23/googles-transition-from-single-datacenter-to-failover-to-a-n.html
+- http://highscalability.com/blog/2016/2/15/egnyte-architecture-lessons-learned-in-building-and-scaling.html
+- http://highscalability.com/blog/2016/2/1/a-patreon-architecture-short.html
+- http://highscalability.com/blog/2016/1/27/tinder-how-does-one-of-the-largest-recommendation-engines-de.html
+- http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html
+- http://highscalability.com/blog/2016/1/13/live-video-streaming-at-facebook-scale.html
+- http://highscalability.com/blog/2016/1/11/a-beginners-guide-to-scaling-to-11-million-users-on-amazons.html
+- http://highscalability.com/blog/2015/12/16/how-does-the-use-of-docker-effect-latency.html
+- http://highscalability.com/blog/2015/12/14/does-amp-counter-an-existential-threat-to-google.html
+- http://highscalability.com/blog/2015/11/9/a-360-degree-view-of-the-entire-netflix-stack.html
+
+##########################################################################################
+##  Papers:
+##########################################################################################
+
+Computing Weak Consistency in Polynomial Time
+    - http://delivery.acm.org/10.1145/2770000/2767407/p395-golab.pdf?ip=104.200.154.80&id=2767407&acc=OA&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E5945DC2EABF3343C&CFID=769944592&CFTOKEN=71654301&__acm__=1460506755_42d28e3f230cc8e733e2e9ed1ebe3605
+
+How Developers Search for Code: A Case Study
+    - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43835.pdf
+
+Borg, Omega, and Kubernetes
+    - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/44843.pdf
+
+Continuous Pipelines at Google
+    - http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43790.pdf
+
+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 %%%%%%%%%%%%%%%
+
+The Algorithm Design Manual
+    http://sist.sysu.edu.cn/~isslxm/DSA/textbook/Skiena.-.TheAlgorithmDesignManual.pdf
+
+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 second:
+Cracking the Coding Interview, Fourth Edition:
+    http://www.amazon.com/Cracking-Coding-Interview-Fourth-Edition/dp/145157827X
+
+%%%%% Additional %%%%%%%%%%%%%%%
+
+Programming Pearls:
+    - http://www.wou.edu/~jcm/Spring-P-2015/Programming%20Pearls%20(2nd%20Ed)%20Bentley.pdf
+
+The Google Resume:
+    - https://www.uop.edu.jo/download/research/members/495_1887_llll.pdf
+
+* - C Programming Language, Vol 2
+
+* - C++ Primer Plus
+
+Clean Code
+
+Code Complete
+
+Introduction to Algorithms
+
+##########################################################################################
+##  Coding exercises/challenges:
+##########################################################################################
+
+Recommended: LeetCode: https://leetcode.com/
+
+HackerRank: https://www.hackerrank.com/
+Codility: https://codility.com/programmers/
+Proect Euler: https://projecteuler.net/index.php?section=problems
+InterviewCake: https://www.interviewcake.com/
+InterviewBit: https://www.interviewbit.com/invite/icjf
+
+##########################################################################################
+##  Code:
+##########################################################################################
+
+https://github.com/lekkas/c-algorithms
+
+##########################################################################################
+##  Done.                                                                               ##
+##########################################################################################