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 разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых