ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

الذهاب إلى القناة على Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Frontend | Вопросы собесов

تُعد قناة Frontend | Вопросы собесов (@easy_javascript_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 17 430 مشتركاً، محتلاً المرتبة 7 459 في فئة التكنولوجيات والتطبيقات والمرتبة 37 727 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 17 430 مشتركاً.

بحسب آخر البيانات بتاريخ 29 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -230، وفي آخر 24 ساعة بمقدار -11، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.92‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.34‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 206 مشاهدة. وخلال اليوم الأول يجمع عادةً 757 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, браузер, html, border, flex.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads”

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 30 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

17 430
المشتركون
-1124 ساعات
-727 أيام
-23030 أيام
أرشيف المشاركات
\n \n \n\n\n

Привет, это AMP!

\n \n\n\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-02-16T09:05:30Z","dateModified":"2026-02-16T09:05:30Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2548},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":17}]}},{"@type":"ListItem","position":12,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2394","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2394","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2394","headline":"🤔 В чём отличие for от while? - for — когда знаем начало и конец. - while — когда повторяем пока выполняется…","articleBody":"🤔 В чём отличие for от while?\n\n- for — когда знаем начало и конец.\n- while — когда повторяем пока выполняется условие.\n\nСтавь 👍 если знал ответ, 🔥 если нет\nЗабирай 📚 Базу знаний","datePublished":"2026-02-15T16:10:32Z","dateModified":"2026-02-15T16:10:32Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2382},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":11},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":4}]}},{"@type":"ListItem","position":13,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2393","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2393","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2393","headline":"🤔 Когда используются теги div и span?
и — это самые универсальные HTML-теги, но у них разные рол…","articleBody":"🤔 Когда используются теги div и span?\n\n
и — это самые универсальные HTML-теги, но у них разные роли: \n
— блочный контейнер (для структуры). \n — строчный контейнер (для оформления текста). \n\n🚩Примеры использования `
` \n\nРазметка секций страницы\n
Навигация
\n
Основной контент
\n
Подвал
\n\nГруппировка элементов \n
\n

Заголовок

\n

Текст внутри карточки

\n
\n\n🚩Когда использовать ``? \n\n используется для выделения части текста или небольших элементов. Это строчный элемент, который не переносится на новую строку. \n\n🚩Примеры использования `` \n\nВыделение части текста \n

Сегодня солнечная погода.

