Now I love FreeCodeCamp, I really do. I’m extremely passionate about the movement and believe in it with all my heart(I even support FCC financially by buying stuff from our store)… but it’s come to my attention that some people on this awesome platform think that the “algorithm scripting” challenges are real algorithms.
Let me please make it clear:
> There is a HUGE difference between what real “algorithms” are and FCC’s “algorithm scripting”
That I think we should all be aware of. Please let me make it clear in my fellow campers mind the difference…
Algorithms are things like:
- Object Orientated Design and Programming, how to test your code
- sorting (plus searching and binary search), divide-and-conquer, dynamic
programming/memoization, greediness, recursion or algorithms linked to a specific data structure. Big-O notations (e.g. run time) and complex algorithms like Dijkstra and A*.
- insertion-sort or radix-sort and the generic QuickSort/MergeSort/HeapSort
- implementing data structures such as arrays, linked lists, stacks, queues, hash-sets, hash-maps, hash-tables, dictionary, trees and binary trees, heaps and graphs.
- Mathematics: Some interviewers ask basic discrete math questions. This is more prevalent at Google than at other companies because counting problems, probability problems and other Discrete Math 101
situations surround us. Spend some time before the interview refreshing your memory on (or teaching
yourself) the essentials of elementary probability theory and combinatorics. You should be familiar with
n-choose-k problems and their ilk.
- Graphs algorithms like distance, search, connectivity,cycle-detection, etc. There are three basic ways to represent a graph in memory (objects and pointers,matrix, and adjacency list) — familiarize yourself with each representation and its pros and cons. You should know the basic graph traversal algorithms, breadth-first search and depth-first search. Know their computational complexity, their tradeoffs and how to implement them in real code.
- And the plethora of recursive algorithms that can replace iterative solutions.
> This is all taken straight out of the Preparation Guide Google sent me.
So yeah. Fellow coders, campers, please understand the differences.
Here are some resources to learn about REAL algorithms.
Introduction To Algorithms, CLRS… just Google it.
And any Google search will provide an overwhelming amount of additional resources to learn.