Last active
March 26, 2021 10:57
-
-
Save mqklin/48bca4809f37f4784ac428a40405cea2 to your computer and use it in GitHub Desktop.
Zerion test questions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1) Написать функцию, которая принимает на вход любое количество отрезков, заданных двумя координатами, и возвращает `true`, если любые 2 отрезка пересекаются, иначе возвращает `false`. Пример вызова: `f({x1: 1, x2: 10}, {x1: 11, x2: 123}, {x1: 122, x2: 124}, ...)` | |
2) Написать HOC, который будет менять `document.title` страницы при рендеринге компонента, который оборачиваем в HOC, и устанавливать старый `title` (который был до рендеринга) при unmount. Пример вызова: `@titlePage('Some new title')` | |
3) Написать функцию, принимающую на вход 2 числа `a` и `b`, и возвращающая `x = a/b`, при этом | |
a) в `x` после запятой может быть максимум 2 цифры | |
b) в `x` все нули после запятой должны быть убраны | |
Проверки (в том числе на то что `a` и `b` являются числами) делать не нужно. | |
Функция должна добавлять `$` в начало ответа. | |
Примеры вызова функции: | |
``` | |
f(1, 2); // $0.5 | |
f(1, 3); // $0.33 | |
f(200, 1); // $200 | |
``` | |
4) Написать класс, который | |
a) позволяет добавлять промис в массив | |
b) вызывать промисы из массива в порядке очереди, ожидая resolve от каждого и выводя его ответ (через console.log), с минимальной задержкой между вызовами в 3 секунды | |
Проверки (в том числе на catch) делать не нужно | |
Пример использования класса X: | |
``` | |
const x = new X(); | |
const p1 = new Promise(res => setTimeout(() => res('r1'), 1000)); | |
const p2 = new Promise(res => setTimeout(() => res('r2'), 5000)); | |
const p3 = new Promise(res => setTimeout(() => res('r3'), 0)); | |
x.push(p1); | |
x.push(p2); | |
x.push(p3); | |
``` | |
Код должен вывести `r1` через одну секунду, затем `r2` через 4 секунды, затем `r3` через 3 секунды. | |
5) Написать функцию, которая превращает массив в объект, используя четный элемент массива в качестве ключа, а следующий нечетный элемент как значение. Цикл `for` использовать нельзя. Пример вызова функции: `f([1, 2, 'a', 3, 'b', 'c]); // {1: 2, a: 3, b: 'c'}` | |
6) Написать обратную функцию для функции из 5. Цикл `for` использовать нельзя. Пример вызова функции: `f({1: 2, a: 3, b: 'c'}); // [1, 2, 'a', 3, 'b', 'c]` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment