Added the big list.
This commit is contained in:
@ -1,3 +1,3 @@
|
|||||||
# Project 9894
|
# Project 9894
|
||||||
|
|
||||||
TBD
|
This is a setup for this project, which is stealthy right now. Will add more detail soon.
|
||||||
|
382
plan.txt
Normal file
382
plan.txt
Normal file
@ -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. ##
|
||||||
|
##########################################################################################
|
Reference in New Issue
Block a user