Frontend
Как у тебя дела с TypeScript? Есть тип Foo с полями a: string, b: number, c: null, d: boolean. Нужно сделать тип FooKeys на основе Foo, чтобы в нём были все ключи из Foo.
В каком порядке выведется console.log и почему? Объясни порядок выполнения синхронного и асинхронного кода (Event Loop, макро- и микрозадачи).
Чем ключевое слово type отличается от interface в TypeScript? Расскажи про наследование в типах и интерфейсах.
Какие есть способы обработать ошибку в Promise? Можно ли использовать конструкцию try/catch?
<div class="list"> <div class="item">1</div> <div class="item">2</div> ... <div class="item">N-1</div> <div class="item">N</div> </div>
Как сделать так, чтобы конструкция try/catch заработала с Promise? Как сделать Promise синхронным через async/await?
Как сделать так, чтобы функция с Generic принимала только строку или экземпляр класса Bar, а в остальных случаях выдавала ошибку TypeScript?
Как объявить новый тип на основе Foo, но без полей a и c, не используя Omit?
Есть функция foo, которая принимает аргументы типа any и возвращает их. Как сделать так, чтобы тип результата не был any, а соответствовал типу переданного аргумента? Используй Generic.
Как вы относитесь к изучению новых технологий?
Если вы найдёте технологию, которую считаете полезной для проекта, что вы будете делать?
С React Context работал? Можете объяснить концепцию, как это работает и в каких случаях его использование оправдано, а в каких лучше использовать State Management?
Какие методы конвертации строки в число знаешь?
Расскажи о своём опыте работы в [компания] и причине перерыва с марта по текущий момент.
Расскажи подробнее о проекте [компания]: стек, задачи, что делал?
function cloneDeep(something: Cloneable): Cloneable { /* * TODO: implement deep clone without JSON.parse/stringify */ return JSON.parse(JSON.stringify(something)); } function assertDeep(a: Cloneable, b: Cloneable) { if (JSON.stringify(a) !== JSON.stringify(b)) { console.error("Not OK"); } console.log("OK"); } const obj: Cloneable = { a: 1, b: true, c: "hello", d: { there: "are", some: ["properties"] }, e: {}, f: [(), (), { key: { value: [1, 2, "3", "four"] } }], g: [] }; assertDeep(obj, cloneDeep(obj));
Опишите, что происходит при нажатии на кнопку в React-компоненте со счётчиком: как работает useState, как React понимает, что нужно обновить именно эту часть DOM?
Расскажи про критические этапы рендеринга браузера
В какой момент вызывается useEffect и useLayoutEffect?
Что такое псевдомассив arguments? Чем отличается от обычного массива?