From 0a64b62143c2e2064cf386544407265d81e1f6d0 Mon Sep 17 00:00:00 2001
From: Valery <57412523+valerydluski@users.noreply.github.com>
Date: Thu, 29 Feb 2024 19:30:23 +0100
Subject: [PATCH] feat: update core js interview template (#2444)
---
client/src/data/interviews/corejs1.ts | 364 +++++++++++++++++++-------
1 file changed, 267 insertions(+), 97 deletions(-)
diff --git a/client/src/data/interviews/corejs1.ts b/client/src/data/interviews/corejs1.ts
index 9679f46910..e4d569ac0c 100644
--- a/client/src/data/interviews/corejs1.ts
+++ b/client/src/data/interviews/corejs1.ts
@@ -4,164 +4,334 @@ export const corejs1Template: InterviewTemplate = {
name: 'CoreJS',
examplesUrl: 'https://github.com/rolling-scopes-school/tasks/blob/master/tasks/interview-basic-coreJS.md',
descriptionHtml: `
- During the interview, students can score up to 100 points. Each topic has its value in points.
- Please see the details below.
-
- - Basics - up to 25 points
- - Advanced Expressions - up to 10 points
- - Function - up to 20 points
- - Date & time (optional) - up to 5 points
- - Objects Built-in methods - up to 10 points
- - Arrays Built-in methods - up to 10 points
- - Arrays Iterating, Sorting, Filtering - up to 10 points
- - Loops - up to 5 points
- - Global object window up to 10 points
- - Events Basics - up to 10 points
- - Events Propagation / Preventing - up to 10 points
- - Timers - up to 10 points
- - Web Storage API & cookies - up to 10 points
- - Intermediate knowledge of patterns and best practices - up to 5 points
-
-
- `,
+ During the interview, students can score up to 100 points. Each topic has its value in points.
+ Please see the details below.
+
+ - Advanced Expressions - up to 10 points
+ - Function - up to 5 points
+ - Functional Scope - up to 10 points
+ - Functions Parameters / Arguments - up to 5 points
+ - Closures Advanced - up to 15 points
+ - Advanced Functions - up to 15 points
+ - ECMAScript Intermediate - up to 10 points
+ - Objects Built-in Methods - up to 10 points
+ - Arrays Built-in Methods - up to 5 points
+ - Arrays Iterating, Sorting, Filtering - up to 5 points
+ - Events Basics - up to 5 points
+ - Events Propagation / Preventing - up to 5 points
+ - Timers - up to 5 points
+ - Web Storage API & Cookies - up to 5 points
+ - Date & Time - up to 5 points
+ - Software Development Best Practices - up to 5 points
+
+
+ `,
categories: [
- {
- id: 1000,
- name: 'Basics',
- description: '25 points',
- questions: [
- { id: 1001, name: 'Data types', type: InputType.Input },
- { id: 1002, name: 'Number methods' },
- { id: 1003, name: 'String methods' },
- { id: 1004, name: 'let var const - differences', type: InputType.Input },
- { id: 1005, name: 'ternary operator' },
- { id: 1006, name: 'switch case - examples, where it can be useful' },
- { id: 1007, name: 'type conversions', type: InputType.Input },
- ],
- },
{
id: 1010,
name: 'Advanced Expressions',
description: `10 points`,
questions: [
- { id: 1011, name: 'Be able to discover cases of implicit data types conversion into boolean, string, number' },
- { id: 1012, name: 'Strict comparison', type: InputType.Input },
- { id: 1013, name: 'Object.is (optional)' },
- { id: 1014, name: 'what is polyfills' },
+ { id: 1011, name: 'Object.is (optional)' },
+ { id: 1012, name: 'Differences between let, var, and const' },
+ { id: 1013, name: 'Exploring the Temporal Dead Zone', type: InputType.Input },
{ id: 1015, name: 'Hoisting', type: InputType.Input },
- { id: 1016, name: 'String templates' },
],
},
{
id: 1020,
name: 'Function',
- description: `20 points`,
- questions: [{ id: 1021, name: 'arrow func/ func expression/ func declaration' }],
+ description: `5 points`,
+ questions: [
+ {
+ id: 1021,
+ name: 'Differences and uses of arrow functions, function expressions, and function declarations',
+ type: InputType.Input,
+ },
+ ],
},
{
id: 1030,
- name: 'Date & time (optional)',
- description: `5 points`,
+ name: 'Functional Scope',
+ description: '10 points',
questions: [
- { id: 1031, name: 'Date object' },
- { id: 1032, name: 'Date methods, props' },
+ { id: 1031, name: 'Global scope vs. Functional scope' },
+ { id: 1032, name: 'Variable visibility areas' },
+ { id: 1033, name: 'Working with nested scopes' },
],
},
{
id: 1040,
- name: 'Objects Built-in methods',
- description: `10 points`,
+ name: 'Functions Parameters / Arguments',
+ description: '5 points',
questions: [
- { id: 1041, name: 'Object `keys/values`' },
- { id: 1042, name: 'Know how to use built-in methods' },
+ {
+ id: 1041,
+ name: 'Defining function parameters',
+ },
+ {
+ id: 1042,
+ name: 'Differences in parameters passing by value and by reference',
+ },
+ {
+ id: 1043,
+ name: 'Handling a dynamic amount of function parameters',
+ },
],
},
{
id: 1050,
- name: 'Arrays Built-in methods',
- description: `10 points`,
+ name: 'Closures Advanced',
+ description: '15 points',
questions: [
- { id: 1051, name: 'Know how to copy array', type: InputType.Input },
- { id: 1052, name: 'Know how to modify array', type: InputType.Input },
- { id: 1053, name: 'Know how to copy a part of array', type: InputType.Input },
- { id: 1054, name: 'Know how to flatten nested array' },
+ {
+ id: 1051,
+ name: 'Understanding context and lexical environments',
+ type: InputType.Input,
+ },
+ {
+ id: 1052,
+ name: 'Differences between scope and context',
+ type: InputType.Input,
+ },
+ {
+ id: 1053,
+ name: 'The mechanism of lexical environment traversal',
+ },
+ {
+ id: 1054,
+ name: 'Connection between function and its lexical environment',
+ type: InputType.Input,
+ },
],
},
{
id: 1060,
- name: 'Arrays Iterating, Sorting, Filtering',
- description: `10 points`,
+ name: 'Advanced Functions',
+ description: '15 points',
questions: [
- { id: 1061, name: 'Know how to sort Array', type: InputType.Input },
- { id: 1062, name: 'Know several method how to iterate Array elements', type: InputType.Input },
- { id: 1063, name: 'Be able to custom sorting for Array', type: InputType.Input },
- { id: 1064, name: 'Be able to filter Array elements', type: InputType.Input },
+ {
+ id: 1061,
+ name: '`this` in functions',
+ type: InputType.Input,
+ },
+ {
+ id: 1062,
+ name: 'Reference Type & losing `this`',
+ },
+ {
+ id: 1063,
+ name: 'Understand difference between function and method',
+ },
+ {
+ id: 1064,
+ name: 'Understand how `this` works, realize `this` possible issues',
+ type: InputType.Input,
+ },
+ {
+ id: 1065,
+ name: 'Manage `this`',
+ type: InputType.Input,
+ },
+ {
+ id: 1067,
+ name: 'Be able to use `call` and `apply` Function built-in methods',
+ },
+ {
+ id: 1068,
+ name: 'Know how to bind `this` scope to function',
+ },
+ {
+ id: 1069,
+ name: 'Binding, binding one function twice',
+ },
],
},
{
id: 1070,
- name: 'Loops',
- description: `5 points`,
+ name: 'ECMAScript Intermediate',
+ description: '10 points',
questions: [
- { id: 1071, name: 'for loop' },
- { id: 1072, name: 'while loop' },
- { id: 1073, name: 'do while loop' },
+ {
+ id: 1071,
+ name: 'Function default parameters',
+ },
+ {
+ id: 1072,
+ name: 'Using spread operator for function arguments',
+ },
+ {
+ id: 1073,
+ name: 'Comparing `arguments` and `rest parameters`',
+ },
+ {
+ id: 1074,
+ name: 'Array concatenation with spread operator',
+ },
+ {
+ id: 1075,
+ name: 'Destructuring assignments for variables and function arguments',
+ },
],
},
{
id: 1080,
- name: 'Global object window',
- description: `10 points`,
- questions: [{ id: 1081, name: 'Document' }],
+ name: 'Objects Built-in Methods',
+ description: '10 points',
+ questions: [
+ {
+ id: 1081,
+ name: 'Utilizing `Object.keys` and `Object.values`',
+ },
+ {
+ id: 1082,
+ name: 'Working with static Object methods',
+ },
+ {
+ id: 1083,
+ name: 'Property flags and descriptors',
+ },
+ {
+ id: 1084,
+ name: 'Creating iterable objects and using `Symbol.iterator` (optional)',
+ },
+ ],
+ },
+ {
+ id: 1100,
+ name: 'Arrays Built-in Methods',
+ description: '5 points',
+ questions: [
+ {
+ id: 1101,
+ name: 'Copying and modifying arrays',
+ },
+ {
+ id: 1102,
+ name: 'Flattening nested arrays',
+ },
+ ],
},
{
- id: 1090,
+ id: 1110,
+ name: 'Arrays Iterating, Sorting, Filtering',
+ description: '5 points',
+ questions: [
+ {
+ id: 1111,
+ name: 'Sorting and custom sorting arrays',
+ },
+ {
+ id: 1112,
+ name: 'Filtering array elements',
+ },
+ ],
+ },
+ {
+ id: 1130,
name: 'Events Basics',
- description: `10 points`,
+ description: '5 points',
questions: [
- { id: 1091, name: 'Event Phases', type: InputType.Input },
- { id: 1092, name: 'Event Listeners', type: InputType.Input },
- { id: 1093, name: 'DOM Events' },
- { id: 1094, name: 'Know basic Event types' },
- { id: 1095, name: 'Mouse / Keyboard Events' },
- { id: 1096, name: 'Form / Input Events' },
+ {
+ id: 1131,
+ name: 'Types of DOM Events',
+ },
+ {
+ id: 1132,
+ name: 'Working with Mouse and Keyboard Events',
+ },
+ {
+ id: 1133,
+ name: 'Handling Form and Input Events',
+ },
+ {
+ id: 1134,
+ name: 'Event Listeners',
+ },
+ {
+ id: 1135,
+ name: 'Event Phases and their differences',
+ },
+ {
+ id: 1136,
+ name: 'Custom events (optional)',
+ },
],
},
{
- id: 1100,
+ id: 1140,
name: 'Events Propagation / Preventing',
- description: `10 points`,
+ description: '5 points',
questions: [
- { id: 1101, name: 'Know Event propagation cycle' },
- { id: 1102, name: 'Know how to stop Event propagation (stopPropagation() / stopImmediatePropagation())' },
- { id: 1103, name: 'Know how to prevent Event default browser behavior (event.preventDefault())' },
- { id: 1104, name: 'Delegating' },
- { id: 1105, name: 'Understand Event delegating benefits and drawbacks' },
+ {
+ id: 1141,
+ name: 'Event propagation cycle',
+ },
+ {
+ id: 1142,
+ name: 'Stopping event propagation',
+ },
+ {
+ id: 1143,
+ name: 'Preventing default browser behavior',
+ },
+ {
+ id: 1144,
+ name: 'Event delegation and its pros/cons',
+ },
],
},
{
- id: 1120,
+ id: 1150,
name: 'Timers',
- description: `10 points`,
+ description: '5 points',
questions: [
- { id: 1121, name: 'setTimeout / setInterval', type: InputType.Input },
- { id: 1122, name: 'clearTimeout / clearInterval' },
+ {
+ id: 1151,
+ name: 'Usage of `setTimeout` / `setInterval`',
+ },
+ {
+ id: 1152,
+ name: 'Clearing timers with `clearTimeout` / `clearInterval`',
+ },
],
},
{
- id: 1130,
- name: 'Web Storage API & cookies',
- description: `10 points`,
+ id: 1160,
+ name: 'Web Storage API & Cookies',
+ description: '5 points',
questions: [
- { id: 1131, name: 'LocalStorage', type: InputType.Input },
- { id: 1132, name: 'SessionStorage' },
+ {
+ id: 1161,
+ name: 'Differences between LocalStorage, SessionStorage, and Cookies',
+ },
],
},
{
- id: 1140,
- name: 'Intermediate knowledge of patterns and best practices',
- description: `5 points`,
- questions: [{ id: 1141, name: 'KISS, DRY, YAGNI', type: InputType.Input }],
+ id: 1170,
+ name: 'Date & Time',
+ description: '5 points',
+ questions: [
+ {
+ id: 1171,
+ name: 'Working with the Date object',
+ },
+ {
+ id: 1172,
+ name: 'Timezones and Internationalization in JavaScript (Intl)',
+ },
+ ],
+ },
+ {
+ id: 1180,
+ name: 'Software Development Best Practices',
+ description: '5 points',
+ questions: [
+ {
+ id: 1181,
+ name: 'Understanding and applying KISS, DRY, and YAGNI principles',
+ },
+ ],
},
],
};