Руслан Куянец | Reactify
6.42K subscribers
732 photos
53 videos
39 files
308 links
Я IT-специалист, ментор и основатель проекта YeaHub и сообщества Reactify. Здесь рассказываю про Frontend и IT.

Менторство:
https://reactify.ru

YouTube канал:
https://youtube.com/@reactify-it

YeaHub:
https://yeahub.ru/

Связь:
@ruslan_kuyanets
Download Telegram
🥇 Самые популярные темы на собеседованиях

Каждую неделю мы добавляем новые собеседования для фронтенд-разработчиков. У нас хорошо выстроен процесс: ИИ анализирует видео, преобразует речь в текст, а затем выделяет технические вопросы и ключевую информацию с интервью. Этим занимается отдельный контент-специалист.

На скрине — топ самых частых вопросов. Интересно, что по сравнению с тем, каким топ был в самих видео, он сильно изменился.

На собеседованиях по-прежнему чаще всего спрашивают React и JavaScript. Особенно много вопросов про внутренние механизмы языка: this, Event Loop и другие базовые концепции.

Но здесь важно смотреть именно на темы, а не только на конкретные вопросы. Когда мы добавляем собеседования в Yeahub, то помимо оригинальных вопросов включаем похожие и дополнительные — чтобы максимально покрыть тему и помочь пользователям готовиться комплексно. Плюс на реальных собеседованиях часто задают наводящие вопросы.

Полный топ можно посмотреть здесь:
https://app.yeahub.ru/analytics/popular-questions?page=1&specialization=11

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥4💯2
🤓 Идеальный кандидат в 2026 году

Мир меняется быстро. IT меняется, рынок меняется — все меняется. Какие-то навыки становятся обязательными, а какие-то наоборот теряют ценность.

Если вернуться на 6 лет назад, то React и другие фреймворки вообще не были мастхэвом. Можно было спокойно найти работу, зная просто JavaScript.

4 года назад React уже стал практически обязательным, а TypeScript чаще встречался как «будет плюсом».

3 года назад все еще можно было относительно легко устроиться джуном: выучил фреймворк, сделал пару пет-проектов — и вперед.

В 2024 году джуном устроиться стало уже заметно сложнее. Началась эпоха накрутки опыта: многие рисовали себе 1–2 года и спокойно получали собесы.

В 2025 году джунам стало почти невозможно найти работу. Офферы чаще получали люди с «3 годами опыта» и хоть какой-то компанией в резюме.

К концу 2025 даже это перестало работать. Теперь минимум:
— 4 года опыта
— известные компании в резюме
— понимание архитектуры, инфраструктуры и всего вокруг разработки

Наступил 2026 год.

Что сейчас происходит на рынке? Кто вообще находит работу?

Конкуренция огромная. Выбирать работодателю есть из кого.

Даже если тебе удалось попасть на собес с 3 годами опыта в аутсорсе, скорее всего найдется кандидат с 4 годами опыта и условным Газпромом в резюме.

И даже если ты лучше прошел собес — возьмут, вероятнее всего, его. Просто из-за бренда компании в резюме.

Справедливо ли это? Нет.
Нужно ли из-за этого лежать и плакать в подушку? Решать тебе 😁

Давайте так: я просто распишу «идеального кандидата 2026», а дальше уже сами думайте, как таким стать 🙃

Сын маминой подруги 2026:

1. У него 5 лет опыта во фронтенде
2. В резюме — хорошие продуктовые компании (Газпром, ВТБ, Сбер, Островок и т.д.)
3. Минимум 2 места работы, и на каждом он проработал больше года (условно 4+1 или 2+3)
4. Он живет в Москве. Ну или хотя бы пишет это в резюме 😁
5. Готов к переезду и любому формату работы
6. Английский минимум B2
7. Богатый опыт во фронте: от обычной разработки до рефакторинга, проектирования и архитектуры
8. Работал буквально со всем из вакансий: Next.js, Docker, микрофронты и далее по списку
9. Есть высшее техническое образование
10. Умеет хорошо продавать свой опыт: рассказывает про кейсы, конфликты, достижения, импакт на бизнес
11. Хорошая техничка: «работал со всем, знает все», а хобби — читать спецификацию JS 😁

И это только часть того, что сейчас нужно, чтобы тебя хотя бы стабильно звали на собесы.

