React Frontend | YeaHub – Telegram
React Frontend | YeaHub
3.37K subscribers
308 photos
4 videos
1 file
530 links
Теория, подготовка к интервью и курсы для React разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#NextJS
🚩 Почему обычный <noscript> тег не работает для критичных скриптов?

В Next.js для добавления скриптов, которые должны выполняться до рендера, используется компонент Script с атрибутом strategy. Обычные noscript теги в React не гарантируют порядок выполнения и могут блокировать рендеринг. Next.js Script оптимизирует загрузку скриптов и даёт контроль над их выполнением.


// Плохо - обычный noscript тег
export default function Page() {
return (
<div>
<noscript src="/analytics.js"></noscript>
{/* React игнорирует это, нет контроля над загрузкой */}
</div>
);
}

// Хорошо - Next.js Script компонент
import Script from 'next/noscript';

export default function Page() {
return (
<>
{/* beforeInteractive - выполняется ДО гидратации */}
<Script
src="/critical-noscript.js"
strategy="beforeInteractive"
/>

{/* afterInteractive - после гидратации (по умолчанию) */}
<Script
src="/analytics.js"
strategy="afterInteractive"
/>

{/* lazyOnload - когда браузер свободен */}
<Script
src="/chat-widget.js"
strategy="lazyOnload"
/>
</>
);
}



📎 Стратегии загрузки Script:

🟣 beforeInteractive — скрипт загружается и выполняется ДО гидратации React
🟣 afterInteractive — выполняется после гидратации (по умолчанию)
🟣 lazyOnload — загружается когда браузер простаивает
🟣 worker — выполняется в Web Worker (экспериментально)

beforeInteractive используется только в _document.js для критичных скриптов, которые нужны до интерактивности страницы. Это полифиллы, A/B тестирование, определение темы. Скрипт внедряется в HTML до любого Next.js кода и гарантированно выполняется первым.

afterInteractive (по умолчанию) подходит для большинства скриптов: аналитика, реклама, пиксели отслеживания. Они загружаются после того как страница стала интерактивной, не блокируя первоначальный рендеринг.

Правильный подход:
- Используйте beforeInteractive только в _document.js для критичных скриптов
- afterInteractive для аналитики и сторонних сервисов
- lazyOnload для некритичных виджетов (чаты, соцсети)
- Inline скрипты через dangerouslySetInnerHTML внутри Script

Избегайте:
- Обычных <noscript> тегов в компонентах React
- beforeInteractive в обычных страницах (только _document.js)
- Блокирующих скриптов без strategy
- Загрузки тяжёлых скриптов синхронно

Next.js Script оптимизирует производительность автоматически!


🔎🔎🔎🔎🔄

#⃣Вопрос

#⃣Новости

#⃣База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍2
#Собес #ооп #solid #event_loop

🤔 Middle+ Frontend Разработчик в ivi

Техническое собеседование. Дали оффер: 280к net. Ноябрь 2024. Офис. Проект: стриминговая платформа. Опыт в резюме: 4 года. Много вопросов про опыт, проекты и процессы. Копали в глубину. Так же спрашивали про ООП, SOLID, как применяю в проектах

💬 Вопросы:

- Можно ли из Web Worker'а напрямую отрендерить React-компонент (или компонент другого фреймворка) в DOM?

- Какие есть способы вынести тяжелые вычисления из основного потока, чтобы не блокировать интерфейс?

- Блокирует ли тяжелый код в Promise рендер страницы?

- Как работает асинхронность в JS?

- Какие основные структуры данных существуют в программировании?

👉 Все вопросы из этого собеседования (8)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
👍52
#trainer #курсы #тренажеры
📚 CodeChef

Онлайн-платформа программирования, которая позволяет учащимся осваивать программирование с помощью структурированных курсов, тысяч практических задач и регулярных конкурсов

Перейти к материалу

👉 База вопросов 👉 Новости
1
#Собес #context
🤔 Как создать глобальное состояние с помощью Context API?

💬 Кратко:

Context API — это способ передачи данных через дерево компонентов без необходимости передавать их через пропсы на каждом уровне. Для создания глобального состояния вы создаете контекст с помощью React.createContext(), оборачиваете ваши компоненты в провайдер, а затем используете useContext для доступа к данным в любом дочернем компоненте.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Platform — реальный проект для прокачки фронтенда!

Это не демо и не учебный «туду-лист», а полноценная платформа с продуманной архитектурой и современным стеком: React, TypeScript, Redux Toolkit, React Hook Form, FSD.

