- Name all data types in JavaScript.
- Compare the reference types and primitive types.
- Describe the ways of checking data types. What are the possible difficulties of determining the data type?
- Describe the difference between Abstract Equality Comparison and Strict Equality Comparison.
- Describe the process of the type coercion and rules of comparing the same and different data types.
- Name the built-in and native types. Describe wrappers/boxing.
- Name the data types that can and cannot contain values/ types of objects. Name the ways to detect them.
- What is the practical use of the Symbol data type?
- Describe the statements and expressions. What are the side effects of expressions?
- Define Operator Precedence. Specify the usage of logical and binary operators.
- Explain what Objects and Arrays destructuring is.
- Specify loops, conditions, and the execution context.
- Describe the error handling process in JavaScript.
- How/when to use the Use strict directive? How does it affect the JavaScript execution?
- Describe all variable declaration types and the difference between them.
- Is there any way to determine whether the variable is declared in a specific scope?
- What is scope? What scope types exist in JavaScript? What is the difference between the function and block scopes?
- What are a hoisting and temporal dead zone?
- Scope chain, lexical environment, and variable name resolution.
- What is closure?
- Describe the Memory Lifecycle in the context of the closure.
- Name all the approaches to declare and invoke functions in JavaScript and describe how they affect their execution.
- What does it mean: the functions in JavaScript are first-class objects?
- What is the difference between the execution context, scope, and static properties?
- What does this keyword refer to in JavaScript?
- Provide a description of the partial application of functions vs. currying.
- Describe the practice of the borrowing method.
- Describe the OOP principles and their implementation in JavaScript.
- What is the difference between the classical and prototypal inheritance?
- Name all the possible ways to create an object and object`s property in JavaScript.
- Describe the attributes of the object and the object`s property.
- Do access modifiers exist in JavaScript? Is it possible to simulate them, and how?
- What are the pros and cons of functional programming vs. object-oriented programming?
- What is functional programming?
- What is a high-order function?
- What is a pure function?
- What is currying?
- What does favor object composition over class inheritance mean?
- Compare the imperative programming and declarative programming.
- Describe SOLID and JavaScript. Provide an example of dependency injection and inversion of control in JavaScript. Are they related?
- What are two-way data binding and one-way data flow? How do they differ?
- What are the pros and cons of monolithic and microservice architectures?
- What are the ways to handle the async code?
- What is a callback hell, and how can you avoid it?
- Describe how async/await works.
- Describe the generators and iterators and their possible usage in async JavaScript.
- Provide yield-delegation examples and generators concurrency.
- Describe Web Workers, Shared Workers.
- Describe the micro and macro tasks in the context of the event loop?
- Name the most commonly used Array methods.
- Describe how the reduce method works. What is the difference between slice and splice?
- Describe Map, Set, WeakMap, and WeakSet.
- What traditional data structures do you know? How do they correspond with data structures available in JavaScript?
- What is the Node.js event loop?
- What are the pros and cons of the Node.js® runtime environment? In what cases should Node.js be used and when should it not?
- What are streams in Node.js?
- Explain different types of streams in Node.js.
- Describe multithreading in Node.js.
- How to utilize multiple cores in a single Node.js application?
- Explain the difference between programming in JS for Node.js and browsers.
- Suggest an application structure/architecture for Node.js based REST API server.
- Name the most common test types and explain the difference between them.
- Describe TDD/BDD.
- What are the best practices of code testing in JavaScript?
Introductory without previous programming experience
- 1. JavaScript: The Good Parts (Douglas Crockford)
- JavaScript: The Definitive Guide (David Flanagan)
Introductory with previous programming experience
- CSS: The Definitive Guide (Eric A. Meyer)
- Handcrafted CSS: More Bulletproof Web Design (Dan Cederholm, Ethan Marcotte)
- The Principles of Object-Oriented JavaScript (Nicholas C. Zakas)
Advanced
- Secrets of the JavaScript Ninja (John Resig)
- High Performance JavaScript (Nicholas Zakas)
- Standard ECMA-262 ECMAScript Language Specification