Плюс еще:
— ATS
— HR-фильтры
— софт-скиллы
— умение проходить интервью
— самопрезентация
— рынок
— конкуренция

На таком рынке я вообще не понимаю, как джуну пробиваться.

Потому что сейчас даже опытные ребята с 3–4 годами опыта, но без известных компаний и громких достижений, вынуждены идти на джун+ позиции.

Опытные специалисты буквально вытесняют джунов.

И работодателя тоже можно понять.

Зачем открывать джун-вакансию на 100k, если можно открыть мидл-вакансию на 120k — и получить сильного специалиста за небольшую доплату?

Сейчас это рынок работодателя.

А теперь к главному вопросу: как стать идеальным кандидатом?

Тут есть варианты:

1. Вернуться в прошлое, поступить в технический вуз и отработать 5 лет в бигтехе
2. Просто стать...

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
😢217🔥5💯2
🤖 Внедрение изменений, или как AI становится частью всего

Я прошёл заключительный блок в Стратоплане — про темы, которые для меня оказались и интересными, и одновременно довольно непростыми: построение и оптимизация бизнес-процессов, метрики и KPI + AI, управление качеством, закупками, рисками + AI, а также внедрение изменений.

Курс COO, который я проходил: https://stratoplan-school.com/coo/

Если честно, изначально я вообще не особо понимал, как работают KPI и метрики, как их считать и что за ними стоит. Да и в целом бизнес-процессы, финансы и вся эта «системная кухня» были для меня довольно дремучим лесом. Это уже вещи, которые сложнее пощупать на практике. Но формат курса с групповой работой и разбором сильно помог всё это немного разложить по полочкам. Плюс было интересно слушать кейсы руководителей крупных компаний о том, как они реально работают с метриками.

Я, в свою очередь, тоже поделился своим опытом — как мы в YeaHub внедряли Scrum в три захода 😁. Это как раз было в рамках групповой работы на модуле про внедрение изменений.

И как вы, наверное, заметили по названиям модулей, на протяжении всего курса нас активно учили внедрять AI в разные процессы. Были и мастер-классы, и воркшопы. Нас учили делать себе AI-помощника, использовать AI для расчёта финансов, метрик и многого другого. В общем, старались идти в ногу со временем.

В целом модули мне понравились. Даже немного не верится, что теперь пятницы будут проходить без обучения 😁. С января по май у нас каждую пятницу были трёхчасовые занятия с практикой, и это стало привычным ритмом.

Теперь впереди лето — планирую больше времени проводить на верандах и в более лёгком режиме, а всё, что узнал, уже применять в YeaHub.

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5🔥3💯1
💼 Тех. собеседование в Альфа-Банк.

Было достаточно сложное и глубокое — много копали именно в понимание того, как всё работает под капотом. Собеседование свежее, май. Вилка 250-300к

Что спрашивали:

1️⃣ Опыт и проекты
— Рассказать о себе
— Самая интересная техническая задача

2️⃣ WebSocket / авторизация / security
— Безопасность WebSocket
— Как понять, что пользователь авторизован в REST
— Как передавать авторизацию в WebSocket
— Можно ли передать Authorization header из браузера
— Альтернативы: cookie / query params / первое сообщение после подключения

3️⃣ Архитектура / FSD
— Что именно строил с нуля
— Мнение про FSD
— Что не понравилось в подходе
— Какие были проблемы при внедрении
— Как онбордили разработчиков

4️⃣ HTML / CSS
— Как центрировать квадрат
— display: none vs visibility: hidden
— Flex vs Grid
— Когда что использовать

5️⃣ HTTP / Browser lifecycle
— Из чего состоит HTTP-запрос
— Method / URL / headers / cookies / body
— Что приходит в response
— Что происходит после ввода URL в браузере
— На каком этапе появляются headers/cookies/body

6️⃣ Frontend Security
Тут прям очень глубоко копали.
— CSP
— CORS
— Запрет запросов на нежелательные домены
— CSP directives
— hash / nonce / SRI
— Клиентские уязвимости и методы защиты

7️⃣ Event Emitter
— Как работает Event Emitter

8️⃣ Event Loop
— Как работает Event Loop
— Microtask starvation
— Call Stack / Browser APIs / Microtasks / Macrotasks

9️⃣ TypeScript / Runtime
— Как работает instanceof
— Почему interface нельзя проверить в runtime
— Разница между type/interface и class/object
— Вопросы на понимание runtime-проверок

Собеседование понравилось — очень много вопросов на фундаментал и реальное понимание браузера и JS runtime.

Кто ответил бы на все вопросы и забрал себе оффер? 😁

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥5👍3😢1🤝1
И вот такие задачи были на собесе 👀

1️⃣ EventEmitter

Задача: реализовать EventEmitter с подпиской, отпиской и вызовом событий.
class EventEmitter {
constructor() {}

subscribe(event, callback) {
this.events[event].push(callback);
}

unsubscribe(event, callback) {
this.events[event] =
this.events[event].filter(cb => cb !== callback);
}

fire(event, payload) {
this.events[event].forEach(callback => callback(payload));
}
}

const eventEmitter = new EventEmitter();

const callback = (payload) =>
console.log(`Callback catch event "test" with payload: ${JSON.stringify(payload)}`);


2️⃣ JavaScript Event Loop

Задача: определить порядок вывода в консоль + объяснить Event Loop.
console.log('start');

setTimeout(() => console.log('timeout'), 0);

new Promise((resolve, reject) => {
console.log('promise');
reject();
})
.then(() => console.log('promise'))
.catch(() => console.log('promise1'))
.catch(() => console.log('promise2'))
.then(() => console.log('promise3'))
.then(() => console.log('promise4'));

console.log('final');


3️⃣ TypeScript / Runtime

Задача: объяснить поведение instanceof и различия runtime vs compile-time.
interface User {}

class AdminUser implements User {
name: string;
role: string;

constructor(name: string) {
this.name = name;
this.role = "admin";
}
}

function checkGrants(user: User): boolean {
return user instanceof AdminUser;
}

const adminUser2: AdminUser = {
name: "admin",
role: "admin",
};

console.log(checkGrants(new AdminUser("admin"))); // true
console.log(checkGrants(adminUser2)); // false


4️⃣ React Refactoring

Задача: провести рефакторинг компонента интернет-магазина.
export default function App() {
const [query, setQuery] = useState("");

const [products, setProducts] = useState([]);
const [filtered, setFiltered] = useState<Product[]>([]);

const [cartCount, setCartCount] = useState(0);
const [cartSum, setSumCount] = useState(0);

const onAdd = useCallback((p: Product) => {
setCartCount(cartCount + 1);
setSumCount(cartSum + p.price);
}, []);

const clear = () => {
setCartCount(0);
setSumCount(0);
};

useEffect(() => {
fetchProducts(query).then((res) => {
setProducts(res.items);
});
}, [query]);

useEffect(() => {
setFiltered(products.filter((p) => p.price >= 0));
}, [products]);

return (
<div>
<div style={{ fontFamily: "sans-serif", maxWidth: 720, margin: "20px auto" }}>
<h2>Shop</h2>

<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<input
value={query}
onChange={(e) => setQuery(e.target.value)}
placeholder="Search..."
/>

<span>Cart: {cartCount}</span>
<span>Sum: ${cartSum}</span>

<div
style={{ backgroundColor: "#808080", padding: "8px" }}
onClick={() => clear()}
>
Clear
</div>
</div>

<div style={{ marginTop: 12, border: "1px solid #eee", borderRadius: 8 }}>
{filtered.map((product) => (
<>
<div style={{ display: "flex", justifyContent: "space-between" }}>
<div>
<b>{product.name}</b>
<div style={{ fontSize: 12, opacity: 0.7 }}>
${product.price}
</div>
</div>

<div style={{ display: "flex" }}>
<div
style={{ backgroundColor: "#808080", padding: "8px" }}
onClick={() => onAdd(product)}
>
Add
</div>
</div>
</div>

<hr />
</>
))}
</div>

<h6>Copyrite and footer</h6>
</div>
</div>
);
}
👍13🔥102😢2🤝2
👩‍💻 Инфраструктура проектов на примере YeaHub

Знаете, всегда интересно развиваться и выходить за рамки своей специализации. Когда я еще работал разрабом, я активно изучал бекенд и базы данных, писал свои пет-проекты, рефакторил и дописывал бекенд на работе (кстати, вот об этом пост).

Миграция бекенда и масштабный рефакторинг

Но когда я начал разрабатывать свой первый стартап App-Salute (об этом тоже пост), то уперся в то, что умею писать фронт и бэк, но как публиковать реальные прод-приложения — вообще не понимал.

Мой первый стартап — сервис онлайн-записи App-Salute

Я потратил уйму времени, чтобы создать инфраструктуру и настроить деплой. Это было тяжело, но методом проб и ошибок я справился, и была зарелизена первая версия стартапа: nginx, pm2 — все было простенько, без Docker и прочего. Обновлял приложение вручную: заходил через терминал на сервер, все обновлял и перезапускал.

Спустя 6 месяцев я полностью переписал App-Salute на более современный стек — уже с Docker и GitHub Actions. Через docker-compose организовал сервисы, поднял БД, настроил nginx с SSL-сертификатами. Все запускалось одной командой. Параллельно настроил CI/CD: смерджил ветку в develop — автоматически публиковалась тестовая версия, смерджил в main — уходило в прод.

Эти знания я применил и в YeaHub. Спустя время понял, что хочу глубже разобраться с Kubernetes и GitOps-подходом. Да, для стартапа это местами оверкилл, но мне хотелось закрыть этот пробел в знаниях. Плюс — чтобы ученики стажировались уже на взрослой инфраструктуре, как это чаще всего устроено в крупных продуктовых компаниях.

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

Стажировка в YeaHub глазами новичка

Что у нас есть в YeaHub?

У каждого проекта есть Dockerfile, в котором описана сборка и запуск приложения, а также GitHub Actions workflow для CI/CD.

Pipeline устроен примерно так:

— собираем Docker image,
— отправляем его в registry,
— обновляем image tag в GitOps-репозитории,
— ArgoCD видит изменения и синхронизирует Kubernetes-кластер с новым состоянием.

Kubernetes-конфигурация описана через Helm chart’ы.

Для релизов используем release-ветки. Настроены dev и prod стенды. Дополнительно экспериментировали с preview environments — автоматически поднимали отдельный стенд под feature-ветки с уникальным поддоменом. Но так как у нас стажировка и одновременно создается очень много веток, по ресурсам это оказалось дороговато, поэтому от идеи отказались.

Также есть тесты, husky, линтеры и прочие automated checks. В итоге получился полноценный production-like CI/CD и release flow.

YeaHub переехал на новую инфраструктуру

На картинках — схемы из митапа: как устроен Kubernetes и инфраструктура YeaHub.

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍2🔥2🤝1
🏆 Что ждут компании от кандидата. АТС-фильтрация кандидатов

В YeaHub планировали выпустить сервис по ATS-оптимизации резюме ещё к июню, но сроки затянулись. Очень много времени ушло на работу над промптами для ИИ и алгоритмом мэтчинга. В итоге только сейчас добиваем финальную часть сервиса.

В чём суть? Мы создаём профили вакансий, делаем выборки, собираем портрет рынка. Например, по фронтенд-разработке можно понять, чего именно ждут компании. Не просто набор ключевых слов или список навыков, а полноценный портрет кандидата и ожидания работодателей.

Получается вроде неплохо, но впереди ещё очень много тестов и сожжённых токенов. Я долго ковырял алгоритм: десятки раз менял всё кардинально, потому что постоянно что-то не нравилось. Но, кажется, наконец пришёл к рабочему варианту.

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

1. Оптимизировать производительность — такая формулировка встречается очень часто, примерно в 20% вакансий.

2. Разрабатывать интерфейсы и приложения — здесь много разных формулировок и синонимов, но в сумме это около 40% вакансий.

3. Внедрять новые технологии и практики — примерно 25% компаний ожидают, что разработчик будет активно предлагать и внедрять улучшения.

4. Проводить код-ревью — встречается в разных вариациях, но если объединить все формулировки, получается около 38% вакансий.

5. Проектировать архитектуру — около 18% работодателей хотят, чтобы сотрудник занимался архитектурой решений, микрофронтендами и связанными задачами.

6. Оптимизировать приложение и процессы разработки — различные формулировки этой задачи встречаются примерно в 24% вакансий.

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

8. Писать тесты — от unit-тестов до полного покрытия приложения тестами. Встречается примерно в 35% вакансий.

Наверное, это основные обязанности и задачи, которые сейчас чаще всего встречаются на рынке.

Как вы поняли, чтобы лучше проходить ATS-фильтры, желательно показывать подобные достижения и опыт в резюме. Если таких формулировок и результатов нет, система может посчитать кандидата менее релевантным и опустить его ниже в выдаче среди других соискателей.

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍4🔥2😁1
💼 Как устроен C-level в IT-компаниях

