From charlesreid1

Revision as of 05:53, 12 February 2019 by Admin (talk | contribs) (→‎Week 2)

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)