Можно изучить каждую страницу, каждый компонент, посмотреть, как устроен код в боевом проекте, и забрать себе лучшие практики!

Оставляю ссылочку: GitHub 📱


➡️ Books Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113
#Собес #clone #deepcopy
🤔 Как выполнить глубокое копирование объекта?

💬 Кратко:

Для глубокого копирования объектов используйте JSON.parse(JSON.stringify(obj)) для простых объектов, structuredClone() для современных браузеров, или библиотеки типа Lodash _.cloneDeep(). Ручная рекурсивная функция также подходит для сложных случаев. Каждый метод имеет свои ограничения и особенности.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1👍1
#React
🚩 Почему в JavaScript файлах можно писать HTML-подобный код?

JSX (JavaScript XML) — это синтаксическое расширение JavaScript, которое позволяет писать HTML-подобную разметку внутри JavaScript кода. JSX не является валидным JavaScript и компилируется в обычные вызовы функций React.createElement(). Это делает код компонентов более читаемым и интуитивным.

// Плохо - React.createElement (так работает под капотом)
function Button() {
return React.createElement(
'button',
{ className: 'btn', onClick: handleClick },
React.createElement('span', null, 'Click me'),
React.createElement('span', null, '👆')
);
}

// Хорошо - JSX (компилируется в код выше)
function Button() {
return (
<button className="btn" onClick={handleClick}>
<span>Click me</span>
<span>👆</span>
</button>
);
}


📎 Ключевые особенности JSX:

🟣 JSX компилируется в React.createElement() вызовы
🟣 Можно использовать JavaScript выражения в фигурных скобках {}
🟣 HTML атрибуты пишутся в camelCase (className, onClick)
🟣 JSX элементы могут быть присвоены переменным и возвращены из функций

JSX не является обязательным для React, но делает код значительно читаемее. Вместо вложенных вызовов функций вы видите привычную HTML-подобную структуру. Babel или другой транспайлер преобразует JSX в JavaScript до запуска кода.

В JSX можно вставлять любые JavaScript выражения внутри фигурных скобок: переменные, вызовы функций, тернарные операторы, map для списков. Это позволяет создавать динамические компоненты с условной логикой прямо в разметке.

Правильный подход:
- Используйте JSX для всех React компонентов
- Оборачивайте многострочный JSX в круглые скобки ()
- Используйте {} для JavaScript выражений внутри JSX
- Помните что JSX возвращает один корневой элемент (или Fragment)

Избегайте:
- Использования class вместо className
- Забывать закрывать теги (все теги должны быть закрыты)
- Вставлять JavaScript statements (if, for) напрямую в JSX
- Возвращать несколько корневых элементов без обёртки

JSX делает React код похожим на HTML, но это JavaScript!


🔎🔎🔎🔎🔄

#⃣Вопрос

#⃣Новости

#⃣База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62👎1🏆1
#Собес #react #sollid #microfrontend

🤔 Middle Frontend разработчик в компанию X5

Техническое собеседование. Лето 2025. Опыт: 4.3 года. Вилка: 200к+. Проект: проектирование биржевого терминала/аналитической платформы. В конце был лайвкодинг.

💬 Вопросы:

- Как обеспечить изоляцию зависимостей?

- Как управлять версионностью зависимостей (например, React) между микрофронтами?

- Какие проблемы возникают в микрофронтенд-архитектуре?

- Как спроектировать структуру приложения с учётом SOLID?

- Как интерпретировать принцип замены Лисков (L в SOLID) во фронтенде (на примере React)?

👉 Все вопросы из этого собеседования (21)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
4
#Собес #build #pipeline #automation
🤔 Что такое build pipeline?

💬 Кратко:

Build pipeline — это набор автоматизированных шагов, через которые проходит код перед развертыванием. Он включает сборку, тестирование и подготовку к развертыванию, гарантируя, что только рабочий код попадёт в продакшн

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍4👎1
#tool #гит
📚 Хочешь изучить Git, не рискуя своей локальной установкой?

Теперь можно запускать команды Git прямо из браузера , с пошаговым объяснением, что делает каждая команда.

Перейти к материалу

👉 База вопросов 👉 Новости
5👍2
#Собес #javanoscript #dom #events
🤔 Как подписаться на событие клика кнопки в DOM?

💬 Кратко:

Используйте метод addEventListener для подписки на событие click:
document.querySelector('button').addEventListener('click', () => {
console.log('Кнопка нажата!');
});


📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥2👍1👎1
#React

🚩 Почему ваш компонент не видит обновления Props?

Props — это read-only канал от родителя к ребёнку. Главное: вы не можете их менять. Попытка мутировать Props приведёт к тому, что обновления не произойдут.

// Плохо - Props read-only
function UserCard(props) {
props.name = "Bob"; // Не сработает!
return <h1>{props.name}</h1>;
}

// Хорошо - Используйте callback
function UserCard({ name, onNameChange }) {
return (
<>
<h1>{name}</h1>
<button onClick={() => onNameChange("Bob")}>Change</button>
</>
);
}


📎 Основные проблемы:

🟣 Props read-only, но разработчики их мутируют
🟣 Передача всего объекта вместо деструктуризации
🟣 Забывают про dependency в useEffect при изменении props

Props — это контракт: родитель передаёт данные, ребёнок их использует, но не меняет. Если нужно обновить — вызови callback.

Пример:

function Button({ label = "Click", onClick }) {
return <button onClick={onClick}>{label}</button>;
}

function Shop() {
const [cart, setCart] = React.useState([]);
const products = [{ id: 1, name: "Laptop", price: 1000 }];

return (
<div>
{products.map(p => (
<Button key={p.id} label="Add" onClick={() => setCart([...cart, p.name])} />
))}
<p>Cart: {cart.length}</p>
</div>
);
}


Props для:
- Передачи данных сверху вниз
- Callback функций для событий
- Конфигурации компонента
- Переиспользуемых компонентов

Не делайте:
- Мутацию Props
- Props drilling (5+ уровней)
- Передачу целого объекта

Props — основа React!


🔎🔎🔎🔎🔄

#⃣Вопрос

#⃣Новости

#⃣База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71👎1🔥1
#Собес #typenoscript #javanoscript #object

🤔 Middle Frontend разработчик в компанию Ай-Теко

Техсобес. ЗП: от 200к. Май 2025. Проект: Сбер. Опыт: 4 года. Задачи: Отсортировать список нечетных чисел, Валидность скобок.

💬 Вопросы:

- Какие есть способы создания объектов и в чем их отличия?

- Что такое Promise?

- Как отменить fetch-запрос?

- Что такое цикл событий (event loop) и как он работает?

- Расскажите про все методы Promise?

👉 Все вопросы из этого собеседования (14)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
👎21
#Собес #authentication #password #biometrics
🤔 Назовите три метода аутентификации пользователя.

💬 Кратко:

Три метода аутентификации — это биометрия (например, отпечаток пальца), токен (электронное устройство или карта) и пароль. Для повышения безопасности можно использовать двухфакторную аутентификацию, комбинируя два из этих методов.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👎3👍1
#trainer #тесты
📚 Тесты для проверки своих знаний по React

Отличная специализированная образовательная платформа, посвященная тестированию знаний в области фронтенд-разработки, с особым акцентом на библиотеку React.

Перейти к материалу

👉 База вопросов 👉 Новости
🔥9👎21👍1
#Собес #react #keys #реакт
🤔 Как использовать keys?

💬 Кратко:

Keys — это уникальные идентификаторы, которые React использует для того, чтобы отслеживать элементы при рендеринге списков. Они помогают React эффективно обновлять только те элементы, которые изменились, а не перерендеривать весь список. Ключи должны быть уникальными среди соседних элементов.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍71
#React #JavaScript
🚩 Почему props drilling разрушает вашу архитектуру React?

Redux — это предсказуемый контейнер состояния для JavaScript-приложений. Вместо передачи данных через множество слоёв компонентов (prop drilling), Redux хранит всё состояние в одном центральном месте, и любой компонент может получить нужные данные напрямую.

Блок "Проблема/Решение":
// Плохо: props drilling - передача через 5+ компонентов
<App user={user}>
<Header user={user}>
<Nav user={user}>
<Profile user={user} />
</Nav>
</Header>
</App>

// Хорошо: Redux - компонент берёт данные напрямую из store
import { useSelector } from 'react-redux';

function Profile() {
const user = useSelector(state => state.user);
return <div>{user.name}</div>;
}



📎 Основные проблемы без Redux:

🟣 Props drilling — данные передаются через десятки компонентов
🟣 Состояние разбросано по всем компонентам — сложно отследить изменения
🟣 Один компонент обновляется — перерисовывается всё дерево
🟣 Сложная отладка — откуда пришли данные в компонент?


🔴Как работает Redux?

Store — одно центральное хранилище состояния всего приложения. Это единственный источник правды.

Action — простой объект, описывающий, что произошло: { type: 'ADD_TODO', payload: 'Купить молоко' }.

Reducer — чистая функция, принимающая старое состояние и action, возвращающая новое состояние: (state, action) => newState.

Dispatch — отправляет action в reducer: dispatch({ type: 'ADD_TODO' }).

Поток данных: User Action → Dispatch → Reducer → New State → UI Update.

// Пример: счётчик
const initialState = { count: 0 };

function counterReducer(state = initialState, action) {
switch(action.type) {
case 'INCREMENT':
return { count: state.count + 1 };
case 'DECREMENT':
return { count: state.count - 1 };
default:
return state;
}
}

// В компоненте
function Counter() {
const count = useSelector(state => state.count);
const dispatch = useDispatch();

return (
<div>
<p>{count}</p>
<button onClick={() => dispatch({ type: 'INCREMENT' })}>+</button>
</div>
);
}


Правильное решение:
- Используйте Redux для сложных приложений с множеством общего состояния
- Применяйте Redux Toolkit для упрощения кода (createSlice вместо reducers)
- Разделяйте состояние на логические слайсы (auth, products, cart)
- Используйте useSelector для получения данных и useDispatch для отправки actions
- Оборачивайте приложение в <Provider store={store}>


Чего избегать:
- Не используйте Redux для простых приложений (используйте useState)
- Не мутируйте состояние напрямую — reducers должны быть чистыми функциями
- Не складывайте в Redux всё подряд — только глобальное состояние
- Не забывайте про мемоизацию селекторов для оптимизации

Когда использовать Redux: большое приложение (100+ компонентов), часто меняющееся состояние, несколько разработчиков, нужна хорошая отладка. 60% React-приложений используют Redux!


🔎🔎🔎🔎🔄

#⃣Вопрос

#⃣Новости

#⃣База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥41
#Собес #react #flux #typenoscript

🤔 Middle Frontend разработчик в компанию amoCRM.

Техническое собеседование. Зарплатная вилка: до 200к. Весна 2025. Опыт в резюме: 4 года. Офис. Спрашивали по опыту много вопросов. Был лайвкодинг

💬 Вопросы:

- Можно ли рандомные key в React задать?

- Как правильно использовать useEffect для различных ситуаций?

- Как использовать keys?

- Что такое React и какие ключевые особенности он имеет?

- Что такое utility types в TypeScript?

👉 Все вопросы из этого собеседования (7)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
👍51
#Собес #github
🤔 Что такое Git и GitHub?

💬 Кратко:

Git — это система контроля версий, которая позволяет отслеживать изменения в коде, возвращаться к старым версиям и работать над проектом совместно с другими разработчиками. GitHub — это платформа, где можно хранить код в облаке, делиться им и управлять проектами с помощью Git. Вместе они помогают эффективно работать над проектом в команде.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍61
#course #тесты #тренажер
📚 JavaScript Тесты

Курс предназначен для проверки знаний JavaScript и подготовки к собеседованиям на позицию JavaScript-разработчиков!

Перейти к материалу

👉 База вопросов 👉 Новости
👍2
Forwarded from YeaHub
[Версия 1.2.1] - Обновление платформы

Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и долгожданные улучшения 👇

🔹 Аналитика платформы
Нам важно понимать, какие вопросы вызывают наибольшие сложности у тех, кто готовится к собеседованиям, поэтому мы начали собирать расширенную статистику.
Какой вопрос самый сложный в нашем тренажёре? Какие навыки наиболее востребованы? Какие темы чаще всего встречаются на реальных собеседованиях? И многое другое — всё это теперь доступно благодаря обновлённой аналитике. Аналитика (после авторизации)

🔹 Обучение и менторы
Вы должны знать героев, которые помогают делать платформу лучше. Это менторы, которые вместе со своими учениками развивают YeaHub, давая бесценный опыт работы над реальным продуктом.
А также крутые эксперты, которые повышают качество контента и помогают нам расти. Все менторы

🔹 Записи собеседований
Мы расширяем партнёрства! Нам важно собрать всё самое полезное в одном месте.
Теперь у нашего партнёра с закрытым чатом собеседований появился отдельный информативный лендинг — удобно, структурировано и всегда под рукой. Записи собесов

🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠

🔥 Скоро
1. Парсер навыков и ключевых слов с HH
2. Сервис Лайвкодинга с реальными задачами с собеседований

👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru

#release #news #update #yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41