Когда говорят про карьерный рост в IT, обычно обсуждают путь от Junior до Team Lead или Head of Department. Но чем выше уровень компании, тем чаще появляются загадочные аббревиатуры: CEO, COO, CTO, CFO, CPO.

Пока я проходил обучение операционному управлению на курсе COO в "Стратоплане" (https://stratoplan-school.com/coo/), у меня постепенно сложилась более цельная картинка того, как устроен C-level в IT-компаниях и как между собой связаны роли руководителей.

Упрощенно это выглядит так:
- CEO — определяет направление развития бизнеса и отвечает за результат компании в целом.
- COO — превращает стратегию в работающую систему. Если CEO отвечает на вопрос «куда идем», то COO отвечает на вопрос «как именно туда придем».
- CTO — отвечает за технологии, архитектуру, инженерные решения и техническое развитие продукта.
- CPO — отвечает за продуктовую стратегию, развитие продукта и ценность для клиентов.
- CFO — отвечает за финансы, бюджетирование, финансовое планирование и устойчивость бизнеса.
- CMO — маркетинг, позиционирование и рост клиентской базы.
- CHRO — люди, культура, развитие команд и организационная эффективность.

Интересно, что роль COO часто остается «за кадром», хотя именно через нее проходят практически все вопросы операционного управления:

— реализация стратегии;
— построение бизнес-процессов;
— финансовое планирование;
— управление эффективностью;
— организационная структура;
— KPI и метрики;
— управление изменениями;
— работа со стейкхолдерами.

Курс мне понравился — почти 5 месяцев обучения, много теории и практики, работа в группах. Было довольно много материалов и занятий как по основной программе, так и дополнительных: мастер-классы по работе с ИИ, автоматизации процессов и отдельные модули для руководителей.

Наверное, самое ценное для меня — это работа в группах. Мы разбирали задания вживую: сначала получали кейс и самостоятельно думали над решением, а затем обсуждали в группе. Иногда делились на роли и разыгрывали ситуации, где каждый отстаивал свою часть решения или позицию.

Почти все задания были специально «неоднозначные» — без одного правильного ответа. Сначала кажется, что решение очевидно, но затем появляются новые вводные, которые полностью меняют картину. И в итоге это не про правильность ответа, а про умение аргументировать, договариваться и пересобирать позицию по мере появления новой информации.

В целом это хорошо прокачивает именно управленческое мышление: когда нет фиксированного решения, а есть контекст, ограничения и необходимость постоянно пересматривать выбор.

Сертификат тоже получен — логичное завершение этой истории 😄
Работаем дальше 💪🏼

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1711🔥9
Столько времени прошло, блогу уже 3 года 🥹
Все получится, нужно только начать 🙏🏻
🔥257👍2
🕯 Подъехал топ задач на собеседованиях

1. Сжатие последовательности чисел в диапазоны (Compress Numbers to Ranges)
Дают задачу: VK, Яндекс, Сбер, Озон
function compress(numbers) {
// TODO: напишите решение здесь
return "";
}

https://app.yeahub.ru/tasks/7b6dff40-f902-40c5-b7d8-c92aef1ceada

2. Реализация функции compose (Function Composition)
Дают задачу: Яндекс, Озон, Симбирсофт
function compose(...fns) {
// TODO: напишите решение здесь
return (x) => x;
}

https://app.yeahub.ru/tasks/58ba2a4b-0598-4bdf-92f7-e5b4c8a6d8fe

3. Обход объекта и сбор значений (Traverse Object)
Дают задачу: Яндекс, Сбер, WB, Озон
function traverseObject(obj) {
// TODO: write your solution here
return "";
}

https://app.yeahub.ru/tasks/f861e899-cf37-48a8-a4db-5b99fc6fb685

4. Банкомат (ATM)
Дают задачу: Яндекс, Сбер, Авито, Оптимакрос
function getMoney(amount) {
// TODO: write your solution here
return { 5000: 0, 1000: 0, 500: 0, 100: 0, 50: 0 };
}


В YeaHub мы стремимся связывать задачи с собеседований между компаниями, чтобы формировалась максимально полная картина. Активно пополняем платформу новыми собесами 💪🏼

🚀 База собесов💪 Frontend Элита📚 Менторство📹 YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍2🔥2