Frontend | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish📈 Telegram kanali Frontend | Вопросы собесов analitikasi
Frontend | Вопросы собесов (@easy_javascript_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 17 306 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 485-o'rinni va Rossiya mintaqasida 37 823-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 17 306 obunachiga ega bo‘ldi.
07 Noyabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -292 ga, so‘nggi 24 soatda esa -16 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.40% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.41% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 107 marta ko‘riladi; birinchi sutkada odatda 764 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ставь, браузер, html, border, flex kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 08 Noyabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
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) для управления процессом сборки и обеспечения оптимальной производительности.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых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 разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых