Frontend | Вопросы собесов
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky
Больше📈 Аналитический обзор Telegram-канала Frontend | Вопросы собесов
Канал Frontend | Вопросы собесов (@easy_javascript_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 18 271 подписчиков, занимая 7 328 место в категории Технологии и приложения и 36 922 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 18 271 подписчиков.
Согласно последним данным от 18 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -130, а за последние 24 часа — -5, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 9.76%. В первые 24 часа после публикации контент обычно набирает 5.46% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 1 783 просмотров. В течение первых суток публикация набирает 997 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 9.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, браузер, html, border, flex.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+T0COHtFzCJkwMDUy
Задачи t.me/+_tcX2w2EmvdmMTgy
Вакансии t.me/+CgCAzIyGHHg0Nzky”
Благодаря высокой частоте обновлений (последние данные получены 19 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
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;
Redux предоставляет централизованное хранилище для состояния приложения, делая управление состоянием предсказуемым и детерминированным. Преимущества включают улучшенную отладку, тестируемость, поддержку и масштабируемость, а также эффективное управление сложными состояниями. Redux хорошо подходит для крупных приложений и позволяет легко интегрироваться с серверным рендерингом.
Ставь 👍 и забирай 📚 Базу знанийВ каждом канале тебя ждёт Гайд по Frontend-разработке: подробный Roadmap для изучения, топ вопросов по проектам и soft skills, список технических вопросов, лайвкодинг-задачи и советы по созданию резюме, которое привлечет внимание работодателей. Всё, чтобы уверенно двигаться к своей цели!Учись. Общайся. Развивайся. Стань частью IT-сообщества! 💪
<b>, <i>, <font> и другие.
🟠Эти элементы позволяли контролировать только базовые стили и оформление, и не было эффективного способа централизованного управления стилями для всего веб-сайта.
Необходимость стандартизации (1994-1996):
🟠С увеличением популярности веба и усложнением веб-страниц, стало ясно, что необходимо разработать стандарт для описания стилей, который позволил бы разделить структуру (HTML) и оформление (стили).
🟠В 1994 году Хокон Виум Ли (Håkon Wium Lie), работавший в CERN (Европейская организация по ядерным исследованиям), предложил концепцию каскадных таблиц стилей (Cascading Style Sheets). Он представил свой проект Тиму Бернерсу-Ли и сообществу разработчиков веб-стандартов.
Создание стандарта CSS (1996):
🟠В 1996 году W3C (World Wide Web Consortium), организация, занимающаяся разработкой и продвижением веб-стандартов, опубликовала первую спецификацию CSS, известную как CSS1.
🟠CSS1 определял основные стили для текста, шрифтов, цветов и элементов интерфейса, таких как отступы и границы.
Развитие CSS (1998 - настоящее время):
🟠В 1998 году была опубликована спецификация CSS2, которая добавила новые возможности, такие как позиционирование элементов, z-index, стили для различных медиа-типов (например, печать) и улучшенная поддержка таблиц.
🟠CSS3, разработка которого началась в начале 2000-х, был разделен на модули, что позволило быстрее и гибче разрабатывать и внедрять новые возможности. CSS3 включает в себя десятки модулей, таких как Flexbox, Grid, анимации, трансформации, градиенты и многое другое.
🚩Важные вехи
CSS1 (1996):
🟠Основные стили для текста и элементов интерфейса.
🟠Поддержка шрифтов, цветов, отступов и границ.
CSS2 (1998):
🟠Позиционирование элементов и z-index.
🟠Стили для различных медиа-типов.
🟠Улучшенная поддержка таблиц и других элементов.
CSS3 (начало 2000-х):
🟠Модульная структура спецификации.
🟠Новые возможности, такие как Flexbox, Grid, анимации, трансформации и градиенты.
В CSS4 (официальной спецификации CSS4 как таковой нет, но многие новые возможности продолжают разрабатываться в рамках модулей CSS3) включены современные инструменты для веб-разработки, такие как переменные (CSS Custom Properties), сложные селекторы, улучшенная типографика и адаптивный дизайн.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Пример CSS</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header>
<h1>Заголовок страницы</h1>
</header>
<main>
<p>Это пример абзаца текста.</p>
</main>
<footer>
<p>© 2024 Все права защищены.</p>
</footer>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Пример страницы</title>
</head>
<body>
<h1>Заголовок страницы</h1>
<p>Это пример абзаца текста.</p>
</body>
</html>
🟠CSS (Cascading Style Sheets): Отвечает за стилизацию веб-страницы. С его помощью можно управлять внешним видом элементов, включая цвета, шрифты, отступы, размеры и расположение. CSS помогает сделать страницы визуально привлекательными и улучшить пользовательский опыт.
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
margin: 0;
padding: 0;
}
h1 {
color: #333;
text-align: center;
}
p {
color: #666;
padding: 10px;
}
🚩Фреймворки и библиотеки
Для упрощения разработки и улучшения эффективности существуют различные фреймворки и библиотеки, которые используются во фронтенд-разработке.
🟠React: Разработанный Facebook, это библиотека для создания пользовательских интерфейсов. React позволяет создавать компоненты — переиспользуемые части интерфейса, которые упрощают разработку и поддержку кода.
import React from 'react';
import ReactDOM from 'react-dom';
function App() {
return (
<div>
<h1>Привет, мир!</h1>
</div>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
🟠Angular: Разработанный Google, это платформа и фреймворк для создания динамичных веб-приложений. Angular предлагает мощные инструменты для управления данными, маршрутизации и разработки сложных приложений.
🚩Инструменты
🟠Webpack: Webpack — это инструмент для сборки модулей, который объединяет различные ресурсы (JavaScript, CSS, изображения) в один или несколько файлов для улучшения производительности и управления зависимостями.
🟠Babel: Babel — это транспайлер, который позволяет использовать современные возможности JavaScript в старых браузерах, преобразуя код в совместимый формат.
Ставь 👍 и забирай 📚 Базу знанийfunction greet(name) {
return `Hello, ${name}!`;
}
🤔 Передача функции по ссылке:
1️⃣ Передача функции:
➕ Вы передаете функцию как аргумент другой функции или сохраняете ее в другой переменной.
function executeFunction(fn, arg) {
return fn(arg);
}
const result = executeFunction(greet, 'Alice');
console.log(result); // "Hello, Alice!"
В этом примере функция greet передается по ссылке в функцию executeFunction, которая затем вызывает greet с аргументом Alice.
🤔 В чем преимущества и возможности передачи
1️⃣ Повторное использование кода:
➕ Вы можете передавать функции по ссылке и использовать их в разных частях программы, что позволяет избегать дублирования кода.
2️⃣ Функции высшего порядка:
➕ Принимают другие функции в качестве аргументов или возвращают функции, называются функциями высшего порядка. Это позволяет создавать более абстрактные и гибкие функции.
function add(x) {
return function(y) {
return x + y;
};
}
const addFive = add(5);
console.log(addFive(3)); // 8
3️⃣ Коллбеки:
➕ Это функции, которые передаются как аргументы другим функциям и вызываются позже. Это особенно полезно в асинхронных операциях, таких как обработка событий или запросы к серверу.
function fetchData(callback) {
setTimeout(() => {
const data = { name: 'Alice' };
callback(data);
}, 1000);
}
function handleData(data) {
console.log(`Received data: ${data.name}`);
}
fetchData(handleData);
4️⃣ Методы массивов:
➕ Многие методы массивов, такие как map, filter, reduce, принимают функции в качестве аргументов для обработки элементов массива.
const numbers = [1, 2, 3, 4, 5];
const squared = numbers.map(num => num * num);
console.log(squared); // [1, 4, 9, 16, 25]
🤔 Важные моменты
1️⃣ Контекст выполнения (this):
➕ При передаче функции по ссылке важно помнить, что контекст выполнения (this) может измениться. Это особенно актуально для методов объектов.
const person = {
name: 'Alice',
greet() {
console.log(`Hello, ${this.name}`);
}
};
const greet = person.greet;
greet(); // undefined, так как контекст потерян
const boundGreet = person.greet.bind(person);
boundGreet(); // Hello, Alice
2️⃣ Замыкания:
➕ Передача функции по ссылке позволяет использовать замыкания, где внутренняя функция имеет доступ к переменным внешней функции, даже после того, как внешняя функция завершила выполнение.
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
Передача функции по ссылке означает, что вы передаете саму функцию, а не результат ее выполнения. Это позволяет вызывать функцию в другом контексте или с другими аргументами, что полезно для повторного использования кода, создания функций высшего порядка, использования коллбеков и методов массивов. Важно помнить о контексте выполнения и возможностях замыканий при передаче функций.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхconst a = 10;
a = 20; // Ошибка: Assignment to constant variable.
const obj = { name: "John" };
obj.name = "Jane"; // Допустимо: изменяемое свойство объекта
console.log(obj.name); // "Jane"
🤔 let
1️⃣ Переменные, которые можно переназначить:
➕ Используется для объявления переменных, которые могут быть переназначены позже в коде.
2️⃣ Инициализация:
➕ Переменная, объявленная с let, не обязательно должна быть инициализирована при объявлении.
3️⃣ Область видимости:
➕ Также имеет блочную область видимости.
let b;
b = 10;
b = 20; // Допустимо: значение переменной изменено
console.log(b); // 20
if (true) {
let c = 30;
console.log(c); // 30
}
console.log(c); // Ошибка: c is not defined
🤔 Основные различия
1️⃣ Переназначение:
➕ const: Не позволяет переназначать переменную после ее инициализации.
➕ let: Позволяет переназначать переменную.
2️⃣ Инициализация:
➕ const: Требует обязательной инициализации при объявлении.
➕ let: Не требует обязательной инициализации при объявлении.
3️⃣ Область видимости:
➕ Оба имеют блочную область видимости.
🤔 Когда их использовать
➕ Используйте const для переменных, которые не должны изменяться после их инициализации. Это делает код более предсказуемым и снижает вероятность ошибок.
➕ Используйте let для переменных, которые могут изменяться в процессе выполнения программы.
1️⃣ Использование const для неизменяемых переменных:
const pi = 3.14;
const maxItems = 100;
2️⃣ Использование let для переменных, значение которых будет изменяться:
let count = 0;
count++;
console.log(count); // 1
➕ const используется для объявления переменных, которые не могут быть переназначены после их инициализации. Переменные, объявленные с const, должны быть инициализированы сразу и имеют блочную область видимости.
➕ let используется для объявления переменных, которые могут быть переназначены. Переменные, объявленные с let, могут быть не инициализированы сразу и также имеют блочную область видимости.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых// 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) для управления процессом сборки и обеспечения оптимальной производительности.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
