Sobes.tech

Frontend

Има ли въпроси за проекта, екипа или процесите на разработка?

Middle+
Банк Ренессанс
80

Дали `console.log` вътре във функция е страничен ефект?

Middle
Data World
80

Разкажи накратко за себе си, с какво се занимаваш, откъде си, защо си тук и всичко, което смяташ за важно.

Middle+
Додо пицца
80

Каква е разликата между useMemo и useCallback?

Middle
Лантан
80

Разкажи малко за себе си и за най-интересната техническа задача, която си решил според теб.

Middle+
Альфа-БанкАльфа-Банк
80

Как взаимодействахте с бекенда и други членове на екипа (аналитици, дизайнери, тестери)?

Senior
АЛМИ Партнер
80

Моля, разкажи ми за promises в JavaScript: какво представляват, за какво са, методи.

Middle
РСХБ-автоматизация
80

Кои модели за разработка използвате (DRY, SOLID, GRASP, дизайн модели)?

Middle
ОТП БанкОТП Банк
80

Какво е масив от зависимости в useEffect? Какво ще стане, ако предадете празен масив или изобщо не го предавате?

Middle+
VK Tech
80

Какви HTTP кодове се използват при работа с REST API?

Middle
Ростелеком
80

/* Какво ще се изведе в конзолата */ let value = 2; function showValue() { console.log(value); } function wrapper() { let value = 3; console.log(value); showValue(); } wrapper();

Middle+
М.Видео/эльдорадо
80

Какво правехте, когато потребителят загуби интернет?

Middle
Хьюнет
80

Как да организираме обмена на данни между два несвързани компонента?

Middle
КейСофт
80

Колко тясно работихте с Next.js? Какви функции използвате?

Middle
UserGate
80

Все още работите в компанията или вече я напуснахте?

Middle
NordClan
80

Как да реализираме търсене по valueChanges на полето за въвеждане с заявка към бекенда: кои RxJS оператори да използваме и защо?

Middle
СК Согласие
80

За какво е нужен мениджър на състоянието? Как се различава от React Context?

Middle
ОТП БанкОТП Банк
80

Какво е Временната зона на смъртта (TDZ)? Защо се появява и как да се справим с това?

Middle+
НСПК
80

import React, { useState, useEffect, useRef, useContext, useReducer, useMemo } from 'react'; const someFunc = (arr) => { return [...arr].sort((a, b) => a - b); }; const LazyInit = (props) => { const [arr, setArr] = useState(() => someFunc(props.arr)); const onClick = () => { setArr((prev) => prev.concat(prev.length + 1)) } return ( <> <button onClick={onClick}> Увеличи </button> <ul> {arr.map((n, index) => <li key={index}>{n}</li>)} </ul> </> ) } export default () => <LazyInit arr={[1, 2, 3]} />; --- Дясната страна обсъжда: - Използване на TypeScript с генерични типове: "<T extends object, K extends keyof T>" - Проверка дали данните са низ с помощта на типова защита: "isString(data: unknown): data is string { ... }" - Използване на useState с функция, за да се избегне повторното изпълнение при всеки рендер: ``` const [state, setState] = useState(getComplexData); // или const [state, setState] = useState(() => getComplexData()); ``` - Функцията, предадена на useState, ще се изпълни само веднъж при монтиране на компонента. - Предупреждение за директна мутация на състоянието на ред 11 с prev.concat. --- Техническата задача е да се анализира и евентуално да се поправи или оптимизира React компонентният код, като се фокусира върху: - Правилната ленивата инициализация на състоянието с useState. - Избягване на директна мутация на състоянието. - Разбиране на генериците на TypeScript и тип защитниците. - Осигуряване, че компонентът актуализира състоянието правилно при кликване на бутона.

Middle+
IT OneIT One
80

Разкажи за любимата си функция, с която се гордееш

Middle
WB Travel
80
/295