Frontend | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Mostrar más📈 Análisis del canal de Telegram Frontend | Вопросы собесов
El canal Frontend | Вопросы собесов (@easy_javascript_ru) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 17 317 suscriptores, ocupando la posición 7 477 en la categoría Tecnologías y Aplicaciones y el puesto 37 825 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 17 317 suscriptores.
Según los últimos datos del 06 noviembre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -291, y en las últimas 24 horas de -11, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.55%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 4.40% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 1 135 visualizaciones. En el primer día suele acumular 763 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 4.
- Intereses temáticos: El contenido se centra en temas clave como ставь, браузер, html, border, flex.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 07 noviembre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
import { createStore } from 'redux';
import rootReducer from './reducers';
const store = createStore(rootReducer);
🟠Состояние доступно только для чтения
Единственный способ изменить состояние — это отправить действие (action), описывающее изменение. Действия — это простые объекты, которые имеют свойство type и, возможно, дополнительные данные. Изменения состояния должны происходить только через действия.
const increment = () => ({
type: 'INCREMENT',
});
store.dispatch(increment());
🟠Изменения состояния происходят с помощью чистых функций
Для описания того, как действия изменяют состояние, используются редюсеры (reducers). Редюсеры — это чистые функции, которые принимают предыдущее состояние и действие в качестве аргументов и возвращают новое состояние. Редюсеры должны быть чистыми функциями и не должны иметь побочных эффектов.
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;
}
};
const store = createStore(counterReducer);
🚩Дополнительные правила и рекомендации
🟠Избегайте мутаций состояния:
Состояние в Redux должно быть неизменяемым. Вместо изменения текущего состояния, редюсеры должны возвращать новые объекты состояния. Используйте методы, которые не изменяют исходные объекты, такие как Array.prototype.map, Array.prototype.filter, и оператор распространения (spread operator) для создания новых объектов и массивов.
const newState = {
...state,
count: state.count + 1,
};
🟠Используйте сериализуемые действия и состояния
Для упрощения отладки и поддержки инструментов разработки (например, Redux DevTools), действия и состояния должны быть сериализуемыми (не содержать циклических ссылок и неподдерживаемых типов данных, таких как функции или символы).
const action = {
type: 'ADD_TODO',
payload: {
id: 1,
text: 'Learn Redux',
},
};
🟠Используйте нормализованные состояния: Храните состояния в нормализованной форме, чтобы избежать избыточности данных и упростить управление состояниями. Например, используйте объекты, где ключами являются идентификаторы, а значениями — данные.
const initialState = {
todos: {
byId: {
1: { id: 1, text: 'Learn Redux' },
2: { id: 2, text: 'Build an app' },
},
allIds: [1, 2],
},
};
Ставь 👍 и забирай 📚 Базу знаний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, могут быть не инициализированы сразу и также имеют блочную область видимости.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых