Web-Essentials Reminder
Tags: webdev, javascript, interview, beginners
Published: 2023-04-23 22:21:37

> This is a simple reminder to help refresh your knowledge or prepare for a Junior position interview.

## JavaScript Engine

- **Data Types**
  - `number`: for any kind of numbers, integer or floating-point.
  - `string`: for strings. A string may have one or more characters; there’s no separate single-character type.
  - `boolean`: for true/false values.
  - `null`: for unknown values – a standalone type with a single value null.
  - `undefined`: for unassigned values – a standalone type with a single value undefined.
  - `object`: for more complex data structures.
  - `symbol`: for unique identifiers. [Learn more](https://javascript.info/symbol)
- **Boxing/Unboxing**: [Learn more](https://stackoverflow.com/a/34067647/2902988)
- **Variables**: const, let, and var. [Learn more about const](https://javascript.info/variables), [Learn more about var](https://javascript.info/var)
- **Closures**: [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures), [JavaScript.info](https://javascript.info/closure), [Medium](https://medium.com/dailyjs/i-never-understood-javascript-closures-9663703368e8)
- **Arrow functions vs regular functions**: [Vinta](https://www.vinta.com.br/blog/2015/javascript-lambda-and-arrow-functions/), [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
- **Objects**: [Learn more](https://javascript.info/object)
- **Prototypes**: [JavaScript.info (Inheritance)](https://javascript.info/prototype-inheritance), [JavaScript.info (Function Prototype)](https://javascript.info/function-prototype)
- **Property flags and descriptors**: [Learn more](https://javascript.info/property-descriptors) - value, writable, enumerable, configurable
- **Decorators**: [TypeScript Documentation](https://www.typescriptlang.org/docs/handbook/decorators.html)
- **Generators (yield)**: [Learn more](https://javascript.info/generators)
- **Promises**: [Learn more](https://javascript.info/promise-basics)
- **Memory allocation**: [Learn more](https://hashnode.com/post/does-javascript-use-stack-or-heap-for-memory-allocation-or-both-cj5jl90xl01nh1twuv8ug0bjk)

## TypeScript

- Basic concepts

## Node.js

- Overview
- Dependencies and npm
- **Event loop**: [Learn more](https://blog.insiderattack.net/event-loop-and-the-big-picture-nodejs-event-loop-part-1-1cb67a182810)
- **Streams**: [Medium](https://medium.com/devschacht/stefan-baumgartner-the-definitive-guide-to-object-streams-in-nodejs-ab983b819eae), [YouTube](https://www.youtube.com/watch?v=GpGTYp_G9VE), [freeCodeCamp](https://www.freecodecamp.org/news/node-js-streams-everything-you-need-to-know-c9141306be93/)
- Google V8 and Libuv
- **Garbage collector**: [Learn more](https://blog.risingstack.com/node-js-at-scale-node-js-garbage-collection/)
- Pros and cons of Node.js
- Express and other frameworks

## Browser

- **Web APIs, JavaScript runtime, browser event loop, and browser promises**: [ITNEXT (1)](https://itnext.io/how-javascript-works-in-browser-and-node-ab7d0d09ac2f), [ITNEXT (2)](https://itnext.io/javascript-promises-and-async-await-as-fast-as-possible-d7c8c8ff0abc)
- **Web Workers**
- **Document Object Model (DOM)**
- **Virtual DOM**: [React.js Documentation](https://reactjs.org/docs/faq-internals.html), [Habr (Russian)](https://habr.com/ru/post/448048/)
- **Shadow DOM**: [Learn more](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM)

## SQL

- Database design
- Indexes
- N + 1 problem
- Joins
- ACID properties

## NoSQL

- Overview
- Sharding
- Comparing with SQL databases
- CAP theorem: [Wikipedia](https://en.wikipedia.org/wiki/CAP_theorem), [Quora](https://www.quora.com/Which-is-better-Redis-cluster-or-Cassandra)

## REST API

- Overview
- API design
- Examples
- Bulk operations

## Authentication and Authorization

- Cookies
- Session
- LocalStorage
- JWT
- OAuth 2

## HTTPS

- Protocol
- Methods & Status codes
- Limitations

## Testing

- Behavior-Driven Development (BDD)
- Test-Driven Development (TDD)

## Object-Oriented Programming (OOP)

- Fundamentals
- Examples
- SOLID principles
- Design patterns

## Build tools and preprocessors

- Webpack
- Sass
- Less