Frontend
Расскажите о своём последнем месте работы и проектах, которыми занимались.
/* Наше приложение-чат должно отображать новые сообщения, которые приходят с сервера. Сообщение имеет формат: interface Message { id: number text: string } Id самого первого сообщения = 1, а id каждого следующего сообщения на 1 больше, чем id предыдущего. Нам нужно выводить сообщения в правильном порядке, однако сервер не гарантирует правильный порядок сообщений, отправляемых в наше приложение. Таймлайн: // (приходит) [phone] // (рисуем) . 1 2 3 .. 4 5 6 7 8 Сообщения от сервера приходят в обработчик функции connect: connect((msg) => { ... }); Отображать сообщения нужно с помощью функции render: render(msg) */ function solution(connect, render) { connect((msg) => { render(msg); }); }
import React, { useState, useEffect, useRef, useContext, useReducer, useMemo } from 'react'; export default Effects = () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("each render 1")); console.log("each render 2"); useEffect(() => console.log("each render 3")); return ( <> <button onClick={() => setCount((prevProps) => ++prevProps)}> Increment </button> </> ) }
/** * Implement the function that will execute a callback with the data * and return an array of responses Response[]. * The solution should execute all requests in parallel * but no more than [limit] requests can be executed concurrently. * The goal is to minimize the total execution time. */ type Props<RequestData, Response> = { callback: (args: RequestData) => Promise<Response>; data: Array<RequestData>; limit: number; }; export async function runWithLimit<RequestData, Response>({ callback, data, limit, }: Props<RequestData, Response>): Promise<Response[]> { // START SOLUTION HERE if (limit < 1 || data.length === 0) { return Promise.resolve([]); } if (limit >= data.length) { return Promise.all(data.map(callback)); } const result: Response[] = new Array(data.length); let index = 0; const run = async () => { if (index >= data.length) return; const elem = data[index]; try { result[index] = await callback(elem); } catch (err) { result[index] = (err) as Response; // todo: handle error } index++; run(); }; const startPack = Array.from({ length: limit }, run); await Promise.all(startPack); return result; }
Какие способы скрыть элемент в CSS ты знаешь?
Расскажи немного про предыдущий опыт, чем занималась на прошлой работе. Какие-то интересные кейсы или какова роль в команде была?
Если ты увидела в уже готовом коде, который уже отдали, что-то явно плохое — как быть?
В чём проблема использования enum в TypeScript при компиляции в JavaScript? Чем можно заменить enum?
Зачем может понадобиться метод apply в решении runOnce?
Какие тесты писали, для чего, что тестировали?
В чём отличие FormGroup от FormArray?
Это был B2B или B2C сервис? Были ли метрики для отслеживания ошибок и пользовательского опыта?
Виртуальный скролл вы реализовывали самостоятельно или использовали библиотеку?
// а каждое значение — массивом, содержащим все элементы исходного массива с этим ключом. // code here // Пример 1 const array1 = [ { id: 1 }, { id: 1 }, { id: 2 } ]; const fn = (item) => item.id; console.log(array1.groupBy(fn)); // { // 1: [{ id: 1 }, { id: 1 }], // 2: [{ id: 2 }] // } // Пример 2 const array2 = [1, 2, 3]; console.log(array2.groupBy(String));
Как вы оцениваете себя: middle, middle+, senior?
Как тебе подходит наш формат работы? Насколько он привлекателен?
Что бы ты взял для сборки UI-кита с нуля?
Какие типы визуализаций были? Какие делал лично?
Какие плюсы и минусы кастомного UI-кита?
Из этих билетов можно построить единственный, неразрывный маршрут. Петлей и повторов в маршруте нет. Нужно написать программу, которая возвращает эти же объекты билетов в порядке следования по маршруту. ```javascript function getRoute(tickets = []) { const cities = new Map(); for (const ticket of tickets) { cities.set(ticket.from, ticket); } const result = []; let currentCity = startcity; while (cities.has(currentCity)) { const next = cities.get(currentCity); result.push(next); currentCity = next.to; } return result; } console.clear() console.log(getRoute([ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ])); ```