 Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information. algorithmExamples classPractice dataStructureExamples graphExamples practiceQuestions searchAlgorithms. videoNotes .DS_Store README.md

How I Would Prepare for an Interview as a Front End Developer at Google

# Broad Algorithms and Concepts

## Sort

Think about efficiency in terms of runtime and space used. To visualize this, nothing is better than TopTal's Sorting Algorithms Animations.

• sorting
• insertion-sort
• QuickSort
• MergeSort
• HeapSort

## Algorithm

For algorithms, know the complexity of the algorithm and how to improve/change it.

• Bottom Down Algorithms vs. Top Down Algorithms

Here is a good description of how to thinki of the choice between memoization and dynamicprogramming

• Simply put, Big-0 notation is a way to calculate the runtime of an algorithm in a back of the envelope sort of way. It's not rigorous mathematical perfection... but it will give you a fairly good idea for how fast your program will work when it encounters a huge data set.

...

...

## Data Structures

• You should know data structures
• arrays
• stacks
• queues
• hash-sets
• hash-maps
• hash-tables
• dictionary
• trees
• binary trees
• heaps
• graphs
• You should know which algorithms go with which data structurhttps://en.wikipedia.org/wiki/Combinatoricses

## Graphs

Consider a problem that can be addressed with a graph algorithm. Topics that can be solved with graphs often involve distance, search connectivity, cycle-detection and whatever else you can think of.

Learn these three representations.

• objects and pointers
• matrix

Know the good things and bad things about each.

Here is another list of useful things to learn related to graphs:

• basic graph traversal algorithms
• depth-first search

Of these three categories of search, know the computational complexity of each. Use your understanding of these subjects to develop ways to select algorithm types to implement in real code.

## Recursion

It's possible you'll want to use recursion to have more `elegant` solutions.

"In order to understand recursion, one must first understand recursion" - Unknown

Recursion is best visualized when you hold a mirror up to another mirror in just the perfect angle so that you can see what infinity looks like. One mirror reflects another mirror forever.

But when writing software, we can create a base case and use recursion to evaluate complex data structures without us needing to think of every edge case explicitly.

If you wanted to write a simple recursive function that counted down from a chosen number to one, here is an example.