ProjectGopher
From charlesreid1
Project Gopher
Organizing notes in preparation for 2019 technical interview.
Full list of topics: https://git.charlesreid1.com/cs/study-plan/src/branch/master/SoftwareEngineering.md
Top level topics:
- Algorithm complexity
- Sorting - know how to sort, know at least 2 O(n log n) sort methods (merge sort and quicksort)
- Hashtables - the most useful data structure known to humankind.
- Trees - this is basic stuff, BFS/DFS, so learn it.
- Graphs - twice as important as you think they are.
- Other Data Structures - fill up your brain with other data structures.
- Math - discrete math, combinatorics, probability.
- Systems - operating system level, concurrency, threads, processing, memory.
Links: Template:AlgorithmsFlag
Week 1
Sorting:
Week 2
Code:
- Write simple code with correct syntax.
- Java
- Python
Walk through the algorithm (coding it) on paper.
Then code it on the computer. Note any errors and problems.
Arrays:
- Implement Fisher-Yates shuffle
- Implement any shuffle
- Find the nearest integer to X in the array (binary search + variations)
- Implement any sort algorithm (merge sort)
- Implement another sort algorithm (quick sort)
- The merge sort you used is recursive. Can you do it non-recursively?
Language-specific array basics:
- Java arrays class
- Creating arrays
- Accessing arrays (first, last, range)
- Basic info about arrays:
- Length
- Slice
- Reverse
- Sort (built-in)