-
- Hoisting
- Temporal dead zone
-
- Know static Object methods
- Property flags & descriptors (student is able to set property via Object. defineProperty)
- Know how to create iterable objects, Symbol.iterator usage
(optional)
-
- Be able to loop through Object keys
-
- Know how to copy array part
- Know how to flatten nested array
-
- Be able to custom sorting for Array
- Be able to filter Array elements
-
- Know global scope and functional scope
- Know variables visibility areas
- Understand nested scopes and able work with them
-
- Know how to define Function parameters
- Know difference between parameters passing by value and by reference
- Know how to handle dynamic amount of Function parameters
-
- Function default parameters
- ECMA script modules
- Know how to use spread operator for Function arguments
- Be able to compare
argumentsandrest parameters - Spread operator for Array
- Understand and able to use spread operator for Array concatenation Destructuring assignment
- Be able to discover destructuring assignment concept
- Understand variables and Function arguments destructuring assignment
- String templates
- Know how
for..ofloop works(optional)
-
thisscope- Reference Type & losing
this - Understand difference between function and method
- Understand how
thisworks, realizethispossible issues - Manage
thisscope - Be able to replace
thisscope - Be able to use
callandapplyFunction built-in methods
-
- Immediately invoked functional expression
(IIFE)(optional) - Know IIFE pattern
(optional) - Callback (Function as argument)
- Know callback pattern
- Understand callback limitations (callback hell)
(optional) - Binding, binding one function twice
- Know how to bind
thisscope to function - Carrying and partial functions
- Immediately invoked functional expression
-
Fetch(with usage)XMLHTTPRequest(concept)(optional)WebSocket(concept)(optional)
-
- Web components, shadow DOM (concept)
(optional)
- Web components, shadow DOM (concept)
-
- Timezones
(optional) - Internationalization js (Intl)
(optional)
- Timezones
-
- Context (lexical environment)
- Understand function creation context (lexical environment)
- Be able to explain difference between scope and context
- Inner/outer lexical environment
- Understand lexical environment traversing mechanism
- Understand connection between function and lexical environment
-
newkeyword- Understand how
newkeyword works - Function constructor
- Know function constructor concept
- Able to create constructor functions
- Public, private, static members
- Know how to create public members
- Know how to create private members
- Know how to create static members
- Understand OOP emulation patterns and conventions
-
__proto__property- Understand
__proto__object property - Able to use [Object.create] and define
__proto__explicitly - Able to set / get object prototype
(optional) prototypeproperty- Know function
prototypeproperty - Understand dependency between function constructor
prototypeand instance__proto__ - Able to create 'class' methods using function
prototypeproperty
-
- Class declaration
- Know
classdeclaration syntax - Understand difference between
classandconstructor function - Getter/setter
- What does
super()do and where we have to use it?
-
- Object
keys/values - Object calculated props
Set/Mapdata typesWeakSet/WeakMapdata types
- Object
-
try..catchstatement- Know how to handle errors
- Custom errors
(optional)
-
- Garbage collector (concept)
(optional) - Promises
- Promise states
- Promise Chaining
- Promise static methods
- Be able to compare promise and callback patterns
(optional) - Be able to handle errors in promises
- event loop
- async/await
- Garbage collector (concept)
-
- Location
- Know browser location structure
- History API (Global object window)
- Know browser History APIconcept
- Be able to navigate within browser history
- Be able to use history state
(optional) - Navigator
(optional) - Know how to parse user agent
(optional) - Know how to discover client platform, browser
- Cookies
-
- Parsing
- Reflow
- Repaint
-
- Be able to explain difference between capturing and bubbling
- Know Event concept
- Custom events
(optional)
-
- Know Event propagation cycle
- Know how to stop Event propagation
- Know how to prevent Event default browser behavior
- Delegating
- Understand Event delegating concept
- Understand Event delegating benefits and drawbacks
-
clearTimeoutrequestAnimationFrame(optional)- Be able to explain difference between
setTimeoutandrequestAnimationFrame(optional)
-
- Cookies (concept)
- Difference between localStorage, sessionStorage, session and cookies
-
- understanding TS(ES6) module system
- describing variables with primitive data types.
- using interfaces with optional properties, read-only properties, etc...
- creating custom types.
- types/interface differences
(optional) - function types.
- utitily types
(optional) - typeguards
(optional) - generic types (concept)
-
- design patterns used on his project, and able to compare these patterns
(optional) - KISS, DRY, YAGNI
- The meaning behind SOLID principles.
- design patterns used on his project, and able to compare these patterns
- HTTP vs HTTPS vs HTTP/2
- RESTful API
- HTTP methods
- HTTP status codes groups
-
- XSS
- CORS
- OWASP Top 10
- Auth (JWT, OAuth, Basic, etc.)
Function.prototype.bindimplement polyfillObject.createimplement polyfillArray.flatimplement polyfillArray.reduceimplement polyfill'hello world'.repeating(3)-> 'hello world hello world hello world'. How to implement?myFunc('!', 4, -10, 34, 0)-> '4!-10!34!0`. How to implement?five(plus(seven(minus(three()))))-> 9. How to implement?- add(5)(9)(-4)(1) -> 11. How to implement?
periodOutput(period)method should output in the console once per every period how mach time has passed since the first function call. Example:periodOutput(100) -> 100(after 100 ms), 200(after 100 ms), 300(after 100 ms), ...extendedPeriodOutput(period)method should output in the console once per period how mach time has passed since the first function call and then increase the period. Example:// extendedPeriodOutput(100) -> 100(after 100 ms), 200(after 200 ms), 300(after 300 ms)
- You should contact the mentor personally. Contact details will be announced through Discord.
- At the request of the mentor, the interview can take place online or face-to-face.
- During the interview mentor:
- asks questions;
- gets answers;
- adds/corrects/explains/gives the right answer, if necessary.
Note: preferable interview duration is 40-90 minutes. Also, it would be great to create a calendar appointment or let a student know in advance how much time the interview will take.