# 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