Frontend | Вопросы собесов
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky
Show more📈 Analytical overview of Telegram channel Frontend | Вопросы собесов
Channel Frontend | Вопросы собесов (@easy_javascript_ru) in the Russian language segment is an active participant. Currently, the community unites 18 271 subscribers, ranking 7 328 in the Technologies & Applications category and 36 922 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 18 271 subscribers.
According to the latest data from 18 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -130 over the last 30 days and by -5 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 9.76%. Within the first 24 hours after publication, content typically collects 5.46% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 783 views. Within the first day, a publication typically gains 997 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 9.
- Thematic interests: Content is focused on key topics such as ставь, браузер, html, border, flex.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+T0COHtFzCJkwMDUy
Задачи t.me/+_tcX2w2EmvdmMTgy
Вакансии t.me/+CgCAzIyGHHg0Nzky”
Thanks to the high frequency of updates (latest data received on 19 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
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 разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовыхclass Animal {
constructor(name, species) {
this.name = name;
this.species = species;
}
speak() {
console.log(`${this.name} издает звук.`);
}
}
const dog = new Animal('Рекс', 'Собака');
dog.speak(); // Рекс издает звук.
2️⃣Инкапсуляция
✅Это принцип скрытия внутреннего состояния объекта и предоставление доступа к нему только через методы. Это помогает защитить данные от некорректного использования и улучшает модульность кода.
class Person {
constructor(name, age) {
this.name = name;
let _age = age; // Приватное свойство
this.getAge = function() {
return _age;
}
this.setAge = function(newAge) {
if (newAge > 0) {
_age = newAge;
} else {
console.log('Возраст должен быть положительным числом.');
}
}
}
}
const person = new Person('Иван', 30);
console.log(person.getAge()); // 30
person.setAge(35);
console.log(person.getAge()); // 35
3️⃣Наследование
✅Позволяет одному классу наследовать свойства и методы другого класса, что способствует повторному использованию кода и улучшает его организацию.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(${this.name} издает звук.);
}
}
class Dog extends Animal {
speak() {
console.log(${this.name} лает.);
}
}
const dog = new Dog('Рекс');
dog.speak(); // Рекс лает.
4️⃣Полиморфизм
✅Позволяет методам выполнять разные действия в зависимости от объекта, который вызывает этот метод. Это достигается через переопределение методов в классах-наследниках.
```javascript
class Animal {
speak() {
console.log('Животное издает звук.');
}
}
class Dog extends Animal {
speak() {
console.log('Собака лает.');
}
}
class Cat extends Animal {
speak() {
console.log('Кошка мяукает.');
}
}
const animals = [new Dog(), new Cat()];
animals.forEach(animal => animal.speak());
// Собака лает.
// Кошка мяукает.
Преимущества
1️⃣Улучшенная модульность: Классы и объекты позволяют разбивать код на отдельные, независимые части.
2️⃣Повторное использование кода: Наследование и полиморфизм способствуют повторному использованию кода.
3️⃣Упрощенное управление сложностью: Инкапсуляция помогает скрыть сложность реализации и предоставляет простой интерфейс для взаимодействия с объектами.
4️⃣Повышенная гибкость и расширяемость: Легко добавлять новые функции и изменять существующие без значительного переписывания кода.
ООП — это метод, который организует код в виде объектов и классов. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию. Это помогает создавать модульный, повторно используемый и легко управляемый код.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовыхrender должен быть чистым и идемпотентным. Это означает, что он должен только возвращать JSX для рендеринга и не выполнять побочные эффекты, такие как изменения состояния, запросы к серверу, дорогостоящие вычисления или манипуляции с DOM. Для этих целей следует использовать хуки (например, useEffect) или методы жизненного цикла классовых компонентов.GET /api/users?id=123 HTTP/1.1
Host: www.example.com
2️⃣POST
Описание: Отправляет данные на сервер для создания ресурса или выполнения действия.
Особенности:
✅Изменяет состояние сервера.
✅Данные передаются в теле запроса.
✅Не кэшируется по умолчанию.
POST /api/users HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"name": "John Doe",
"email": "john.doe@example.com"
}
3️⃣PUT
Описание: Отправляет данные на сервер для создания или замены ресурса.
Особенности:
✅Идемпотентный.
✅Данные передаются в теле запроса.
PUT /api/users/123 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"name": "John Doe",
"email": "john.doe@example.com"
}
4️⃣DELETE
Описание: Удаляет ресурс на сервере.
Особенности:
✅Идемпотентный.
DELETE /api/users/123 HTTP/1.1
Host: www.example.com
5️⃣PATCH
Описание: Частично обновляет ресурс на сервере.
Особенности:
✅Не является идемпотентным, хотя в некоторых случаях может быть.
✅Данные передаются в теле запроса.
PATCH /api/users/123 HTTP/1.1
Host: www.example.com
Content-Type: application/json
{
"email": "new.email@example.com"
}
6️⃣HEAD
Описание: Запрашивает только заголовки ресурса, без тела.
Особенности:
✅Идемпотентный.
✅Используется для проверки наличия ресурса, размера, даты последнего изменения и т.д.
HEAD /api/users/123 HTTP/1.1
Host: www.example.com
7️⃣OPTIONS
Описание: Запрашивает поддерживаемые сервером методы для указанного ресурса.
Особенности:
✅Идемпотентный.
✅Используется для CORS-запросов, чтобы определить разрешенные методы и заголовки.
OPTIONS /api/users HTTP/1.1
Host: www.example.com
8️⃣CONNECT
Описание: Устанавливает туннель к серверу, обычно используется для прокси-серверов.
Особенности:
✅Не используется в обычных RESTful API.
CONNECT www.example.com:443 HTTP/1.1
Host: www.example.com
9️⃣TRACE
Описание: Выполняет запрос по пути до целевого ресурса, возвращая запрос в ответе.
Особенности:
✅Используется для диагностики или отладки.
TRACE /api/users HTTP/1.1
Host: www.example.com
Резюме
✅GET: Запрашивает данные, не изменяет состояние сервера.
✅POST: Отправляет данные для создания ресурса, изменяет состояние сервера.
✅PUT: Создает или заменяет ресурс, идемпотентный.
✅DELETE: Удаляет ресурс, идемпотентный.
✅PATCH: Частично обновляет ресурс.
✅HEAD: Запрашивает заголовки ресурса, без тела.
✅OPTIONS: Запрашивает поддерживаемые методы для ресурса.
✅CONNECT: Устанавливает туннель к серверу.
✅TRACE: Выполняет запрос по пути до целевого ресурса для диагностики.
Методы HTTP-запросов включают GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, CONNECT и TRACE. Каждый метод используется для различных типов операций: получения данных, отправки данных, обновления, удаления и диагностики.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых
Available now! Telegram Research 2025 — the year's key insights 
