Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
88 LeetCode: Разбираем задачи на Javanoscript для собеседований
Задача о слиянии отсортированных массивов c LeetCode (Top Interview 150 - Merge Sorted Array):
https://leetcode.com/problems/merge-sorted-array
💡 Готовишься к собеседованию на Frontend-разработчика? В этом видео разберем популярные задачи с LeetCode, которые…
https://leetcode.com/problems/merge-sorted-array
💡 Готовишься к собеседованию на Frontend-разработчика? В этом видео разберем популярные задачи с LeetCode, которые…
Context API vs State Manager: Когда что использовать? 🤔
В React управление состоянием можно реализовать разными способами, и один из частых вопросов — когда хватит Context API, а когда нужен полноценный стейт-менеджер? Давай разберёмся!
🔡 ontext API
Context API — это встроенный инструмент React для передачи данных на глубоком уровне вложенности без проброса пропсов.
✅ Когда использовать:
- Простые глобальные состояния (тема, язык, авторизация).
- Данные, которые редко изменяются.
- Небольшие проекты, где дополнительный стейт-менеджер не оправдан.
❌ Минусы Context API:
- Ререндеры: Любое изменение контекста вызывает перерисовку всех потребителей.
- Сложность обновления: Контекст не подходит для часто меняющегося состояния, например, списка товаров в корзине.
🔡 tate Manager (Redux, Zustand, Recoil и др.)
Стейт-менеджеры предлагают централизованное хранилище, оптимизированное для обновления состояния.
✅ Когда использовать:
- Большие и сложные приложения с разными источниками состояния.
- Часто изменяемые данные (например, корзина товаров, фильтры, кэш запросов).
- Нужно разделение логики обновления и UI (например, при использовании middleware).
⚡️ Плюсы стейт-менеджеров:
- Оптимизированные обновления (Redux использует селекторы и мемоизацию, Zustand обновляет только затронутые компоненты).
- Гибкость и масштабируемость (можно легко расширять логику, добавлять middleware и асинхронные экшены).
Что выбрать?
Если нужно просто передавать тему, язык или настройки — Context API.
Если требуется сложная логика обновления, кеширование или масштабируемость — State Manager.
В React управление состоянием можно реализовать разными способами, и один из частых вопросов — когда хватит Context API, а когда нужен полноценный стейт-менеджер? Давай разберёмся!
Context API — это встроенный инструмент React для передачи данных на глубоком уровне вложенности без проброса пропсов.
- Простые глобальные состояния (тема, язык, авторизация).
- Данные, которые редко изменяются.
- Небольшие проекты, где дополнительный стейт-менеджер не оправдан.
- Ререндеры: Любое изменение контекста вызывает перерисовку всех потребителей.
- Сложность обновления: Контекст не подходит для часто меняющегося состояния, например, списка товаров в корзине.
Стейт-менеджеры предлагают централизованное хранилище, оптимизированное для обновления состояния.
- Большие и сложные приложения с разными источниками состояния.
- Часто изменяемые данные (например, корзина товаров, фильтры, кэш запросов).
- Нужно разделение логики обновления и UI (например, при использовании middleware).
- Оптимизированные обновления (Redux использует селекторы и мемоизацию, Zustand обновляет только затронутые компоненты).
- Гибкость и масштабируемость (можно легко расширять логику, добавлять middleware и асинхронные экшены).
Что выбрать?
Если нужно просто передавать тему, язык или настройки — Context API.
Если требуется сложная логика обновления, кеширование или масштабируемость — State Manager.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡ Задача дня
❓ Какой тип будет у переменной result?
✅ Ответ
{ name: string; age: number; }
Если возникли трудности, читай про эту тему здесь:
https://www.typenoscriptlang.org/docs/handbook/2/generics.html
Дженерики + объединение типов = мощь! 🚀 Используй и пиши гибкий код! 🔥
❓ Какой тип будет у переменной result?
function merge<T, U>(obj1: T, obj2: U): T & U {
return { ...obj1, ...obj2 };
}
const result = merge({ name: "Анна" }, { age: 25 });
console.log(result);
✅ Ответ
Если возникли трудности, читай про эту тему здесь:
https://www.typenoscriptlang.org/docs/handbook/2/generics.html
Дженерики + объединение типов = мощь! 🚀 Используй и пиши гибкий код! 🔥
www.typenoscriptlang.org
Documentation - Generics
Types which take parameters
Написать код — это одно, но надо еще убедиться, что он работает как надо. Мы хоть и не тестировщики, но проверять свой код и даже писать автотесты все равно приходится. Так что базовое понимание тестирования — обязательно. Вот хорошая статья, в которой кратко разбираются все основные виды тестирования, чтобы ты быстро вник и не растерялся, когда тебя спросят об этом на собеседовании. Кстати, это довольно частый вопрос для фронтенд-разработчиков!
📌 https://habr.com/ru/articles/587620/
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡ Задача дня
❓ Что выведет консоль?
✅ Ответ
["BANANA", "CHERRY"]
📚 Почитать про filter и map можно здесь:
https://learn.javanoscript.ru/array-methods#filter
https://learn.javanoscript.ru/array-methods#map
❓ Что выведет консоль?
const words = ["apple", "banana", "cherry"];
const result = words.filter(word => word.length > 5).map(word => word.toUpperCase());
console.log(result);
✅ Ответ
📚 Почитать про filter и map можно здесь:
https://learn.javanoscript.ru/array-methods#filter
https://learn.javanoscript.ru/array-methods#map
Жизненный цикл компонента в React (в классновых и функциональных компонентах)
В современном фронтенде функциональные компоненты уже стали стандартом. Но классовые все еще встречаются, особенно в проектах, начатых несколько лет назад, когда React активно продвигал этот подход. На собеседованиях их часто спрашивают, а также просят объяснить, как аналогичные механизмы реализуются в функциональных компонентах. Давай разберемся в этом вопросе!
Фазы жизненного цикла в классовых компонентах
⚡️Монтирование (Mounting) — когда компонент появляется в DOM
⚡️Обновление (Updating) — когда компонент обновляется
⚡️ Размонтирование (Unmounting) — когда компонент удаляется из DOM
🚀Жизненный цикл в функциональных компонентах (хуки)
Вместо методов жизненного цикла в функциональных компонентах используют useEffect:
useEffect(() => {...}, []) — аналог componentDidMount
useEffect(() => {...}, [deps]) — аналог componentDidUpdate
return () => {...} внутри useEffect — аналог componentWillUnmount
👉Итог
В классовых компонентах используются методы жизненного цикла (componentDidMount, componentDidUpdate, componentWillUnmount).
В функциональных компонентах используют useEffect, который заменяет эти методы.
В новых проектах лучше использовать функциональные компоненты и хуки, так как они проще и удобнее.
В современном фронтенде функциональные компоненты уже стали стандартом. Но классовые все еще встречаются, особенно в проектах, начатых несколько лет назад, когда React активно продвигал этот подход. На собеседованиях их часто спрашивают, а также просят объяснить, как аналогичные механизмы реализуются в функциональных компонентах. Давай разберемся в этом вопросе!
Фазы жизненного цикла в классовых компонентах
⚡️Монтирование (Mounting) — когда компонент появляется в DOM
— вызывается при создании компонента. Здесь можно инициализировать state.
constructor(props)
— вызывается перед рендерингом. Позволяет обновлять state на основе props.
static getDerivedStateFromProps(props, state)
render()— отрисовывает JSX.
componentDidMount()— вызывается после рендеринга компонента в DOM. Здесь обычно делают запросы к API или подписки.
⚡️Обновление (Updating) — когда компонент обновляется
— вызывается снова при обновлении props.
static getDerivedStateFromProps(props, state)
— позволяет предотвратить ненужный ререндер, возвращая true или false.
shouldComponentUpdate(nextProps, nextState)
render()— отрисовывает компонент заново.
getSnapshotBeforeUpdate(prevProps, prevState)— вызывается перед обновлением DOM, позволяет сохранить предыдущее состояние.
componentDidUpdate(prevProps, prevState, snapshot)— вызывается после обновления компонента, удобно для запросов к API при изменении props.
⚡️ Размонтирование (Unmounting) — когда компонент удаляется из DOM
componentWillUnmount()— выполняется перед удалением компонента. Используется для очистки таймеров, подписок и т. д.
🚀Жизненный цикл в функциональных компонентах (хуки)
Вместо методов жизненного цикла в функциональных компонентах используют useEffect:
import { useState, useEffect } from "react";
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log("Компонент смонтировался 🚀");
return () => {
console.log("Компонент размонтировался 💀");
};
}, []); // Пустой массив означает, что useEffect сработает только один раз
return (
<div>
<p>Счетчик: {count}</p>
<button onClick={() => setCount(count + 1)}>+</button>
</div>
);
}
useEffect(() => {...}, []) — аналог componentDidMount
useEffect(() => {...}, [deps]) — аналог componentDidUpdate
return () => {...} внутри useEffect — аналог componentWillUnmount
👉Итог
В классовых компонентах используются методы жизненного цикла (componentDidMount, componentDidUpdate, componentWillUnmount).
В функциональных компонентах используют useEffect, который заменяет эти методы.
В новых проектах лучше использовать функциональные компоненты и хуки, так как они проще и удобнее.
Попалась мне интересная статья, и я просто не могу не поделиться ей с тобой.
Сразу скажу, что уважаю эту компанию и её сотрудников за действительно сильные технические скиллы. Вместе с этим, как бывший сотрудник, могу сказать, что выводы в статье кажутся мне весьма занятными.
Расскажи, что думаешь)
https://habr.com/ru/articles/882724/
Сразу скажу, что уважаю эту компанию и её сотрудников за действительно сильные технические скиллы. Вместе с этим, как бывший сотрудник, могу сказать, что выводы в статье кажутся мне весьма занятными.
Расскажи, что думаешь)
https://habr.com/ru/articles/882724/
Хабр
Собеседование Яндекса, как обряд инициации: для чего нужны такие собеседования
Без всяких сомнений, в IT-отрасли РФ не так много людей, кто не был бы знаком с особенностями найма в Яндекс. Некоторые считают, что этот процесс имеет чёткую цель отбора наиболее сильных...
Советы по прохождению технического интервью в крупнейшие IT-компании (Big Tech):
📍 Подготовься к решению задач на доске: практикуйся в написании кода от руки, чтобы уверенно решать задачи на доске во время интервью.
📍 Демонстрируй процесс мышления: объясняй свои мысли и подходы к решению задач, чтобы интервьюеры могли оценить твой аналитический процесс.
📍 Задавай вопросы: если условия задачи неясны, не стесняйся уточнять детали, показывая своё стремление к точности и пониманию.
📍 Учитывай крайние случаи: обращай внимание на возможные исключения и нестандартные ситуации, чтобы продемонстрировать глубокое понимание проблемы.
📍 Тестируй свой код: после написания решения проверь его на наличие ошибок и убедись в правильности работы.
📍 Будь готов к вопросам по резюме: ожидай обсуждения проектов и опыта, указанных в твоём резюме, и будь готов подробно о них рассказать.
📍 Практикуй поведенческие вопросы: подготовь примеры из прошлого опыта, демонстрирующие твои навыки командной работы, преодоления трудностей и адаптивности.
📍 Проявляй энтузиазм и интерес: покажи искреннюю заинтересованность в позиции и компании, что подчеркнёт твою мотивацию. 🚀
📍 Подготовься к решению задач на доске: практикуйся в написании кода от руки, чтобы уверенно решать задачи на доске во время интервью.
📍 Демонстрируй процесс мышления: объясняй свои мысли и подходы к решению задач, чтобы интервьюеры могли оценить твой аналитический процесс.
📍 Задавай вопросы: если условия задачи неясны, не стесняйся уточнять детали, показывая своё стремление к точности и пониманию.
📍 Учитывай крайние случаи: обращай внимание на возможные исключения и нестандартные ситуации, чтобы продемонстрировать глубокое понимание проблемы.
📍 Тестируй свой код: после написания решения проверь его на наличие ошибок и убедись в правильности работы.
📍 Будь готов к вопросам по резюме: ожидай обсуждения проектов и опыта, указанных в твоём резюме, и будь готов подробно о них рассказать.
📍 Практикуй поведенческие вопросы: подготовь примеры из прошлого опыта, демонстрирующие твои навыки командной работы, преодоления трудностей и адаптивности.
📍 Проявляй энтузиазм и интерес: покажи искреннюю заинтересованность в позиции и компании, что подчеркнёт твою мотивацию. 🚀
Мой мини-отпуск подошел к концу и я врываюсь в рабочие будни с новым видео про алгоритмы!
https://youtu.be/nWRl0gnx0gY?si=spYQ6u4L9FRaxZup
https://youtu.be/nWRl0gnx0gY?si=spYQ6u4L9FRaxZup
YouTube
LeetCode для собеседований: Разбираем задачи Javanoscript
Задача об удалении элемента из массива c LeetCode (Top Interview 150 - Remove Element):
https://leetcode.com/problems/remove-element
💡 Готовишься к собеседованию на Frontend-разработчика? В этом видео разберем популярные задачи с LeetCode, которые часто…
https://leetcode.com/problems/remove-element
💡 Готовишься к собеседованию на Frontend-разработчика? В этом видео разберем популярные задачи с LeetCode, которые часто…
⚡ Задача дня
❓ Что выведет консоль?
✅ Ответ
4 40 4 5
📚 Почитать про push, pop, shift, unshift можно здесь:
https://learn.javanoscript.ru/array-methods#push-pop-shift-unshift
#javanoscript #frontend #фронтендсобеседования
❓ Что выведет консоль?
const arr = [10, 20, 30];
const a = arr.push(40);
const b = arr.pop();
const c = arr.unshift(5);
const d = arr.shift();
console.log(a, b, c, d);
✅ Ответ
📚 Почитать про push, pop, shift, unshift можно здесь:
https://learn.javanoscript.ru/array-methods#push-pop-shift-unshift
#javanoscript #frontend #фронтендсобеседования
При решении алгоритмических задач нам часто нужно перебирать массив. Давай разберёмся, чем отличаются for, forEach и for...of, и в каких случаях каждый из них удобнее. 🔍
1️⃣ for
Классический способ перебора массива, подходит для случаев, когда нужен полный контроль над итерацией: досрочный выход (break, return) или переход к следующей итерации (continue).
✅ Позволяет управлять индексом.
✅ Можно использовать break, continue, return.
❌ Код получается более громоздким.
2️⃣ for...of
Современный способ перебора итерируемых объектов, включая массивы. Читается проще, чем for, позволяет break, continue и return.
✅ Простой и лаконичный синтаксис.
✅ Работает с break, continue, return.
✅ Подходит для работы с Set, Map, arguments и другими итерируемыми объектами.
❌ Нет доступа к индексу элемента (если нужен индекс, можно использовать .entries()).
3️⃣ forEach
Метод массива, удобный для перебора элементов. Не прерывается с помощью break, continue или return.
✅ Упрощает работу с массивом, не надо следить за индексом.
✅ Лаконичный код.
❌ Нельзя выйти (break или return не остановят forEach).
📌 Вывод:
for – лучший выбор, если нужен индекс или возможность прервать цикл.
forEach – удобен для чистых переборов, но без возможности остановки.
for...of – читабельный вариант, если не нужен индекс.
👉 Что использовать – зависит от задачи! 🚀
1️⃣ for
Классический способ перебора массива, подходит для случаев, когда нужен полный контроль над итерацией: досрочный выход (break, return) или переход к следующей итерации (continue).
const nums = [1, 2, 3, 4, 5];
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 3) continue; // Пропускаем число 3
if (nums[i] === 4) break; // Останавливаем цикл
console.log(nums[i]);
}
// Выведет: 1, 2
✅ Позволяет управлять индексом.
✅ Можно использовать break, continue, return.
❌ Код получается более громоздким.
2️⃣ for...of
Современный способ перебора итерируемых объектов, включая массивы. Читается проще, чем for, позволяет break, continue и return.
const nums = [1, 2, 3, 4, 5];
for (let num of nums) {
if (num === 3) continue; // Пропускаем 3
if (num === 4) break; // Останавливаем цикл
console.log(num);
}
// Выведет: 1, 2
✅ Простой и лаконичный синтаксис.
✅ Работает с break, continue, return.
✅ Подходит для работы с Set, Map, arguments и другими итерируемыми объектами.
❌ Нет доступа к индексу элемента (если нужен индекс, можно использовать .entries()).
for (let [index, num] of nums.entries()) {
console.log(index, num);
}
// Выведет: 0 1, 1 2, 2 3, 3 4, 4 5
3️⃣ forEach
Метод массива, удобный для перебора элементов. Не прерывается с помощью break, continue или return.
const nums = [1, 2, 3, 4, 5];
nums.forEach((num, index, arr) => {
if (num === 3) return; // НЕ ОСТАНОВИТ ВЕСЬ ЦИКЛ! Только текущую итерацию
console.log(num);
});
// Выведет: 1, 2, 4, 5
✅ Упрощает работу с массивом, не надо следить за индексом.
✅ Лаконичный код.
❌ Нельзя выйти (break или return не остановят forEach).
📌 Вывод:
for – лучший выбор, если нужен индекс или возможность прервать цикл.
forEach – удобен для чистых переборов, но без возможности остановки.
for...of – читабельный вариант, если не нужен индекс.
👉 Что использовать – зависит от задачи! 🚀
❤1
Друзья, сняла для вас ролик про основные ошибки джуниор-разработчиков, которые мешают расти в профессии. Затронула противоречивые темы и постаралась рассмотреть некоторые пункты с разных сторон. Делитесь в комментариях: какие ошибки допускали вы, и как вам удалось с ними справиться?
https://youtu.be/-htWGDRyv1Y?si=mWVNWdx0nXdOseJI
#Frontend #ДжуниорРазработчик #ОшибкиРазработчиков #ITкарьера #Программирование
https://youtu.be/-htWGDRyv1Y?si=mWVNWdx0nXdOseJI
#Frontend #ДжуниорРазработчик #ОшибкиРазработчиков #ITкарьера #Программирование
YouTube
8 ГЛАВНЫХ ОШИБОК ДЖУНИОР-РАЗРАБОТЧИКА В 2025 ГОДУ!
Привет! Если ты начинающий разработчик и хочешь быстрее расти в профессии, то обязательно избегай этих ошибок! В этом видео разберём, что мешает джунам становиться крутыми разработчиками. Говорим о страхе задавать вопросы, боязни ошибок, слепом копировании…
Что такое поведенческое интервью и зачем оно нужно? (Часть 1)
Недавно проходила собес в одну крупную IT компанию, и одной из секций было поведенческое интервью. Название звучит жутковато (у меня сразу ассоциации с лабораториями и экспериментами 🧪😅), но по факту это просто разговор, в котором хотят понять, как ты работаешь, взаимодействуешь с людьми и решаешь проблемы.
⚡ Что важно знать?
Поведенческое интервью часто выделяют в отдельный этап (иногда называют финальным или «знакомством с менеджером»), но подобные вопросы могут встретиться в любой части собеса — у рекрутера и на техническом интервью.
Это не тест на интеллект, а способ проверить твою адекватность, поведение в рабочих ситуациях и соответствие культуре компании.
Вместо общих вопросов («Какие у вас сильные стороны?») тебя попросят описать реальный опыт или смоделировать ситуацию.
🤔 Какие вопросы могут задать?
«Расскажите про самую сложную задачу, с которой вы сталкивались»
«Как вы решали конфликт в команде?»
«Когда допустили ошибку? Как исправили и какие выводы сделали?»
«Как поступите, если не успеваете в сроки?»
«Что сделаете, если не согласны с комментарием коллеги к вашему PR?»
«Расскажите, когда вы проявили инициативу»
«Как изучаете что-то новое?»
🎯 Что хотят услышать?
Компании важно не просто узнать, какие у тебя есть навыки, а понять, как ты их применяешь в реальных ситуациях.
💡 Основные качества, которые оценивают:
✅ Командная работа – как взаимодействуешь с коллегами, решаешь конфликты.
✅ Адаптивность – как быстро переключаешься, осваиваешь новое.
✅ Организованность – умеешь ли планировать задачи и держать дедлайны.
✅ Проактивность – готов ли предлагать идеи и доводить задачи до конца.
✅ Способность принимать фидбэк – адекватно реагируешь на критику, делаешь выводы.
✅ Обучаемость – стремишься ли к развитию.
✅ Лидерские качества – если роль требует инициативности.
В следующем посте расскажу как подготовиться и не провалиться на собеседовании 😉👇
#собеседование #поведенческоеинтервью
Недавно проходила собес в одну крупную IT компанию, и одной из секций было поведенческое интервью. Название звучит жутковато (у меня сразу ассоциации с лабораториями и экспериментами 🧪😅), но по факту это просто разговор, в котором хотят понять, как ты работаешь, взаимодействуешь с людьми и решаешь проблемы.
⚡ Что важно знать?
Поведенческое интервью часто выделяют в отдельный этап (иногда называют финальным или «знакомством с менеджером»), но подобные вопросы могут встретиться в любой части собеса — у рекрутера и на техническом интервью.
Это не тест на интеллект, а способ проверить твою адекватность, поведение в рабочих ситуациях и соответствие культуре компании.
Вместо общих вопросов («Какие у вас сильные стороны?») тебя попросят описать реальный опыт или смоделировать ситуацию.
🤔 Какие вопросы могут задать?
«Расскажите про самую сложную задачу, с которой вы сталкивались»
«Как вы решали конфликт в команде?»
«Когда допустили ошибку? Как исправили и какие выводы сделали?»
«Как поступите, если не успеваете в сроки?»
«Что сделаете, если не согласны с комментарием коллеги к вашему PR?»
«Расскажите, когда вы проявили инициативу»
«Как изучаете что-то новое?»
🎯 Что хотят услышать?
Компании важно не просто узнать, какие у тебя есть навыки, а понять, как ты их применяешь в реальных ситуациях.
💡 Основные качества, которые оценивают:
✅ Командная работа – как взаимодействуешь с коллегами, решаешь конфликты.
✅ Адаптивность – как быстро переключаешься, осваиваешь новое.
✅ Организованность – умеешь ли планировать задачи и держать дедлайны.
✅ Проактивность – готов ли предлагать идеи и доводить задачи до конца.
✅ Способность принимать фидбэк – адекватно реагируешь на критику, делаешь выводы.
✅ Обучаемость – стремишься ли к развитию.
✅ Лидерские качества – если роль требует инициативности.
В следующем посте расскажу как подготовиться и не провалиться на собеседовании 😉👇
#собеседование #поведенческоеинтервью
❤1