uz
Feedback
Frontend | Вопросы собесов

Frontend | Вопросы собесов

Kanalga Telegram’da o‘tish

📈 Telegram kanali Frontend | Вопросы собесов analitikasi

Frontend | Вопросы собесов (@easy_javascript_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 279 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 354-o'rinni va Rossiya mintaqasida 36 941-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 18 279 obunachiga ega bo‘ldi.

14 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -124 ga, so‘nggi 24 soatda esa -6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 9.62% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.70% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 759 marta ko‘riladi; birinchi sutkada odatda 1 042 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 8 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent ставь, браузер, html, border, flex kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky

Yuqori yangilanish chastotasi (oxirgi ma’lumot 15 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

18 279
Obunachilar
-624 soatlar
-467 kunlar
-12430 kunlar
Postlar arxiv
🤔 Можешь ли пояснить разницу между progressive enhancement и graceful degradation? Оба подхода используются в веб-разработке для обеспечения доступности и совместимости веб-приложений на разных устройствах и браузерах. 🚩Progressive Enhancement (Прогрессивное улучшение) Сначала создаём простую, но рабочую версию сайта, которая работает на всех устройствах и браузерах. Затем добавляем улучшения (CSS-анимации, сложный JavaScript), которые работают только в современных браузерах. 🚩Graceful Degradation (Постепенное упрощение) Сначала создаём полнофункциональную версию с последними технологиями. Затем добавляем fallback'и (упрощённые версии) для старых браузеров. Используем CSS Grid, но добавляем @supports для fallback'а на Flexbox Приложение на React, но показываем простой HTML, если JavaScript отключён. Ставь 👍 и забирай 📚 Базу знаний

Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие п
Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать? Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи. Из методички узнаете: - Как создать постоянную ссылку и подключаться на встречи в 2 клика, - Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных. - Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту. Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч. Получить гайд можно бесплатно на сайте. Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Какие бывают хуки? В React хуки — это специальные функции, которые позволяют "подключаться" к состоянию и жизненному циклу функциональных компонентов. Основные хуки включают useState для работы с состоянием, useEffect для выполнения побочных эффектов, и useContext для доступа к контексту. Также есть пользовательские хуки, которые можно создавать для повторного использования логики между компонентами. Хуки позволяют использовать функциональные компоненты так же эффективно, как и классовые. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Крупнейший университет искусственного интеллекта Приглашаем на бесплатный однодневный интенсив по AI! Освой искусственный инт
Крупнейший университет искусственного интеллекта Приглашаем на бесплатный однодневный интенсив по AI! Освой искусственный интеллект для профессионального роста: создавай нейросети, автоматизируй бизнес-задачи и зарабатывай на AI-решениях. ✨ 8 000+ студентов со всего мира ✨ 600+ AI-проектов, созданных студентами ✨ Сборная Университета — победители крупнейших AI-хакатонов России ✨ Стажировки в крупнейших компаниях России (РЖД, Ростелеком, РУДН, Совкомбанк, Самолет и другие) ✨ Трудоустраиваем выпускников в крупнейшие компании (Яндекс, ВТБ, Сбербанк, Роскосмос и другие) Будем рады видеть тебя в наших рядах! Узнать больше #реклама 16+ neural-university.ru О рекламодателе

🤔 Для чего нуден key при работе со списками? В React при рендере списков (например, через .map()) каждому элементу необходимо передавать уникальный key. Это помогает React оптимизировать перерисовку и правильно отслеживать изменения в списке. 🚩Почему `key` важен? React использует виртуальный DOM и при обновлении сравнивает новый список с предыдущим. Без key React не понимает, какие элементы изменились, удалились или добавились. Это может привести к неожиданному поведению, например, сбросу состояния или неправильному рендеру. 🚩Как использовать `key` правильно?
const users = ["Alice", "Bob", "Charlie"];

function UserList() {
    return (
        <ul>
            {users.map((user, index) => (
                <li key={user}>{user}</li> // Хорошо, если `user` уникален
            ))}
        </ul>
    );
}
🚩Что будет без `key`? Если не указать key, React выдаст предупреждение:
Warning: Each child in a list should have a unique "key" prop.
Кроме того, при изменении списка возможны проблемы с перерисовкой
{users.map((user, index) => (
    <input key={index} defaultValue={user} />
))}
Ставь 👍 и забирай 📚 Базу знаний

Онлайн-магистратура с IT специальностями от Яндекса Совместно с ИТМО, МИФИ, МФТИ. Онлайн-магистратура с актуальными программами и гибким графиком обучения. Получите высокооплачиваемую IT профессию, официальный диплом и практические знания. Господдержка оплаты. Совмещение с работой! Узнать больше #реклама 16+ practicum.yandex.ru О рекламодателе

🤔 Где заканчивается JS, а где начинается DOM? JavaScript — это язык программирования, а DOM — это объектная модель документа, предоставляемая браузером. JS используется для работы с DOM через его API. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что можешь рассказать об version? version (версия) – это числовой или текстовый идентификатор, который используется для обозначения определённого состояния кода, программы, библиотеки или API. Версия помогает понимать, какие изменения были внесены, и совместима ли текущая версия с предыдущими. 🟠Семантическое версионирование (SemVer) Наиболее распространённый стандарт версионирования – SemVer (Semantic Versioning). Он использует формат
MAJOR.MINOR.PATCH
Пример в package.json (Node.js-проекты):
{
  "name": "my-app",
  "version": "1.2.3"
}
Команда для обновления версии в package.json
npm version major   # 2.0.0
npm version minor   # 1.3.0
npm version patch   # 1.2.4
🟠Версионирование API При работе с REST API или GraphQL API тоже используют версии, чтобы не ломать старые клиенты.
https://api.example.com/v1/users
https://api.example.com/v2/users
🟠Версионирование в Git В Git версиями называют теги (tags), привязанные к коммитам.
git tag v1.0.0
git push origin v1.0.0
Чтобы посмотреть все версии
git tag
Ставь 👍 и забирай 📚 Базу знаний

Бесплатный вебинар "Рынок информационной безопасности" Информационная безопасность в России — растущий, но сложный рынок. Как
Бесплатный вебинар "Рынок информационной безопасности" Информационная безопасность в России — растущий, но сложный рынок. Какие ниши свободны и какие возможности есть у предпринимателей в этой ниши? Узнайте на вебинаре ФРИИ и Солар 8 апреля в 17:00. Обсудим: — Рынок ИБ в России: свободные ниши, тренды и перспективы для бизнеса; — Кейс предпринимателя в кибербезопасности: как запустить стартап с нуля, найти первых клиентов и вырасти до лидера в своей сфере; — Инвестиции: какие финансовые инструменты доступны ИБ-компаниям в России. Опытом поделятся СЕО и основатель Metascan Давид Ордян, директор по венчурным инвестициям ГК «Солар» Владислав Рассказов и управляющий портфелем ФРИИ Илья Королев. Зарегистрируйтесь на сайте и до встречи онлайн! Зарегистрироваться #реклама 16+ invest.iidf.ru О рекламодателе

🤔 Какие модификаторы есть у событий? Для событий доступны модификаторы, которые управляют их поведением. Например, можно остановить распространение события вверх по DOM, предотвратить стандартное действие браузера, выполнить обработку только один раз или задать специальный порядок вызова. Это даёт более тонкий контроль над поведением событий в интерфейсе. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как общаться между iframe и самой страницой? Общение между iframe и родительской страницей может происходить с помощью: Метода postMessage (лучший способ) Доступа к window.frames или window.parent (если тот же домен) Передачи данных через localStorage или cookies 🟠`postMessage` – безопасный способ для разных доменов Метод window.postMessage() позволяет передавать сообщения между разными окнами (iframe, popup, другие вкладки) даже если они на разных доменах. 🚩Передача данных из `iframe` в родительскую страницу *Код в iframe (child.html)
// Отправляем сообщение родительскому окну
window.parent.postMessage({ type: "hello", data: "Привет, родитель!" }, "*");
Код в родительской странице (index.html)
window.addEventListener("message", (event) => {
    console.log("Получено сообщение от iframe:", event.data);
});
* в postMessage означает, что сообщение отправляется любому домену. Лучше указывать конкретный, например:
window.parent.postMessage({ type: "hello" }, "https://example.com");
🚩Передача данных из родителя в `iframe` Код в родительской странице (index.html)
const iframe = document.getElementById("myIframe");

// Ждём, когда iframe загрузится
iframe.onload = () => {
    iframe.contentWindow.postMessage({ type: "greeting", data: "Привет, iframe!" }, "*");
};
Код в iframe (child.html)
window.addEventListener("message", (event) => {
    console.log("Получено сообщение от родителя:", event.data);
});
🚩Доступ к `window.frames` и `window.parent` (только если тот же домен!) Если iframe и основная страница находятся на одном домене, можно обращаться к их window напрямую. Родительская страница → iframe
const iframe = document.getElementById("myIframe");

// Получаем объект `window` внутри `iframe`
iframe.contentWindow.document.body.style.backgroundColor = "lightblue";
iframe → Родительская страница
console.log(window.parent.document.title); // Доступ к заголовку страницы
🚩`localStorage` или `cookies` (если оба окна на одном домене) Можно сохранять данные в localStorage или cookies, а другая сторона будет их читать. Запись в localStorage из iframe
localStorage.setItem("message", "Привет от iframe!");
Чтение localStorage в родительской странице
console.log(localStorage.getItem("message")); // "Привет от iframe!"
Ставь 👍 и забирай 📚 Базу знаний

Яндекс Weekend Offer Mobile Устроиться мобильным разработчиком в Яндекс за выходные. 12–13 апреля проводим Weekend Offer Mobi
Яндекс Weekend Offer Mobile Устроиться мобильным разработчиком в Яндекс за выходные. 12–13 апреля проводим Weekend Offer Mobile . До 9 апреля оставьте заявку на участие, 12 апреля пройдите технические собеседования, а 13 апреля познакомьтесь с командами и получите офер. В мероприятии участвует 7 команд: Алиса и Умные устройства, Карты и Навигатор, Авто.ру, Недвижимость, Путешествия, Аренда, Рекламные технологии. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным. Зарегистрироваться #реклама yandex.ru О рекламодателе

🤔 Где находятся макро- и микро- таски в EventLoop? В JavaScript EventLoop управляет очередью выполнения: - Микротаски (microtasks) — выполняются сразу после текущего стека, до следующих макротасков. Сюда относятся: - Promise.then - MutationObserver - queueMicrotask - Макротаски (macrotasks) — ставятся в очередь и выполняются после микротасков. Сюда входят: - setTimeout, setInterval - setImmediate (в Node.js) - I/O события - события DOM Таким образом, микротаски имеют более высокий приоритет, чем макротаски. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Получи грант на обучение в Центральном университете Центральный университет выдает гранты на 4 года обучения в бакалавриате.
Получи грант на обучение в Центральном университете Центральный университет выдает гранты на 4 года обучения в бакалавриате. Грант покрывает до 100% стоимости обучения. Участвуй в отборе, чтобы получить грант. Получи доступ к уникальным активностям для абитуриентов. Для выпускников 10-х, 11-х классов и колледжей. Подать заявку #реклама apply.centraluniversity.ru О рекламодателе

🤔 Как можно работать с датами в js? В JavaScript для работы с датами можно использовать: Date – встроенный объект Библиотеку Intl.DateTimeFormat – для форматирования Библиотеки (moment.js, date-fns, luxon) – для удобной работы 🚩Встроенный объект `Date` Создание даты
const now = new Date(); // Текущая дата и время
console.log(now); // Например: 2025-02-25T12:34:56.789Z
Способы создания даты
new Date(); // Текущая дата
new Date(2025, 1, 25); // 25 февраля 2025 (месяцы с 0)
new Date("2025-02-25"); // ISO строка
new Date(1708850400000); // Unix timestamp (в мс)
Получение значений
const date = new Date();
console.log(date.getFullYear()); // 2025
console.log(date.getMonth());    // 1 (февраль, потому что январь — 0)
console.log(date.getDate());     // 25
console.log(date.getDay());      // 2 (вторник, потому что воскресенье — 0)
console.log(date.getHours());    // Часы
console.log(date.getMinutes());  // Минуты
console.log(date.getSeconds());  // Секунды
console.log(date.getTime());     // Время в миллисекундах (Unix timestamp)
Изменение даты
const date = new Date();
date.setFullYear(2030);
date.setMonth(11); // Декабрь
date.setDate(31);
console.log(date); // 31 декабря 2030
Форматирование даты
const date = new Date();
console.log(date.toDateString()); // "Tue Feb 25 2025"
console.log(date.toISOString());  // "2025-02-25T12:34:56.789Z"
console.log(date.toLocaleString()); // Локальное представление
console.log(date.toUTCString());  // "Tue, 25 Feb 2025 12:34:56 GMT"
Форматирование с Intl.DateTimeFormat
const date = new Date();
const formatter = new Intl.DateTimeFormat("ru-RU", {
    year: "numeric",
    month: "long",
    day: "numeric",
    weekday: "long",
});
console.log(formatter.format(date)); // "вторник, 25 февраля 2025 г."
🚩Библиотеки (более удобные способы) date-fns (легковесная альтернатива Moment.js)
npm install date-fns
import { format, addDays } from "date-fns";

const now = new Date();
console.log(format(now, "dd.MM.yyyy HH:mm")); // 25.02.2025 15:30
console.log(addDays(now, 5)); // Дата + 5 дней
moment.js (устаревший, но популярный)
npm install moment
import moment from "moment";

const now = moment();
console.log(now.format("DD.MM.YYYY HH:mm")); // 25.02.2025 15:30
console.log(now.add(5, "days").format("DD.MM.YYYY")); // +5 дней
luxon (современная альтернатива Moment.js)
npm install luxon
import { DateTime } from "luxon";

const now = DateTime.now();
console.log(now.toFormat("dd.MM.yyyy HH:mm")); // 25.02.2025 15:30
console.log(now.plus({ days: 5 }).toFormat("dd.MM.yyyy")); // +5 дней
Разница между датами
const date1 = new Date("2025-02-25");
const date2 = new Date("2025-03-01");

const diff = date2 - date1; // Разница в миллисекундах
console.log(diff / (1000 * 60 * 60 * 24)); // Разница в днях (4)
Ставь 👍 и забирай 📚 Базу знаний

Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в подписке. Попробуйте бесплатно❤️ Попробовать #реклама 18+ music.yandex.ru О рекламодателе Реклама на Яндексе

🤔 Какие есть значения у box-sizing? CSS-свойство box-sizing принимает два значения: - content-box – размер элемента считается по контенту, без учета padding и border. - border-box – размер включает контент, padding и border, что облегчает расчет ширины/высоты. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Repost from easyoffer
Я боялся, что провалю собеседование. Так появился easyoffer Когда я только начинал искать первую работу программистом, меня п
+2
Я боялся, что провалю собеседование. Так появился easyoffer Когда я только начинал искать первую работу программистом, меня пугала мысль, что я просто не смогу ответить на вопросы на собеседовании. Типа… ты потратил месяцы на то, чтобы учиться, писал pet-проекты, собирал резюме, рассылаешь отклики — и всё может закончиться на одном-единственном вопросе, на который ты не знаешь ответ. Я реально боялся. Я смотрел видео mock-собеседований на YouTube, останавливал каждое, выписывал вопросы в Notion. Потом вручную писал к ним ответы. И потом ещё по нескольку раз перечитывал. Такой вот "тренажёр" на коленке. 📎 (там на картинке — один из моих реальных списков в Notion, ставь 🔥 если тоже так делал) В какой-то момент я посчитал — у меня уже было выписано больше 500 вопросов. Я почувствовал ужас. Потому что невозможно всё это зазубрить. А что, если спросят как раз тот, к которому я не успел подготовиться?.. Тогда и пришла идея А что если понять, какие из вопросов встречаются чаще всего? Чтобы не учить всё подряд, а сфокусироваться на главном. Так родился easyoffer. Сначала — просто как пет-проект, чтобы показать в резюме и подготовиться к собесам. А потом оказалось, что он реально помогает людям. За первые месяцы его посетили сотни тысяч человек. И я понял: это больше, чем просто пет-проект. Сейчас я делаю EasyOffer 2.0 И уже не один, а вместе с вами. В новой версии будут: – вопросы из реальных собесов, с фильтрацией по грейду, компании, типу интервью – тренажёр с карточками (по принципу интервальных повторений — как в Anki) – база задач с интервью – тренажёр «реальное собеседование», чтобы отрепетировать как в жизни Каждая фича упрощает и сокращает время на подготовку. Все эти штуки я бы мечтал иметь, когда сам готовился к собеседованиям. Я делаю всё на свои деньги. Никаких инвесторов. Только вы и я. Если вы хотите помочь — сейчас самое важное время. Краудфандинг уже стартовал. Благодаря нему я смогу привлечь больше людей для разработки, сбору и обработки собеседований. Все, кто поддержат проект до релиза, получат: 🚀 1 год PRO-доступа по цене месячной подписки. Его можно активировать в любое время, например когда начнете готовится к собесам. ➕ Доступ к закрытому бета-тесту Поддержать 👉 https://planeta.ru/campaigns/easyoffer Спасибо, что верите в этот проект 🙌

За что вы на самом деле платите, внедряя BI? Конференция Fine Day Online! Дата: 17 апреля | Время: 16:00 (МСК) BI-решения пом
За что вы на самом деле платите, внедряя BI? Конференция Fine Day Online! Дата: 17 апреля | Время: 16:00 (МСК) BI-решения помогают бизнесу расти, но их внедрение бывает выходят за рамки бюджета. Где прячутся скрытые расходы? Как избежать лишних затрат? Обсудим на конференции! ✨ Как оценить реальную цену данных ✨ Оптимизация затрат без потери качества аналитики ✨ Ошибки, которые удорожают BI-проекты ✨ Реальный опыт компаний, которые уже прошли этот путь Бонусы для участников: ✅ Доступ к записям конференции и Эксклюзивный чек-лист: "BI без лишних затрат: типовые ошибки и как их избежать" Участие бесплатное! Зарегистрироваться #реклама bi.glowbyteconsulting.com О рекламодателе

🤔 На что можно заменить интерфейсы в js? В JavaScript нет встроенной поддержки интерфейсов, как в TypeScript, Java или C#. Однако, их можно заменить несколькими способами, в зависимости от задачи. 🟠Использование JSDoc (аннотации типов) Можно описывать структуру объектов с помощью @typedef и @param, что помогает при автодополнении и статическом анализе кода.
/**
 * @typedef {Object} User
 * @property {string} name
 * @property {number} age
 */

/**
 * @param {User} user
 */
function printUser(user) {
    console.log(`Имя: ${user.name}, Возраст: ${user.age}`);
}

const person = { name: "Alice", age: 30 };
printUser(person); // Работает!
🟠Использование классов (Abstract Class Pattern) Можно создать абстрактный класс с методами-заглушками, которые нужно реализовать в потомках.
class Animal {
    constructor(name) {
        if (new.target === Animal) {
            throw new Error("Нельзя создать экземпляр абстрактного класса!");
        }
        this.name = name;
    }

    makeSound() {
        throw new Error("Метод makeSound() должен быть переопределён!");
    }
}

class Dog extends Animal {
    makeSound() {
        return "Гав-гав!";
    }
}

const dog = new Dog("Бобик");
console.log(dog.makeSound()); // "Гав-гав!"

// const animal = new Animal("Лев"); // Ошибка!
🟠Проверка структуры объекта (Duck Typing) Можно просто проверять, есть ли нужные методы и свойства у объекта перед использованием.
function useDevice(device) {
    if (typeof device.turnOn !== "function") {
        throw new Error("Объект должен иметь метод turnOn()");
    }
    device.turnOn();
}

const phone = { turnOn: () => console.log("Телефон включен!") };
useDevice(phone); // "Телефон включен!"

const invalidDevice = { power: true };
// useDevice(invalidDevice); // Ошибка: "Объект должен иметь метод turnOn()"
🟠Использование TypeScript (лучший вариант) TypeScript добавляет поддержку интерфейсов в JavaScript.
interface User {
    name: string;
    age: number;
}

function printUser(user: User) {
    console.log(`Имя: ${user.name}, Возраст: ${user.age}`);
}

const person: User = { name: "Alice", age: 30 };
printUser(person); // Работает!
Ставь 👍 и забирай 📚 Базу знаний