Last active
July 5, 2021 11:01
-
-
Save vanya2h/eabfac9ebe3298092498e6ae993774a7 to your computer and use it in GitHub Desktop.
This file contains hidden or 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. Что такое Promise. Как javascript engine справляется с асинхронным кодом, если он имеет всего один поток | |
2. Расскажите в чем смысл pub-sub pattern'а | |
3. Что такое наследование. Что за ключевые слова: extends, super, private, public, protected, this? | |
4. Как работать с сетевыми запросами в браузере? Какие апи существуют и какие лучшие практики? | |
5. Что делает ключевое слово const для объектов и для примитивных типов | |
6. Как можно оптимизировать приложение на react. Какие лучшие практики | |
Задачи: | |
1. Напишите функцию retry, | |
которая будет повторять попытки зарезолвить promise thunk, пока число попыток не привысит numOfRetry | |
В случае ошибки будет rejected promise с последней ошибкой | |
function retry<T>(numOfRetry: number, delay: number, action: () => Promise<T>): Promise<T> { | |
// @todo | |
} | |
2. Напишите функцию flatten, которая сможет обрабатывать вложенные массивы и превращать в один плоский массив | |
Пример: | |
[[1, 2], 3] => [1, 2, 3] | |
3. Доработайте решение 2 задачи таким образом, чтобы функция могла принимать бесконечно вложенные массивы | |
4. Напишите функцию memo, которая будет принимать функцию и возращать функцию, которая будет запоминать результаты выполнения и брать из кэша, если аргументы когда-либо повторялись. Алгоритм сравнения аргументов - shallow equal |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment