# JavaScript
## Execution context
### Level 1
* Definition of execution context, use cases
* Preserving execution context via closure
* Losing context
* Types of declarations of functions and variables
* Bubbling
* Array-like object arguments
### Level 2
* Lexical environment
* Syntactic features of arrow functions
### Level 3
* Variable Environment
* Substitution of existing context
### Level 4
* Defining context when handling browser events
* Context reset
### Level 5
* Currying
* How the garbage collector works in V8
* Code Processing Process in V8
* AST
* Eager parse / Lazy parse
* Compilation, interpretation
* Deoptimization of compiled code
## Prototypes, Classes
### Level 1
* Definition a prototype
* Definition a class
### Level 2
* Class inheritance
### Level 3
* Prototype chain, property search mechanism
* Features of arrow function prototypes
### Level 4
* Implementing Factory Functions
* Implementing prototypical inheritance
* Creation of objects without a prototype, methods and scope
### Level 5
* Transpilation of classes
* Private and static class fields
* Mixins
## DOM
### Level 1
* Methods for finding DOM nodes
* Methods for changing content in DOM nodes
* Methods for adding and removing DOM nodes
* Basic browser events
### Level 2
* Bubbling and capturing
### Level 3
* Live collections, processing methods and conversion to array
* Preventing the bubbling mechanism
* Delegating events
### Level 4
* Mutation Observer
* Selection and Range
### Level 5
* Web Components:
* * Shadow Dom
* * Custom elements
## Asynchrony
### Level 1
* Is the JS single-threaded and synchronous?
### Level 2
* XMLHttpRequest, fetch
### Level 3
* Event loop mechanism
* How tasks/microtasks work
### Level 4
* Callback hell
* Promises
* async/await
### Level 5
* Generator functions
* Creating infinite loops with generator functions
## Browser and its tools
### Level 1
* Dev Tools
* Network Tab
* Breakpoints
### Level 2
* localStorage
* sessionStorage
* iframe
### Level 3
* Cookies
* Cookie Security
### Level 4
* Service workers
* Web-workers
* IndexedDB
### Level 5
* Web APIs (Payment Request API, Push API, Web Share API)
* Worklets
* PWA
## Regular Expressions
### Level 1
* Purpose of regular expressions
* Creating regular expressions via literal
### Level 2
* Basic specials characters: `\d`, `\s` and others, including boundaries: `^`, `$`, etc.
* Methods for working with a string: `replace`, `match`, `search`
### Level 3
* Global `RegExp` object and its methods
### Level 4
* Groupings `( x )`
* Sets and ranges
* Quantifiers - `x`, `x?*` and others
### Level 5
* Backreference
* Word boundary
## Exception handling, logging, debugging
### Level 1
* `try/catch`
* Console methods (`log`, `error`, `warn`, etc.)
### Level 2
* Debugging client code via browser
### Level 3
* Chrome DevTools: application, sources
### Level 4
* Setting up error logging (sentry, prometheus, etc.)
### Level 5
* Debugging server code via browser
## Testing
### Level 1
* Purpose of unit tests
### Level 2
* AAA, AAS patterns
### Level 3
* Mocks. Why are they needed and how to use them
* Stabs. Why are they needed and how to use them
### Level 4
* TDD principle
* BDD principle
### Level 5
* e2e tests
* cypress
---
# JavaScript (Tech stack)
## TypeScript
### Level 1
* TypeScript, areas of application.
* How typing reduces bugs
* Basic data types in TypeScript
### Level 2
* The difference between a `type` and an `interface`
### Level 3
* `.d.ts` declaration files
* Type guards and differentiating types
* Type Conversion (`extend`, `|`, `&`, Utility Types)
* Generics
* `keyof`, `typeof`
### Level 4
* Optional chaining, nullish coalescing
* Conditional types, mapped types
* Template Literal Types
* Function overloading
### Level 5
* Triple-Slash Directives
* Decorators
* Mixins
## NodeJS
### Level 1
* What is Node.js used for
* The advantages of using Node.js for frontend applications
### Level 2
* Built-in modules (http, fs) and global environment variables (global, process).
* Package managers (npm, yarn, pnpm, npx)
* Working with configurations for different development environments
### Level 3
* Node.js Event Loop
* Events
### Level 4
* Worker threads
---
# JS (Web)
## HTML/CSS
### Level 1
* Block model
* Vector and raster graphics. Advantages and disadvantages
* Font types, font styles, font embedding.
### Level 2
* CSS Methodologies
* Semantic HTML5 Elements
* Modern preprocessors and postprocessors
* CSS-Modules, CSS-in-JS
### Level 3
* Graceful degradation and Progressive Enhancement in CSS
### Level 4
### Level 5
## Network
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
## Performance
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
## Security
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
---
# JS (Tools)
## Git
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
## Docker
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
---
# Fundamental knowledge
## Algorithms and data structures
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
## Software development
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5
## Patterns
### Level 1
### Level 2
### Level 3
### Level 4
### Level 5