\n\nИконки, кнопки и маленькие элементы \n\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-02-15T09:05:29Z","dateModified":"2026-02-15T09:05:29Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2666},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":7}]}},{"@type":"ListItem","position":14,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2392","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2392","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2392","headline":"🤔 Что такое протокол SOAP? SOAP (Simple Object Access Protocol) — это протокол обмена структурированными сооб…","articleBody":"🤔 Что такое протокол SOAP?\n\nSOAP (Simple Object Access Protocol) — это протокол обмена структурированными сообщениями по сети, основанный на XML. Часто используется в веб-сервисах. Поддерживает строгую спецификацию, расширенные механизмы безопасности, но сложен и тяжелее, чем REST.\n\nСтавь 👍 если знал ответ, 🔥 если нет\nЗабирай 📚 Базу знаний","datePublished":"2026-02-14T16:10:31Z","dateModified":"2026-02-14T16:10:31Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2292},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":8},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":5}]}},{"@type":"ListItem","position":15,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2391","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2391","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2391","headline":"🤔 Как с помощью js можно передвигать вперед/назад по истории браузера? В JavaScript можно перемещаться вперед…","articleBody":"🤔 Как с помощью js можно передвигать вперед/назад по истории браузера?\n\nВ JavaScript можно перемещаться вперед и назад по истории браузера с помощью объекта window.history. \n\n🟠Использование `history.back()` и `history.forward()`\nЭти методы аналогичны кнопкам \"Назад\" и \"Вперед\" в браузере. \nhistory.back(); // Перемещение на одну страницу назад\nhistory.forward(); // Перемещение на одну страницу вперед\n\nПример кнопок \"Назад\" и \"Вперед\"\n\n\n\n🟠Использование `history.go(n)`\nЭтот метод позволяет перемещаться на определенное количество шагов: \nhistory.go(-1) – назад на 1 страницу \nhistory.go(1) – вперед на 1 страницу \nhistory.go(-2) – назад на 2 страницы \nhistory.go(-2); // Перейти на две страницы назад\nhistory.go(3); // Перейти на три страницы вперед\n\n🟠Получение длины истории `history.length`\nЕсли нужно узнать, сколько страниц в истории текущей сессии: \nconsole.log(history.length); // Количество записей в истории\n\n🟠Манипуляции с историей: `pushState()` и `replaceState()` \nЕсли нужно изменить URL без перезагрузки страницы, можно использовать: \nhistory.pushState(state, title, url)\nДобавляет новый URL в историю (как будто пользователь перешел по ссылке). \nhistory.pushState({ page: 1 }, \"Title 1\", \"/page1\");\n\nhistory.replaceState(state, title, url)\nЗаменяет текущий URL (не добавляет новую запись в историю). \nhistory.replaceState({ page: 2 }, \"Title 2\", \"/page2\");\n\nПример динамического изменения истории: \ndocument.querySelector(\"button\").addEventListener(\"click\", () => {\n history.pushState({ page: \"about\" }, \"About Page\", \"/about\");\n});\n\n🟠Отслеживание изменений истории `popstate`\nКогда пользователь нажимает \"Назад\" или \"Вперед\", можно реагировать с помощью события popstate\nwindow.addEventListener(\"popstate\", (event) => {\n console.log(\"Текущий state:\", event.state);\n});\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-02-14T09:05:29Z","dateModified":"2026-02-14T09:05:29Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2434},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":16}]}},{"@type":"ListItem","position":16,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2390","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2390","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2390","headline":"🤔 В каком случае функция меняет контекст? Контекст функции может измениться при использовании методов bind, c…","articleBody":"🤔 В каком случае функция меняет контекст?\n\nКонтекст функции может измениться при использовании методов bind, call, apply, при вызове функции как метода объекта или в стрелочных функциях, где контекст фиксирован.\n\nСтавь 👍 если знал ответ, 🔥 если нет\nЗабирай 📚 Базу знаний","datePublished":"2026-02-13T16:10:30Z","dateModified":"2026-02-13T16:10:30Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2131},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":8}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2389","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2389","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2389","headline":"🤔 Как отменить обтекание картинки текстом? Когда мы добавляем картинку в HTML, текст по умолчанию может обтек…","articleBody":"🤔 Как отменить обтекание картинки текстом?\n\nКогда мы добавляем картинку в HTML, текст по умолчанию может обтекать её, если используется float. \n\n🚩Отмена обтекания с `clear: both;` \n\nЕсли изображение обтекается текстом из-за float, нужно очистить обтекание с помощью clear: both;. \n\n

Этот текст не будет обтекать картинку.

