Frontend
Чем отличается any от unknown в TypeScript?
Для чего используется тип never?
Что такое batching в React?
Что такое reconciliation в React?
Зачем нужны ключи в React и почему они должны быть уникальными?
/* Что выведется в консоли */ async function f() { console.log(1); const promise = new Promise((resolve) => { console.log(2); setTimeout(() => { console.log(3); resolve("готово!"); console.log(4); }); }); console.log(5); const result = await promise; console.log(6); console.log(result); return "Result"; } f(); console.log(7);
/* Что выведется в консоли */ console.log(1); Promise.resolve().then(() => console.log(2)); setTimeout(() => console.log(3)); Promise.resolve().then(() => console.log(4)); console.log(5); setTimeout(() => { Promise.resolve().then(() => console.log(6)); console.log(7); Promise.resolve().then(() => console.log(8)); }, 0); setTimeout(() => console.log(9));
/* Что выведется в консоли */ const a = {}; const fn = (b) => { b.some = "1"; }; fn(a); console.log(a.some); // ?
/* Что выведется в консоли */ let value = 2; function showValue() { console.log(value); } function wrapper() { let value = 3; console.log(value); showValue(); } wrapper();
// Что выведется в консоли?
/* Напишите функцию get(obj, path), которая принимает объект obj и строку path, представляющую путь к значению в объекте. - Если путь существует, функция должна возвращать соответствующее значение - Если путь не существует, функция должна возвращать undefined - Путь передается в виде строки, разделенной точками(.) */ function get(obj, path) { } get({ a: { b: { c: "d" } } }, "a.b.c"); get({ a: { b: { c: "d" } } }, "a.b"); get({ x: { y: { z: 42 } } }, "x.c");
/ Напиши типизацию для функции getObjField / type Obj = { name: string age: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obj = { name: "Nik", age: 25 } const value1 = getObjField(user, "name") const value2 = getObjField(user, "age") const value3 = getObjField(user, "test")
/* Напишите тип MyReadonly - делает все поля только для чтения */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane" /* Напишите тип MyRequired — делает все опциональные поля обязательными */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 } /* Напишите тип MyPartial — делает все опциональные поля обязательными */ type User = { id: number name: string } type MyPartial<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }
Что такое замыкание и какую проблему оно может вызвать?
Работал ли ты с микрофронтендами? Можешь объяснить концепцию?
Как долго ты работаешь с TypeScript и для чего вообще TypeScript используют в проектах?
Работал ли ты с дженериками? Можешь объяснить общую концепцию?
Есть ли у тебя опыт с Next.js? Расскажи о своём опыте.
Если бы реализовали авторизацию через client-side rendering вместо SSR — что бы потеряли? Почему было принято решение использовать SSR?
Можешь объяснить разницу между методами рендеринга: SSR, SSG, CSR и ISR?