-
- 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
arguments
andrest 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..of
loop works(optional)
-
this
scope- Reference Type & losing
this
- Understand difference between function and method
- Understand how
this
works, realizethis
possible issues - Manage
this
scope - Be able to replace
this
scope - Be able to use
call
andapply
Function 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
this
scope 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
-
new
keyword- Understand how
new
keyword 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)
prototype
property- Know function
prototype
property - Understand dependency between function constructor
prototype
and instance__proto__
- Able to create 'class' methods using function
prototype
property
-
- Class declaration
- Know
class
declaration syntax - Understand difference between
class
andconstructor function
- Getter/setter
- What does
super()
do and where we have to use it?
-
- Object
keys/values
- Object calculated props
Set/Map
data typesWeakSet/WeakMap
data types
- Object
-
try..catch
statement- 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
-
clearTimeout
requestAnimationFrame
(optional)
- Be able to explain difference between
setTimeout
andrequestAnimationFrame
(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.bind
implement polyfillObject.create
implement polyfillArray.flat
implement polyfillArray.reduce
implement 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.