\n.float-img {\n float: left; /* Изображение обтекается текстом */\n margin-right: 10px;\n}\n\n.clear-text {\n clear: both; /* Останавливает обтекание */\n}\n\n🚩Сделать изображение блочным (`display: block;`) \n\nПо умолчанию img – inline-block элемент, поэтому текст может располагаться рядом. Если сделать его display: block;, текст уйдёт вниз. \nimg {\n display: block;\n margin: 10px auto; /* Центрирование */\n}\n\n🚩Использовать `overflow: hidden;` для предотвращения наложений \n\nЕсли у родителя есть float, можно использовать overflow: hidden; для очистки потока. \n.container {\n overflow: hidden; /* Очищает обтекание */\n}\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-02-13T09:05:29Z","dateModified":"2026-02-13T09:05:29Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2417},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":9}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2388","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2388","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2388","headline":"🤔 В каких случаях используются array.forEach и array.map? - forEach используется, когда нужно выполнить дейст…","articleBody":"🤔 В каких случаях используются array.forEach и array.map?\n\n- forEach используется, когда нужно выполнить действие над каждым элементом без возврата значения (например, лог или побочный эффект).\n- map используется, когда нужно создать новый массив, преобразуя каждый элемент. Он возвращает результат, в отличие от forEach.\n\nСтавь 👍 если знал ответ, 🔥 если нет\nЗабирай 📚 Базу знаний","datePublished":"2026-02-12T16:10:31Z","dateModified":"2026-02-12T16:10:31Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2253},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":20},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":8}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2387","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2387","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2387","headline":"🤔 Зачем нужен docker? Это инструмент для создания, развертывания и управления контейнерами. Контейнер – это и…","articleBody":"🤔 Зачем нужен docker?\n\nЭто инструмент для создания, развертывания и управления контейнерами. Контейнер – это изолированная среда, которая содержит всё необходимое для работы приложения: код, зависимости, библиотеки, конфигурации. \n\n🚩Почему нужен Docker? \n\n🟠Решает проблему \"работает у меня, но не у тебя\" \nВ разных средах могут быть разные версии зависимостей (Node.js, Python, базы данных). С Docker всё упаковано в контейнер, и приложение работает одинаково на любом сервере. \n\n🟠Автоматизирует развертывание \nБез Docker развертывание – это настройка сервера, установка зависимостей, конфигурация окружения. С Docker – просто запускаем контейнер. \n\n🟠Легко масштабировать \nDocker-контейнеры можно клонировать и запускать на разных серверах (например, в Kubernetes). \n\n🟠Разделяет зависимости \nКаждое приложение работает в изолированной среде, и конфликты библиотек исключены. \n\n🟠Работает везде (Windows, Mac, Linux, серверы, облако) \nКонтейнер можно запустить где угодно, где установлен Docker. \n\n🚩Как работает Docker? \n\n🟠Создаем `Dockerfile` (инструкция для сборки контейнера) \nПример для Node.js-приложения \n# Базовый образ с Node.js\nFROM node:18\n\n# Устанавливаем рабочую директорию\nWORKDIR /app\n\n# Копируем файлы проекта\nCOPY package.json ./\nRUN npm install\nCOPY . .\n\n# Запускаем приложение\nCMD [\"node\", \"server.js\"]\n\nСобираем образ Docker (создаем \"упакованный\" контейнер) \ndocker build -t my-app .\n\nЗапускаем контейнер\ndocker run -p 3000:3000 my-app\n\nСтавь 👍 и забирай 📚 Базу знаний","datePublished":"2026-02-12T09:05:29Z","dateModified":"2026-02-12T09:05:29Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2413},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":13},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":26}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2386","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2386","mainEntityOfPage":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru/posts/2386","headline":"🤔 Что такое secure (\"безопасные\") cookies? Secure-cookie — это cookie, которое отправляется только по защищён…","articleBody":"🤔 Что такое secure (\"безопасные\") cookies?\n\nSecure-cookie — это cookie, которое отправляется только по защищённым HTTPS-соединениям. Оно защищает данные от перехвата, особенно при передаче конфиденциальной информации, например, сессионных токенов.\n\nСтавь 👍 если знал ответ, 🔥 если нет\nЗабирай 📚 Базу знаний","datePublished":"2026-02-11T16:10:30Z","dateModified":"2026-02-11T16:10:30Z","author":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"publisher":{"@type":"Organization","name":"Frontend | Вопросы собесов","url":"https://telemetr.io/ar/channels/1917151177-easy_javascript_ru","image":"https://img.telemetr.io/c/25KaBb/5431453649143450783?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":2326},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":10},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":8}]}}]}
🤔 Что такое meta теги? Meta-теги – это специальные HTML-теги, которые содержат метаинформацию о веб-странице. Они располагаются внутри <head> и не отображаются на самой странице, но помогают браузерам, поисковым системам и социальным сетям правильно обрабатывать и отображать страницу. 🚩Зачем нужны meta-теги? Улучшают SEO (поисковую оптимизацию) Управляют отображением в соцсетях и поисковиках Настраивают адаптивность страницы (например, на мобильных устройствах) Определяют кодировку, язык и авторство страницы 🚩Основные meta-теги с примерами Кодировка страницы
<meta charset="UTF-8">
Описание страницы (SEO)
<meta name="description" content="Лучший сайт с рецептами вкусных блюд!">
Ключевые слова (SEO, устарело)
<meta name="keywords" content="рецепты, еда, кулинария, блюда">
Автор страницы
<meta name="author" content="Иван Иванов">
Запрет индексации страницы
<meta name="robots" content="noindex, nofollow">
Адаптивность на мобильных устройствах
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Социальные сети (Open Graph, Twitter Cards) Facebook и другие соцсети (Open Graph)
<meta property="og:title" content="Вкусные рецепты">
<meta property="og:description" content="Попробуйте лучшие блюда со всего мира!">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:url" content="https://example.com">
Twitter-карточки
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Рецепты для гурманов">
<meta name="twitter:image" content="https://example.com/image.jpg">
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое режим совместимости (quirks mode)? Это режим отображения страницы в браузере с ошибками, характерными для старых версий IE. Включается, если DOCTYPE не задан или задан некорректно. Может приводить к нестандартному поведению CSS и DOM. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Завтра конец акции на возможность приобрести PRO тариф по цене одного года Доступный функционал включает базы вопросов с собе
Завтра конец акции на возможность приобрести PRO тариф по цене одного года Доступный функционал включает базы вопросов с собеседований, задач для live-coding, реальных интервью и тестовых заданий от топ-компаний, а также аналитику требований для резюме и тренажеры с режимом симуляции собеседования под конкретную компанию. Акция до 20 февраля (включительно) на PRO-тариф. Покупаешь сейчас один раз — пользуешься всю жизнь без лимита, включая все будущие функции. 👉 Смотри подробности тарифа и покупай на https://easyoffer.ru/

🤔 Что такое нечистая функция? Нечистая функция (impure function) – это функция, результат которой зависит от внешних данных или побочных эффектов. При одном и том же входном значении она может возвращать разные результаты, что делает её непредсказуемой. 🚩Признаки нечистой функции Зависит от внешнего состояния Изменяет глобальные переменные Вызывает побочные эффекты (запросы, изменения DOM, логирование, изменение переданных аргументов и т. д.) 🚩Примеры нечистых функций Использует внешнюю переменную (зависит от внешнего состояния)
let count = 0;

function increment() {
    count += 1; 
    return count;
}

console.log(increment()); // 1
console.log(increment()); // 2 (результат меняется при каждом вызове)
Модифицирует переданный аргумент
function addElement(arr, item) {
    arr.push(item); // изменяет оригинальный массив
    return arr;
}

let numbers = [1, 2, 3];
console.log(addElement(numbers, 4)); // [1, 2, 3, 4]
console.log(numbers); // [1, 2, 3, 4] (исходный массив изменён)
Выполняет побочные эффекты (например, изменяет DOM)
function changeTitle(newTitle) {
    document.title = newTitle;
}

changeTitle("Новая страница");
console.log(document.title); // "Новая страница"
Генерирует случайное значение
function getRandomNumber() {
    return Math.random();
}

console.log(getRandomNumber()); // 0.37485647 (разный результат при каждом вызове)
🚩Чем отличается от чистой функции? Чистая функция (pure function) всегда возвращает один и тот же результат при одинаковых входных данных и не изменяет внешние состояния. Чистый вариант функции addElement() (не меняет исходный массив)
function addElementPure(arr, item) {
    return [...arr, item]; // создаёт новый массив, не изменяя старый
}

let numbers = [1, 2, 3];
console.log(addElementPure(numbers, 4)); // [1, 2, 3, 4]
console.log(numbers); // [1, 2, 3] (исходный массив не изменился)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что известно про обобщённые типы? Обобщённые типы (generics) позволяют писать универсальный и типобезопасный код, не зависящий от конкретных типов данных. Они часто применяются для функций, классов и интерфейсов, которым нужно работать с разными типами, но при этом сохранять строгую типизацию. Такой подход помогает избежать дублирования кода и повышает гибкость без потери контроля типов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие используешь подходы для написания приложения которую проще поддерживать, чем делать первоначальную разработку? При разработке frontend-приложений, которые в будущем будет проще поддерживать и масштабировать, я придерживаюсь ряда ключевых подходов. 🟠Разделение ответственности (Separation of Concerns) Это значит, что код должен быть разделен по зонам ответственности. В frontend-разработке это проявляется в: Чистом разделении логики, представления и данных (например, с помощью архитектуры MVC, MVVM или FLUX). Использовании компонентов в React/Vue или шаблонов в Angular. Разделении CSS, JS и HTML, либо использовании методологий, где стили хранятся рядом с компонентом (CSS Modules, Styled Components). Вместо того, чтобы писать всю логику и разметку в одном файле:
function App() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(count + 1)}>Count: {count}</button>;
}
Я разделяю бизнес-логику и представление
// CounterLogic.js
export function useCounter() {
  const [count, setCount] = useState(0);
  const increment = () => setCount(count + 1);
  return { count, increment };
}

// Counter.js
import { useCounter } from "./CounterLogic";
function Counter() {
  const { count, increment } = useCounter();
  return <button onClick={increment}>Count: {count}</button>;
}
🟠Компонентный подход и повторное использование кода Frontend-приложения должны строиться из переиспользуемых и изолированных компонентов. Это уменьшает дублирование кода и делает его понятным.
// Button.js (переиспользуемый компонент)
function Button({ onClick, children }) {
  return <button onClick={onClick}>{children}</button>;
}

// Counter.js (использует Button)
function Counter() {
  const [count, setCount] = useState(0);
  return <Button onClick={() => setCount(count + 1)}>Count: {count}</Button>;
}
🟠Чистый код и читаемость Код должен быть понятным не только мне, но и другим разработчикам. Понятные имена переменных и функций. Вместо x → userAge, вместо doSmth() → calculateTotalPrice(). Меньше вложенности. Вместо кучи if и else, лучше использовать early return. Разбиение кода на модули. Один файл = одна зона ответственности.
function getDiscountedPrice(price, discount) {
  if (discount <= 0) return price;
  return price - price * (discount / 100);
}
🟠Состояние приложения: локальное vs глобальное В зависимости от сложности приложения нужно правильно управлять состоянием: Локальное состояние – useState (React), ref (Vue) для простых данных внутри компонента. Глобальное состояние – Redux, MobX, Zustand, Pinia, Context API – когда данные нужны многим компонентам. Серверное состояние – React Query, SWR – когда данные приходят с API и их нужно кешировать. 🟠Следование принципам SOLID и DRY DRY (Don't Repeat Yourself) – не повторяем код, используем функции, хуки, компоненты. SOLID – например, принцип единственной ответственности (Single Responsibility Principle) гласит, что каждый компонент или функция должны решать только одну задачу.
function sendEmailAndSaveToDB(user) {
  sendEmail(user.email);
  saveUserToDatabase(user);
}
Лучше разделить логику
function sendEmail(email) { /* отправка письма */ }
function saveUserToDatabase(user) { /* сохранение в БД */ }
function registerUser(user) {
  sendEmail(user.email);
  saveUserToDatabase(user);
}
🟠Использование TypeScript TypeScript помогает избежать ошибок и делать код предсказуемым.
type User = {
  id: number;
  name: string;
};

function getUserName(user: User): string {
  return user.name;
}
🟠Документация и кодстайл ESLint + Prettier → автоформатирование и проверка стиля. JSDoc/TypeScript → документация функций и типов данных. Storybook → для документирования UI-компонентов. Ставь 👍 и забирай 📚 Базу знаний

🤔 Сравни MobX с другими системами управления state. - Redux — декларативный, явный, работает по принципу store + reducer + dispatch; - MobX — императивный, реактивный, простой в использовании; - Recoil / Zustand — гибридные и легковесные решения. MobX лучше, когда нужно меньше boilerplate и больше магии, Redux — для строгой предсказуемости и логирования. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

🤔 Что такое боксинг? Боксинг — это автоматическое оборачивание примитива в объект. Например, строка "abc" становится объектом String, если вызываешь метод: "abc".length. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Пожизненная PRO подписка на easyoffer по цене одного года. Акция до 20 февраля. Покупаешь сейчас один раз – пользуешься всю ж
Пожизненная PRO подписка на easyoffer по цене одного года. Акция до 20 февраля. Покупаешь сейчас один раз – пользуешься всю жизнь без лимита, включая все будущие функции. Запланированные новые фичи на ближайшие пол года: 1. Агрегатор вакансий 2. Улучшение резюме, чтобы проходить ATS системы 3. Генерация уникального резюме и сопроводительного письма под вакансию Покупай на https://easyoffer.ru/

🤔 Что такое amp страницы? AMP (Accelerated Mobile Pages) — это технология от Google, которая позволяет создавать очень быстрые и легкие веб-страницы для мобильных устройств. AMP-страницы загружаются почти мгновенно, потому что: Используют оптимизированный HTML (AMP HTML) Ограничивают использование JavaScript Подключают Google AMP Cache для мгновенной загрузки 🚩Зачем нужны AMP? Ускоряют загрузку страниц → полезно для мобильных пользователей Улучшают SEO → Google любит быстрые сайты Увеличивают CTR → в поиске AMP-страницы помечены ⚡️ и привлекают внимание Снижают нагрузку на сервер 🚩Как создать AMP-страницу? AMP-страница – это обычный HTML, но с ограничениями и своими тегами.
<!DOCTYPE html>
<html ⚡️ lang="ru">
<head>
  <meta charset="UTF-8">
  <title>AMP Страница</title>
  <link rel="canonical" href="https://example.com/normal-page.html">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script async src="https://cdn.ampproject.org/v0.js"></script>
  <style amp-boilerplate>
    body { visibility: hidden; }
  </style>
  <noscript>
    <style amp-boilerplate>
      body { visibility: visible; }
    </style>
  </noscript>
</head>
<body>
  <h1>Привет, это AMP!</h1>
  <amp-img src="image.jpg" width="600" height="400" layout="responsive"></amp-img>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём отличие for от while? - for — когда знаем начало и конец. - while — когда повторяем пока выполняется условие. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Когда используются теги div и span? <div> и <span> — это самые универсальные HTML-теги, но у них разные роли: <div> — блочный контейнер (для структуры). <span> — строчный контейнер (для оформления текста). 🚩Примеры использования `<div>` Разметка секций страницы
<div class="header">Навигация</div>
<div class="content">Основной контент</div>
<div class="footer">Подвал</div>
Группировка элементов
<div class="card">
  <h2>Заголовок</h2>
  <p>Текст внутри карточки</p>
</div>
🚩Когда использовать `<span>`? <span> используется для выделения части текста или небольших элементов. Это строчный элемент, который не переносится на новую строку. 🚩Примеры использования `<span>` Выделение части текста
<p>Сегодня <span class="highlight">солнечная погода</span>.</p>
Иконки, кнопки и маленькие элементы
<button>
  <span class="icon">🔍</span> Поиск
</button>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое протокол SOAP? SOAP (Simple Object Access Protocol) — это протокол обмена структурированными сообщениями по сети, основанный на XML. Часто используется в веб-сервисах. Поддерживает строгую спецификацию, расширенные механизмы безопасности, но сложен и тяжелее, чем REST. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как с помощью js можно передвигать вперед/назад по истории браузера? В JavaScript можно перемещаться вперед и назад по истории браузера с помощью объекта window.history. 🟠Использование `history.back()` и `history.forward()` Эти методы аналогичны кнопкам "Назад" и "Вперед" в браузере.
history.back();    // Перемещение на одну страницу назад
history.forward(); // Перемещение на одну страницу вперед
Пример кнопок "Назад" и "Вперед"
<button onclick="history.back()">⬅️ Назад</button>
<button onclick="history.forward()">Вперед ➡️</button>
🟠Использование `history.go(n)` Этот метод позволяет перемещаться на определенное количество шагов: history.go(-1) – назад на 1 страницу history.go(1) – вперед на 1 страницу history.go(-2) – назад на 2 страницы
history.go(-2); // Перейти на две страницы назад
history.go(3);  // Перейти на три страницы вперед
🟠Получение длины истории `history.length` Если нужно узнать, сколько страниц в истории текущей сессии:
console.log(history.length); // Количество записей в истории
🟠Манипуляции с историей: `pushState()` и `replaceState()` Если нужно изменить URL без перезагрузки страницы, можно использовать: history.pushState(state, title, url) Добавляет новый URL в историю (как будто пользователь перешел по ссылке).
history.pushState({ page: 1 }, "Title 1", "/page1");
history.replaceState(state, title, url) Заменяет текущий URL (не добавляет новую запись в историю).
history.replaceState({ page: 2 }, "Title 2", "/page2");
Пример динамического изменения истории:
document.querySelector("button").addEventListener("click", () => {
  history.pushState({ page: "about" }, "About Page", "/about");
});
🟠Отслеживание изменений истории `popstate` Когда пользователь нажимает "Назад" или "Вперед", можно реагировать с помощью события popstate
window.addEventListener("popstate", (event) => {
  console.log("Текущий state:", event.state);
});
Ставь 👍 и забирай 📚 Базу знаний

🤔 В каком случае функция меняет контекст? Контекст функции может измениться при использовании методов bind, call, apply, при вызове функции как метода объекта или в стрелочных функциях, где контекст фиксирован. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как отменить обтекание картинки текстом? Когда мы добавляем картинку в HTML, текст по умолчанию может обтекать её, если используется float. 🚩Отмена обтекания с `clear: both;` Если изображение обтекается текстом из-за float, нужно очистить обтекание с помощью clear: both;.
<img src="image.jpg" class="float-img">
<p class="clear-text">Этот текст не будет обтекать картинку.</p>
.float-img {
  float: left; /* Изображение обтекается текстом */
  margin-right: 10px;
}

.clear-text {
  clear: both; /* Останавливает обтекание */
}
🚩Сделать изображение блочным (`display: block;`) По умолчанию img – inline-block элемент, поэтому текст может располагаться рядом. Если сделать его display: block;, текст уйдёт вниз.
img {
  display: block;
  margin: 10px auto; /* Центрирование */
}
🚩Использовать `overflow: hidden;` для предотвращения наложений Если у родителя есть float, можно использовать overflow: hidden; для очистки потока.
.container {
  overflow: hidden; /* Очищает обтекание */
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 В каких случаях используются array.forEach и array.map? - forEach используется, когда нужно выполнить действие над каждым элементом без возврата значения (например, лог или побочный эффект). - map используется, когда нужно создать новый массив, преобразуя каждый элемент. Он возвращает результат, в отличие от forEach. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужен docker? Это инструмент для создания, развертывания и управления контейнерами. Контейнер – это изолированная среда, которая содержит всё необходимое для работы приложения: код, зависимости, библиотеки, конфигурации. 🚩Почему нужен Docker? 🟠Решает проблему "работает у меня, но не у тебя" В разных средах могут быть разные версии зависимостей (Node.js, Python, базы данных). С Docker всё упаковано в контейнер, и приложение работает одинаково на любом сервере. 🟠Автоматизирует развертывание Без Docker развертывание – это настройка сервера, установка зависимостей, конфигурация окружения. С Docker – просто запускаем контейнер. 🟠Легко масштабировать Docker-контейнеры можно клонировать и запускать на разных серверах (например, в Kubernetes). 🟠Разделяет зависимости Каждое приложение работает в изолированной среде, и конфликты библиотек исключены. 🟠Работает везде (Windows, Mac, Linux, серверы, облако) Контейнер можно запустить где угодно, где установлен Docker. 🚩Как работает Docker? 🟠Создаем `Dockerfile` (инструкция для сборки контейнера) Пример для Node.js-приложения
# Базовый образ с Node.js
FROM node:18

# Устанавливаем рабочую директорию
WORKDIR /app

# Копируем файлы проекта
COPY package.json ./
RUN npm install
COPY . .

# Запускаем приложение
CMD ["node", "server.js"]
Собираем образ Docker (создаем "упакованный" контейнер)
docker build -t my-app .
Запускаем контейнер
docker run -p 3000:3000 my-app
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое secure ("безопасные") cookies? Secure-cookie — это cookie, которое отправляется только по защищённым HTTPS-соединениям. Оно защищает данные от перехвата, особенно при передаче конфиденциальной информации, например, сессионных токенов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний