Frontend | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Больше📈 Аналитический обзор Telegram-канала Frontend | Вопросы собесов
Канал Frontend | Вопросы собесов (@easy_javascript_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 17 310 подписчиков, занимая 7 485 место в категории Технологии и приложения и 37 823 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 17 310 подписчиков.
Согласно последним данным от 07 ноября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -292, а за последние 24 часа — -16, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.40%. В первые 24 часа после публикации контент обычно набирает 4.41% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 107 просмотров. В течение первых суток публикация набирает 764 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, браузер, html, border, flex.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Благодаря высокой частоте обновлений (последние данные получены 08 ноября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
// pages/index.js
import React from 'react';
const HomePage = ({ data }) => (
<div>
<h1>Home Page</h1>
<p>{data}</p>
</div>
);
export async function getServerSideProps() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return {
props: { data },
};
}
export default HomePage;
➕ Серверный рендеринг (SSR): Генерирует HTML на сервере и отправляет его в браузер. Обеспечивает лучшее SEO и более быстрый первый рендер, но может увеличить нагрузку на сервер и иметь более медленное взаимодействие после первого рендера.
➕ Одностраничные приложения (SPA): Загружают и выполняют весь JavaScript на клиенте, обеспечивая быстрые и плавные взаимодействия после начальной загрузки, но могут иметь проблемы с SEO и более долгое время первой загрузки.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых<script> тег, который будет выполнен браузером и может украсть данные пользователей или выполнить другие вредоносные действия.
const userInput = "<img src='x' onerror='alert(\"XSS Attack\")'>";
document.getElementById('output').innerHTML = userInput;
🤔 Проблемы с корректностью рендеринга
2️⃣ Неправильный рендеринг HTML:
➕ Строка, содержащая HTML-код, может быть неправильно интерпретирована или отрендерена браузером. Это может привести к некорректному отображению страницы или нарушению её структуры.
const invalidHTML = "<div>Unclosed tag";
document.getElementById('output').innerHTML = invalidHTML;
// Это может привести к неправильному отображению содержимого.
🤔 Как безопасно работать с динамическим контентом
1️⃣ Использование методов DOM API:
➕ Вместо передачи строк, рекомендуется использовать методы DOM API, такие как createElement, appendChild, textContent и другие. Эти методы позволяют безопасно добавлять элементы и текст в DOM.
const userInput = "Safe text";
const outputElement = document.getElementById('output');
const textNode = document.createTextNode(userInput);
outputElement.appendChild(textNode);
2️⃣ Экранирование данных:
➕ Если необходимо вставить HTML-код из строки, можно использовать методы, которые экранируют потенциально опасные символы.
const userInput = "<div>Safe content</div>";
const outputElement = document.getElementById('output');
outputElement.textContent = userInput;
// Использование textContent гарантирует безопасное добавление текста.
🤔 Примеры
1️⃣ Добавление текстового контента:
const userInput = "Some user-provided text";
const outputElement = document.getElementById('output');
outputElement.textContent = userInput;
2️⃣ Создание и добавление элементов:
const userInput = "Some user-provided text";
const outputElement = document.getElementById('output');
const paragraph = document.createElement('p');
paragraph.textContent = userInput;
outputElement.appendChild(paragraph);
Передача строки напрямую может быть небезопасной и привести к XSS-атакам и некорректному рендерингу. Вместо этого рекомендуется использовать методы DOM API, такие как createElement, appendChild, и textContent, для безопасного и правильного добавления элементов и текста.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых// webpack.config.js
module.exports = {
entry: './src/index.js',
};
2️⃣ Выходные точки (Output)
➕ Выходные точки определяют, где Webpack должен сохранить сгенерированные файлы и как их называть.
// webpack.config.js
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
};
3️⃣ Загрузчики (Loaders)
➕ Загрузчики используются для обработки различных типов файлов. Они позволяют вам преобразовывать файлы перед их включением в сборку.
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env'],
},
},
},
],
},
};
Webpack — это инструмент для сборки модулей, который объединяет и оптимизирует различные ресурсы приложения (JavaScript, CSS, изображения и т.д.) в один или несколько файлов для загрузки в браузер. Он использует входные точки (entry points), выходные точки (output), загрузчики (loaders) и плагины (plugins) для управления процессом сборки и обеспечения оптимальной производительности.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхnpm install redux react-redux
Создание действий (actions)
// actions.js
export const increment = () => ({
type: 'INCREMENT',
});
export const decrement = () => ({
type: 'DECREMENT',
});
Создание редюсера (reducer)
// reducer.js
const initialState = {
count: 0,
};
const counterReducer = (state = initialState, action) => {
switch (action.type) {
case 'INCREMENT':
return {
...state,
count: state.count + 1,
};
case 'DECREMENT':
return {
...state,
count: state.count - 1,
};
default:
return state;
}
};
export default counterReducer;
Создание хранилища (store)
// store.js
import { createStore } from 'redux';
import counterReducer from './reducer';
const store = createStore(counterReducer);
export default store;
Подключение Redux к React
// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root')
);
Использование состояния и действий
// App.js
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './actions';
const App = () => {
const count = useSelector(state => state.count);
const dispatch = useDispatch();
return (
<div>
<h1>Counter: {count}</h1>
<button onClick={() => dispatch(increment())}>Increment</button>
<button onClick={() => dispatch(decrement())}>Decrement</button>
</div>
);
};
export default App;
🤔 Преимущества
1️⃣ Централизованное управление состоянием:
➕ Все состояние приложения находится в одном месте, что упрощает управление и отладку.
2️⃣ Предсказуемость:
➕ Поскольку редюсеры являются чистыми функциями, их поведение предсказуемо, что облегчает тестирование и отладку.
3️⃣ Легкость тестирования:
➕ Действия и редюсеры легко тестировать из-за их чистоты и изолированности.
4️⃣ Возможность временной петли (time travel):
➕ Инструменты разработки Redux позволяют перемещаться по истории состояний, что облегчает отладку.
Redux — это библиотека для управления состоянием приложений, предоставляющая централизованное хранилище для всех состояний. Основные концепции Redux включают хранилище (store), действия (actions), редюсеры (reducers), диспетчеры (dispatch) и подписки (subscriptions). Redux часто используется с React, но может быть применен и с другими библиотеками.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых<header>: Представляет верхний колонтитул документа или секции.
➕ <nav>: Определяет набор навигационных ссылок.
➕ <main>: Содержит основное содержимое страницы.
➕ <section>: Определяет секцию в документе.
➕ <article>: Представляет самостоятельный элемент контента, который можно независимо распространять.
➕ <aside>: Определяет содержимое, связанное с основным содержимым, но не являющееся его частью.
➕ <footer>: Представляет нижний колонтитул документа или секции.
2️⃣ Текстовые элементы:
➕ <strong>: Указывает на важность текста (часто отображается жирным шрифтом).
➕ <em>: Выделяет текст, который имеет акцент или интонацию (часто отображается курсивом).
➕ <blockquote>: Оформляет цитату.
➕ <cite>: Указывает на источник или заглавие работы.
➕ <code>: Определяет блок кода.
➕ <abbr>: Определяет аббревиатуру.
🤔 Пример:
<p>Это <strong>важное</strong> сообщение.</p>
<p>Он сказал: <blockquote>Это пример цитаты.</blockquote></p>
<p>Код: <code>console.log('Hello, World!');</code></p>
<p>Слово <abbr title="Hypertext Markup Language">HTML</abbr> означает язык гипертекстовой разметки.</p>
🤔 Важность использования
1️⃣Ясность структуры и содержания:
➕ Использование правильных семантических элементов делает структуру и содержание веб-страницы более ясными и понятными.
2️⃣ Повышение эффективности разработки:
➕ Семантический HTML упрощает сотрудничество между разработчиками и дизайнерами, а также облегчает процесс отладки и поддержания кода.
➕Долгосрочная поддержка:
➕Веб-стандарты и технологии продолжают развиваться, и использование семантического HTML помогает обеспечить долгосрочную поддержку и совместимость вашего сайта с новыми инструментами и технологиями.
Семантика в HTML означает использование элементов и тегов, которые четко и понятно описывают содержимое веб-страницы. Это улучшает читаемость и поддержку кода, SEO и доступность. Семантический HTML включает такие элементы, как <header>, <nav>, <main>, <section>, <article>, <footer>, <strong>, <em>, <blockquote>, <cite>, <code> и <abbr>, которые помогают структурировать и описывать содержимое страниц.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых<script> или ссылки на внешние JavaScript-файлы, браузер загружает и выполняет эти скрипты. JavaScript может изменять DOM, CSSOM и влиять на отрисовку страницы в реальном времени.
9️⃣ Обработка событий
После первоначальной загрузки и отрисовки страницы браузер начинает обрабатывать события, такие как клики, ввод данных, перемещение мыши и другие взаимодействия пользователя. JavaScript-код может быть привязан к этим событиям, чтобы обеспечить динамическое поведение страницы.
Итоговый процесс
1️⃣Запрос страницы: Браузер отправляет HTTP-запрос и получает HTML-документ.
2️⃣Парсинг HTML: Создание DOM-дерева.
3️⃣Загрузка ресурсов: Загрузка CSS, JavaScript и других ресурсов.
4️⃣Парсинг CSS: Создание CSSOM и объединение с DOM для создания рендер-дерева.
5️⃣Макет: Расчет размеров и положения элементов.
6️⃣Отрисовка: Преобразование рендер-дерева в пиксели на экране.
7️⃣Выполнение JavaScript: Изменение DOM и CSSOM, повторная отрисовка при необходимости.
8️⃣Обработка событий: Реакция на взаимодействие пользователя с веб-страницей.
HTML-документ преобразуется в веб-страницу в браузере через процесс, включающий парсинг HTML, создание DOM-дерева, загрузку и применение CSS, расчет макета, отрисовку элементов на экране и выполнение JavaScript.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхvar предоставляет функциональную область видимости и большую гибкость за счёт возможности переназначения, но это может привести к ошибкам из-за непреднамеренных изменений или переназначений. const используется для объявления переменных, значение которых не должно изменяться, что помогает предотвратить случайное переназначение и делает код более предсказуемым.
Ставь 👍 если знал ответ и 🔥 если нет git init
✅Клонирование удаленного репозитория:
git clone <url>
2️⃣Добавление файлов в репозиторий
Добавление новых или измененных файлов в индекс (стейджинг).
✅Просмотр состояния репозитория:
git status
✅Добавление файла в индекс:
git add <file>
✅Добавление всех измененных файлов:
git add .
3️⃣Фиксация изменений
Сохранение изменений в истории репозитория с комментарием.
✅Создание коммита:
git commit -m "Сообщение коммита"
4️⃣Работа с ветками
Создание, переключение и слияние веток.
✅Создание новой ветки:
git branch <branch-name>
✅Переключение на другую ветку:
git checkout <branch-name>
✅Создание и переключение на новую ветку:
git checkout -b <branch-name>
✅Слияние веток:
git merge <branch-name>
5️⃣Работа с удаленными репозиториями
Добавление удаленного репозитория, отправка и получение изменений.
✅Добавление удаленного репозитория:
git remote add origin <url>
✅Отправка изменений в удаленный репозиторий:
git push origin <branch-name>
Пример:
git push origin main
✅Получение изменений из удаленного репозитория:
git pull origin <branch-name>
✅Клонирование удаленного репозитория:
git clone <url>
6️⃣Просмотр истории коммитов
✅Просмотр истории коммитов:
git log
7️⃣Разрешение конфликтов
Когда изменения из разных веток конфликтуют, необходимо разрешить конфликты вручную.
✅Начало слияния, вызвавшего конфликт:
git merge <branch-name>
✅Редактирование конфликтующих файлов:
Откройте файлы с конфликтами в текстовом редакторе и вручную разрешите конфликты.
✅Добавление разрешенных конфликтов в индекс:
git add <file>
✅Завершение после разрешения конфликтов:
git commit
Рассмотрим пример полного рабочего процесса с Git:
1️⃣Инициализация репозитория:
git init
2️⃣Добавление удаленного репозитория:
git remote add origin https://github.com/username/repository.git
3️⃣Создание новой ветки для новой фичи:
git checkout -b feature/new-feature
4️⃣Добавление и изменение файлов:
echo "Some changes" > file.txt
git add file.txt
git commit -m "Add changes to file.txt"
5️⃣Отправка изменений в удаленный репозиторий:
git push origin feature/new-feature
6️⃣Слияние ветки с новой фичей в основную ветку:
git checkout main
git pull origin main
git merge feature/new-feature
git push origin main
Взаимодействие с Git включает инициализацию репозитория, добавление файлов в индекс, фиксацию изменений, работу с ветками и взаимодействие с удаленными репозиториями через набор команд, таких как git init, git add, git commit, git branch, git checkout, git merge, git push, и git pull. Этот процесс позволяет отслеживать изменения в коде, работать над проектом в команде и управлять различными версиями кода.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых// Фронтенд (JavaScript с использованием Fetch API)
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data); // Обработка данных на фронтенде
})
.catch(error => {
console.error('Error:', error);
});
2️⃣Отправка данных:
✅Фронтенд отправляет HTTP POST-запрос на сервер с данными для создания нового ресурса.
✅Бэкенд получает запрос, обрабатывает данные и сохраняет их в базе данных, затем отправляет ответ о статусе операции.
// Фронтенд (JavaScript с использованием Fetch API)
fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => {
console.log(data); // Обработка ответа на фронтенде
})
.catch(error => {
console.error('Error:', error);
});
3️⃣WebSocket
Для взаимодействия в реальном времени между фронтендом и бэкендом используется WebSocket. Он позволяет устанавливать постоянное двустороннее соединение между клиентом и сервером, что полезно для приложений с обновлениями в реальном времени, таких как чаты или онлайн-игры.
// Фронтенд (JavaScript с использованием WebSocket API)
const socket = new WebSocket('ws://example.com/socket');
socket.onopen = () => {
console.log('WebSocket is open now.');
socket.send(JSON.stringify({ message: 'Hello Server!' }));
};
socket.onmessage = (event) => {
console.log('Received:', event.data);
};
socket.onclose = () => {
console.log('WebSocket is closed now.');
};
4️⃣RESTful API и GraphQL
RESTful API: Это стиль архитектуры API, который использует стандартные HTTP методы (GET, POST, PUT, DELETE) для взаимодействия с ресурсами. Каждый ресурс идентифицируется уникальным URL, а данные передаются в формате JSON или XML.
GraphQL: Это язык запросов для API, который позволяет клиенту запрашивать именно те данные, которые ему нужны. В отличие от REST, где каждый ресурс имеет свой URL, в GraphQL есть единая точка доступа (endpoint), и запросы могут быть более гибкими и оптимизированными.
Фронтенд и бэкенд взаимодействуют через HTTP-запросы и ответы. Фронтенд отправляет запросы на сервер, который обрабатывает их и отправляет ответы обратно. Также можно использовать WebSocket для двустороннего взаимодействия в реальном времени. Для организации взаимодействия часто применяются RESTful API и GraphQL.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых