Practice programming problems for Software Engineering Roles (Frontend).
This document is to track my own progress of understanding software engineering concepts. Fundamental algorithms and data structures:
- Breadth-first search - Queue
- Depth-first search - Stack
- Hash tables
- Lists
- Binary trees
...as well as their runtime characteristics and common applications.
Master approaches to programming problems by knowing when to use Recursion and also what Data Structure is best to solve the problem.
- Recursive Functions (Top-Down algorithms).
- Iterative Algorithms (Bottom-Up algorithms).
Note: Recursive function can be done iteratively by including Stacks or Queues, but is more difficult to solve.
- Tree Traversal - In-order, Pre-order, and Post-order.
- Graph Traversal - Using stacks or queues?
Pre-Order, In-order, and Post-order traversal (this section). You should also know how to write Depth First Search and Breadth First Search traversals (Table of contents).
Note: Try using a Data Structures to represent a Tree, as an alternative to Nodes (Array, for example)
- Create a Tree from an array (
are there other Data Structures we can create trees from? Linked Lists?
) - Balance a BST
- Know the methods: push, pop, peek. The order LIFO Stack, FIFO Queue.
Show you can create program structure.
- Classes
- Prototypal inheritance in JavaScript
- Merge Sort, Quicksort
- Divide and Conquer Strategies
- Memoization
. For frontend positions, we emphasize expertise programming for the Web (including an understanding of modern JS tooling and cross-browser compatibility issues) and sensibilities for design and UX over a strong algorithmic or CS background.