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. - -
- `, + During the interview, students can score up to 100 points. Each topic has its value in points.
+ Please see the details below. + +
+ `, 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', + }, + ], }, ], };