Frontend | Вопросы собесов
Сайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+T0COHtFzCJkwMDUy Задачи t.me/+_tcX2w2EmvdmMTgy Вакансии t.me/+CgCAzIyGHHg0Nzky
Ko'proq ko'rsatish📈 Telegram kanali Frontend | Вопросы собесов analitikasi
Frontend | Вопросы собесов (@easy_javascript_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 269 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 325-o'rinni va Rossiya mintaqasida 36 895-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 18 269 obunachiga ega bo‘ldi.
19 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -128 ga, so‘nggi 24 soatda esa 1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 9.80% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.48% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 790 marta ko‘riladi; birinchi sutkada odatda 1 002 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 9 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:
“Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Тесты t.me/+T0COHtFzCJkwMDUy
Задачи t.me/+_tcX2w2EmvdmMTgy
Вакансии t.me/+CgCAzIyGHHg0Nzky”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 20 Iyun, 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.
/* Стили по умолчанию для мобильных устройств */
body {
font-size: 16px;
}
/* Стили для планшетов */
@media (min-width: 768px) {
body {
font-size: 18px;
}
}
/* Стили для настольных компьютеров */
@media (min-width: 1024px) {
body {
font-size: 20px;
}
}
2️⃣Гибкие макеты (Fluid Grids):
✅Использование процентных значений для размеров элементов вместо фиксированных пикселей. Это позволяет элементам изменять размер в зависимости от размера экрана.
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
}
.column {
float: left;
width: 50%;
}
3️⃣Гибкие изображения (Flexible Images):
✅Изображения, которые изменяют размер в зависимости от размеров родительского контейнера.
img {
max-width: 100%;
height: auto;
}
4️⃣Использование фреймворков:
✅Существуют популярные CSS-фреймворки, такие как Bootstrap и Foundation, которые предоставляют готовые решения для адаптивной верстки.
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<div class="container">
<div class="row">
<div class="col-md-6">Контент 1</div>
<div class="col-md-6">Контент 2</div>
</div>
</div>
5️⃣Мобильный подход (Mobile-First):
✅Разработка сайта сначала для мобильных устройств, а затем добавление стилей для более крупных экранов. Это позволяет сосредоточиться на ключевом контенте и функциональности.
/* Стили для мобильных устройств */
body {
font-size: 16px;
}
/* Стили для более крупных экранов */
@media (min-width: 768px) {
body {
font-size: 18px;
}
}
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых p {
color: blue;
}
2️⃣Селекторы по классу:
✅Выбирает элементы с определённым классом. Класс указывается с помощью точки ..
.example {
font-size: 16px;
}
3️⃣Селекторы по идентификатору (ID):
✅Выбирает элемент с определённым идентификатором. Идентификатор указывается с помощью решётки #.
✅Выбирает элемент с определённым идентификатором. Идентификатор указывается с помощью решётки #.
#uniqueElement {
background-color: yellow;
}
4️⃣Комбинированные селекторы:
✅Позволяют выбирать элементы, используя комбинацию различных критериев.
✅Селекторы потомков: выбирают элементы, которые находятся внутри другого элемента.
div p {
margin: 20px;
}
✅Селекторы дочерних элементов: выбирают элементы, которые являются дочерними для другого элемента.
div > p {
margin: 20px;
}
✅Смежные селекторы: выбирают элементы, которые следуют непосредственно за другим элементом.
h1 + p {
margin-top: 10px;
}
✅Селекторы по атрибуту: выбирают элементы с определённым атрибутом.
a[href] {
color: red;
}
5️⃣Псевдоклассы:
✅Позволяют выбирать элементы в определённом состоянии.
a:hover {
color: green;
}
6️⃣Псевдоэлементы:
✅Позволяют стилизовать определённые части элементов.
p::first-line {
font-weight: bold;
}
Примеры:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Пример селекторов</title>
<style>
/* Селектор по тегу */
h1 {
color: blue;
}
/* Селектор по классу */
.highlight {
background-color: yellow;
}
/* Селектор по ID */
#main {
font-size: 20px;
}
/* Селектор по атрибуту */
a[target="_blank"] {
color: red;
}
/* Псевдокласс */
a:hover {
text-decoration: underline;
}
/* Псевдоэлемент */
p::first-letter {
font-size: 200%;
color: green;
}
</style>
</head>
<body>
<h1>Заголовок</h1>
<p class="highlight">Это пример текста с подсветкой.</p>
<p id="main">Это основной текст.</p>
<a href="https://example.com" target="_blank">Ссылка</a>
</body>
</html>
Селектор — это шаблон, который выбирает элементы HTML для применения стилей. Существуют разные типы селекторов, такие как по тегу, классу, ID, а также комбинированные селекторы, псевдоклассы и псевдоэлементы.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовыхfunction outerFunction() {
let outerVariable = 'I am outside!';
function innerFunction() {
console.log(outerVariable);
}
return innerFunction;
}
const inner = outerFunction();
inner(); // 'I am outside!'
Здесь innerFunction замыкается на переменной outerVariable из внешней функции outerFunction.
2️⃣Замыкание с доступом к аргументам внешней функции
Внутренняя функция может также замыкаться на аргументах внешней функции.
function greet(greeting) {
return function(name) {
console.log(`${greeting}, ${name}!`);
};
}
const sayHello = greet('Hello');
sayHello('Alice'); // 'Hello, Alice!'
Здесь функция, возвращаемая greet, замыкается на аргументе greeting.
3️⃣Инкапсуляция данных
Часто используются для инкапсуляции данных, скрывая переменные и предоставляя доступ к ним только через функции.
function createCounter() {
let count = 0;
return {
increment: function() {
count++;
},
getCount: function() {
return count;
}
};
}
const counter = createCounter();
counter.increment();
console.log(counter.getCount()); // 1
В этом примере переменная count инкапсулирована и доступна только через методы increment и getCount.
4️⃣Частично применённые функции
Можно использовать для создания частично применённых функций, которые фиксируют некоторые аргументы.
function multiply(a) {
return function(b) {
return a * b;
};
}
const double = multiply(2);
console.log(double(5)); // 10
Здесь функция multiply создаёт частично применённую функцию, фиксируя аргумент a.
5️⃣Фабрика функций
Позволяют создавать функции, которые генерируют другие функции с определённым поведением.
function createGreeter(greeting) {
return function(name) {
console.log(`${greeting}, ${name}!`);
};
}
const helloGreeter = createGreeter('Hello');
helloGreeter('Bob'); // 'Hello, Bob!'
const hiGreeter = createGreeter('Hi');
hiGreeter('Charlie'); // 'Hi, Charlie!'
Здесь createGreeter создаёт новые функции для различных приветствий.
6️⃣Асинхронные замыкания
Играют ключевую роль в асинхронном программировании, так как позволяют сохранять контекст между асинхронными вызовами.
function fetchData(url) {
let data = null;
setTimeout(() => {
data = 'Data from ' + url;
console.log(data); // 'Data from example.com'
}, 1000);
return function() {
return data;
};
}
const getData = fetchData('example.com');
setTimeout(() => {
console.log(getData()); // 'Data from example.com'
}, 1500);
В этом примере замыкание сохраняет переменную data и позволяет к ней доступ после асинхронной операции.
7️⃣Рекурсивные замыкания
Могут быть использованы для создания рекурсивных функций, которые запоминают контекст и могут вызывать себя.
function createFactorial() {
return function factorial(n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
};
}
const factorial = createFactorial();
console.log(factorial(5)); // 120
Здесь factorial замыкается на самой себе, что позволяет реализовать рекурсивное вычисление факториала.
Замыкания (closures) — это функции, которые "запоминают" контекст, в котором они были созданы. Они могут использоваться для сохранения состояния, инкапсуляции данных, создания частично применённых функций, фабрики функций, работы с асинхронным кодом и рекурсией. Эти особенности делают замыкания мощным инструментом для управления данными и логикой.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовыхhttp:// или https://, браузер отправляет запрос на сервер.
GET /index.html HTTP/1.1
Host: example.com
2️⃣DNS-разрешение:
✅Браузер преобразует доменное имя (например, example.com) в IP-адрес с помощью DNS-сервера.
3️⃣Установка соединения:
✅Браузер устанавливает TCP-соединение с сервером, а если используется https, то устанавливает также SSL/TLS-соединение для безопасной передачи данных.
4️⃣Отправка HTTP-запроса:
✅Браузер отправляет HTTP-запрос к серверу, чтобы получить содержимое веб-страницы.
GET /index.html HTTP/1.1
Host: example.com
5️⃣Получение HTTP-ответа:
✅Сервер отвечает с кодом состояния (например, 200 OK) и возвращает HTML-документ.
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
6️⃣Разбор (парсинг) HTML:
✅Браузер начинает разбор HTML-документа. Он создает DOM (Document Object Model) — иерархическую структуру узлов, представляющую содержимое страницы.
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
7️⃣Обработка CSS:
✅Браузер обрабатывает CSS-стили. Он загружает CSS-файлы и применяет стили к соответствующим элементам DOM, создавая CSSOM (CSS Object Model).
h1 {
color: blue;
}
8️⃣Построение рендер-дерева:
✅DOM и CSSOM объединяются для создания рендер-дерева. Рендер-дерево представляет собой структуру, содержащую визуальные элементы, которые должны быть отображены на странице.
9️⃣Визуализация (рендеринг):
✅Браузер вычисляет положение каждого элемента на экране (расчет компоновки) и рисует их (отрисовка).
🔟Обработка JavaScript:
✅Браузер загружает и выполняет JavaScript-код. Если скрипт модифицирует DOM или CSSOM, процесс может повториться с повторным расчетом и перерисовкой.
document.querySelector('h1').textContent = 'Hello, JavaScript!';
1️⃣1️⃣Асинхронные операции:
✅Браузер обрабатывает асинхронные операции, такие как AJAX-запросы и таймеры, что может также вызвать повторное обновление страницы.
Весь этот процесс происходит быстро и незаметно для пользователя, предоставляя ему готовую к взаимодействию веб-страницу.
Браузер запрашивает у сервера веб-страницу, получает HTML, CSS и JavaScript, строит и отображает страницу на экране, обрабатывая взаимодействия пользователя и изменения в реальном времени.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовыхfunction firstFunction() {
console.log('Начало firstFunction');
secondFunction();
console.log('Конец firstFunction');
}
function secondFunction() {
console.log('Начало secondFunction');
thirdFunction();
console.log('Конец secondFunction');
}
function thirdFunction() {
console.log('Начало thirdFunction');
// Третья функция не вызывает других функций
console.log('Конец thirdFunction');
}
firstFunction();
Пошаговое выполнение и изменения в стеке вызовов
1️⃣Вызов `firstFunction`:
✅Стек вызовов: [firstFunction]
✅Вывод: Начало firstFunction
2️⃣Вызов stack) — это струизо такое стек вызо
✅Стек вызовов: [firstFunction, secondFunction]
✅Вывод: Начало secondFunction
3️⃣Вызов thirdFunction изо такое стек вызов
✅Стек вызовов: [firstFunction, secondFunction, thirdFunction]
✅Вывод: Начало thirdFunction
✅Вывод: Конец thirdFunction
4️⃣Завершение thirdFunction:
✅Стек вызовов: [firstFunction, secondFunction]
✅Вывод: Конец secondFunction
5️⃣Завершение secondFunction:
✅Стек вызовов: [firstFunction]
✅Вывод: Конец firstFunction
6️⃣Завершениеck) — это структу
✅Стек вызовов: []
✅Все функции завершены.
Важные моменты
1️⃣Переполнение стека (Stack Overflow):
✅Если функция вызывает саму себя бесконечно (рекурсия без базового случая), стек вызовов будет заполняться до тех пор, пока не закончится память, выделенная для стека. Это приведет к ошибке переполнения стека (stack overflow).
function recursiveFunction() {
recursiveFunction();
}
recursiveFunction(); // Это вызовет ошибку переполнения стека
2️⃣Асинхронные вызовы:
✅Не блокируют основной поток выполнения и не добавляются в стек вызовов. Вместо этого они управляются очередью задач (task queue) и циклом событий (event loop).
function asyncFunction() {
console.log('Начало asyncFunction');
setTimeout(() => {
console.log('Выполнение асинхронной задачи');
}, 1000);
console.log('Конец asyncFunction');
}
asyncFunction();
// Вывод:
// Начало asyncFunction
// Конец asyncFunction
// Выполнение асинхронной задачи (через 1 секунду)
Стек вызовов — это структура данных, которая управляет вызовами функций в JavaScript. Он работает по принципу LIFO (Last In, First Out), добавляя вызовы функций в верхнюю часть стека и удаляя их по завершении. Это помогает отслеживать последовательность выполнения функций и управлять текущим состоянием программы.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых"Как считается вероятность вопросов?"Об этом писал в статье на Habr ➖Если нашли ошибку в посте пишите @aurumsunset ➖Если хотите купить рекламу на канале пишите @easyoffer_adv ➖Чтобы получить доступ к приватной группе, где мы выкладываем реальные записи собеседований переходите в бота ➖Аналогично для тестовых заданий вот этот бот
// Пример плохого кода
class User {
void saveToDatabase() {
// сохраняет пользователя в базу данных
}
void sendEmail() {
// отправляет приветственное письмо пользователю
}
}
// Пример хорошего кода
class UserRepository {
void save(User user) {
// сохраняет пользователя в базу данных
}
}
class EmailService {
void sendWelcomeEmail(User user) {
// отправляет приветственное письмо пользователю
}
}
2️⃣Open/Closed Principle (Принцип открытости/закрытости):
✅Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.
✅Это означает, что мы должны иметь возможность добавлять новый функционал без изменения существующего кода.
// Пример плохого кода
class Rectangle {
void draw() {
// рисует прямоугольник
}
}
class Circle {
void draw() {
// рисует круг
}
}
class GraphicEditor {
void drawShape(Object shape) {
if (shape instanceof Rectangle) {
((Rectangle) shape).draw();
} else if (shape instanceof Circle) {
((Circle) shape).draw();
}
}
}
// Пример хорошего кода
interface Shape {
void draw();
}
class Rectangle implements Shape {
public void draw() {
// рисует прямоугольник
}
}
class Circle implements Shape {
public void draw() {
// рисует круг
}
}
class GraphicEditor {
void drawShape(Shape shape) {
shape.draw();
}
}
3️⃣Liskov Substitution Principle (Принцип подстановки Барбары Лисков):
✅Объекты в программе должны быть заменяемы экземплярами их подклассов без изменения правильности выполнения программы.
✅То есть, подклассы должны дополнять, а не изменять поведение базового класса.
// Пример плохого кода
class Bird {
void fly() {}
}
class Ostrich extends Bird {
void fly() {
throw new UnsupportedOperationException();
}
}
// Пример хорошего кода
class Bird {}
class FlyingBird extends Bird {
void fly() {}
}
class Ostrich extends Bird {}
class Sparrow extends FlyingBird {
void fly() {
// реализация полета для воробья
}
}
Принципы SOLID помогают писать код, который легко поддерживать и расширять. Это набор правил, которые говорят о том, как разделять обязанности между классами, как правильно наследовать и как строить интерфейсы и зависимости.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовыхfunction fetchData() {
const request = new XMLHttpRequest();
request.open('GET', 'https://api.example.com/data', false); // false для синхронного запроса
request.send();
if (request.status === 200) {
console.log(request.responseText);
}
}
fetchData();
console.log('Этот код выполнится только после завершения fetchData');
2️⃣Параллельное выполнение задач
✅Асинхронные операции позволяют выполнять несколько задач параллельно, что повышает производительность и эффективность приложения.
✅Например, загрузка нескольких ресурсов (изображений, скриптов, стилей) одновременно может значительно ускорить время загрузки страницы.
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3'
];
Promise.all(urls.map(url => fetch(url).then(response => response.json())))
.then(results => {
console.log('All data fetched:', results);
})
.catch(error => console.error('Error fetching data:', error));
3️⃣Обработка событий и таймеров
✅Асинхронные функции, такие как setTimeout и setInterval, позволяют выполнять задачи с задержкой или периодически, не блокируя основной поток.
✅Это полезно для выполнения задач по расписанию, создания анимаций, обработки пользовательских событий и многого другого.
console.log('Start');
setTimeout(() => {
console.log('Executed after 2 seconds');
}, 2000);
console.log('End');
4️⃣Работа с I/O (ввод/вывод)
✅Асинхронные операции ввода/вывода позволяют эффективно обрабатывать задачи чтения и записи данных, например, при работе с файлами или базами данных.
✅Это важно для серверных приложений, обрабатывающих множество одновременных запросов без блокировки.
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
return;
}
console.log('File content:', data);
});
console.log('This code runs while the file is being read');
Основные механизмы
1️⃣Коллбэки (Callbacks)
✅Функции обратного вызова, которые вызываются по завершении асинхронной операции.
function fetchData(callback) {
setTimeout(() => {
const data = 'Some data';
callback(data);
}, 1000);
}
fetchData(data => {
console.log('Data received:', data);
});
Асинхронность решает проблему блокировки основной нити выполнения при выполнении длительных операций, таких как сетевые запросы, таймеры и операции ввода/вывода. Она позволяет выполнять эти задачи параллельно, не блокируя пользовательский интерфейс и обеспечивая более отзывчивое и эффективное поведение приложений. Асинхронность реализуется с помощью коллбэков, промисов и синтаксиса async/await.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых function App() {
return <div>Привет, мир!</div>;
}
3️⃣ Виртуальный DOM: Одной из главных особенностей является использование виртуального DOM — лёгкой копии реального DOM. Это позволяет React оптимизировать обновления интерфейса, сначала применяя изменения к виртуальному DOM, а затем, после вычисления наиболее эффективных изменений, к реальному DOM. Это существенно повышает производительность, особенно при работе с большими объёмами данных.
4️⃣ Однонаправленный поток данных: Данные течут строго от родителей к детям через пропсы, что упрощает отладку и понимание приложений, так как знаешь, откуда пришли данные и как они изменяются.
5️⃣ Хуки: С появлением хуков он стал ещё более мощным и гибким. Хуки позволяют использовать состояние и другие его возможности без написания классов. Например, хук useState позволяет добавить состояние к функциональному компоненту.
import { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Вы кликнули {count} раз</p>
<button onClick={() => setCount(count + 1)}>
Нажми на меня
</button>
</div>
);
}
React предлагает мощный набор инструментов для быстрой и эффективной разработки интерактивных пользовательских интерфейсов. Он позволяет разрабатывать компоненты независимо, управлять их состоянием и пропсами, а также эффективно обновлять интерфейс, минимизируя взаимодействие с реальным DOM.
React помогает создавать веб-страницы, которые быстро реагируют на действия пользователя, делая взаимодействие с сайтом плавным и приятным, не перезагружая страницу при каждом действии.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовых// Пример компонента React
import React from 'react';
function Greeting(props) {
return <h1>Hello, {props.name}!</h1>;
}
export default Greeting;
2️⃣Обработка сложных данных и взаимодействий
Angular
Предоставляет комплексный фреймворк для построения крупных приложений с сложными взаимодействиями и управлением состоянием.
✅Двусторонняя привязка данных: Позволяет синхронизировать данные между моделью и представлением автоматически.
✅Встроенные инструменты и решения: Включает маршрутизацию, HTTP-клиент, формы и многое другое, что упрощает создание сложных приложений.
// Пример компонента Angular
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `<h1>Hello, {{ name }}!</h1>`,
})
export class AppComponent {
name = 'World';
}
3️⃣Простота и гибкость
Vue.js
Созданный Эваном Ю (Evan You), стремится предоставить простой и гибкий инструмент для построения пользовательских интерфейсов, который легко интегрируется с существующими проектами.
✅Легкий в освоении: Имеет простую и интуитивно понятную структуру.
✅Реактивность: Предоставляет мощную систему реактивности, которая автоматически отслеживает изменения данных и обновляет представление.
// Пример компонента Vue.js
<template>
<h1>Hello, {{ name }}!</h1>
</template>
<script>
export default {
data() {
return {
name: 'World',
};
},
};
</script>
4️⃣Повышение производительности
Современные библиотеки и фреймворки разработаны с учетом производительности. Они оптимизируют работу с DOM, минимизируют количество перерисовок и предлагают механизмы для эффективного управления состоянием и обработкой данных.
✅Виртуальный DOM (React): Обновления в DOM происходят только тогда, когда это необходимо, что снижает нагрузку на браузер.
✅Change Detection (Angular): Оптимизированный механизм обнаружения изменений позволяет эффективно обновлять представление.
Библиотеки и фреймворки, такие как React, Angular и Vue.js, были созданы для упрощения разработки сложных и интерактивных веб-приложений. Они решают проблемы управления состоянием, оптимизации производительности, модульности, улучшения процесса разработки и тестирования, а также предоставляют мощные инструменты и методологии для построения масштабируемых и поддерживаемых приложений.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых#пример - делает ваш пост видимым для всех, кто ищет посты с этим хештегом.2️⃣ Хештеги в URL (якорные ссылки): В веб-разработке они используются в URL для навигации к определенному разделу или элементу на странице без перезагрузки страницы. Это называется якорная ссылка. Когда пользователь кликает по такой ссылке, браузер прокручивает страницу к элементу, который имеет соответствующий идентификатор (id).
Перейти к разделу 1
<div id="section1">Содержимое раздела 1</div>
В этом примере, когда пользователь кликает на ссылку "Перейти к разделу 1", страница прокручивается к <div id="section1">.
Разные хештеги нужны для организации и упрощения поиска контента в социальных сетях, а также для навигации по веб-страницам без перезагрузки, направляя пользователя к определенному разделу или элементу страницы. Это делает информацию более доступной и интерактивной.
Хештеги помогают нам быстро находить интересующую информацию в интернете и перемещаться по веб-страницам, не перезагружая их целиком.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхid атрибут элемента может использоваться для создания якорных ссылок (anchor links), которые позволяют переходить к определённому разделу или элементу на странице. Это особенно полезно для навигации по длинным страницам, позволяя пользователям быстро перейти к интересующему их контенту без необходимости прокручивать страницу вручную.
Как это работает:
1️⃣ Установите атрибут id для целевого элемента на странице. Должен быть уникальным в пределах страницы.
<div id="section1">Это целевая секция</div>
2️⃣ Создайте ссылку с атрибутом href, значение которого начинается с символа #, за которым следует id целевого элемента.
Перейти к целевой секции3️⃣ Когда пользователь кликает по такой ссылке, браузер автоматически прокручивает страницу до элемента с соответствующим id.
<!DOCTYPE html>
<html>
<head>
<title>Пример страницы с якорными ссылками</title>
</head>
<body>
<h2>Перейти к Секции 1</h2>
<h2>Перейти к Секции 2</h2>
<div style="height:600px;">
<p>Прокрутите вниз</p>
</div>
<h2 id="section1">Секция 1</h2>
<p>Некоторый контент...</p>
<div style="height:500px;">
<p>Прокрутите вниз</p>
</div>
<h2 id="section2">Секция 2</h2>
<p>Ещё некоторый контент...</p>
</body>
</html>
В этом примере, кликая на "Перейти к Секции 1" или "Перейти к Секции 2", пользователь будет направлен к соответствующему разделу на странице.
Дополнительные применения:
✅ Создание навигационного меню: Используется для быстрого доступа к разделам на одностраничных сайтах или длинных лендингах.
✅ Ссылки на заметки: Позволяет создавать внутренние ссылки в документах или статьях, упрощая навигацию по тексту.
Использование id в ссылках делает веб-страницы более удобными для пользователей, облегчая доступ к нужной информации и улучшая общий пользовательский опыт.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.
🔐 База собесов | 🔐 База тестовыхAccess-Control-Allow-Origin: Определяет, какие домены могут обращаться к ресурсам сервера.
✅Access-Control-Allow-Methods: Определяет, какие HTTP-методы (например, GET, POST, PUT, DELETE) разрешены для кросс-доменных запросов.
✅Access-Control-Allow-Headers: Определяет, какие заголовки могут быть использованы в кросс-доменных запросах.
✅Access-Control-Allow-Credentials: Указывает, разрешено ли отправлять куки и авторизационные данные вместе с запросом.
✅Access-Control-Max-Age: Указывает, как долго результаты проверки могут кэшироваться.
2️⃣Процесс CORS-запроса
Простой запрос (Simple Request)
✅Запросы с методами GET, HEAD или POST и с ограниченным набором безопасных заголовков считаются простыми и обрабатываются напрямую.
Предварительный запрос (Preflight Request)
✅Для методов, отличных от GET, HEAD и POST (или если используются нестандартные заголовки), браузер сначала отправляет "предварительный" запрос с методом OPTIONS. Этот запрос проверяет, разрешен ли кросс-доменный доступ.
✅Если сервер разрешает запрос, он отвечает с соответствующими заголовками CORS. Только после этого браузер отправляет основной запрос.
Пример простого запроса:
Запрос:
GET /resource HTTP/1.1
Host: api.example.com
Origin: http://anotherdomain.com
Ответ:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://anotherdomain.com
Content-Type: application/json
{"message": "Success"}
Пример предварительного запроса:
Предварительный запрос:
OPTIONS /resource HTTP/1.1
Host: api.example.com
Origin: http://anotherdomain.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Content-Type
Ответ на предварительный запрос:
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: http://anotherdomain.com
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Content-Type
Access-Control-Max-Age: 86400
Основной запрос (если предварительный запрос успешен):
POST /resource HTTP/1.1
Host: api.example.com
Origin: http://anotherdomain.com
Content-Type: application/json
{"data": "Some data"}
Ответ на основной запрос:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://anotherdomain.com
Content-Type: application/json
{"message": "Data received"}
CORS (Cross-Origin Resource Sharing) — это механизм безопасности, который позволяет ограничивать или разрешать доступ веб-ресурсов из одного домена к ресурсам на другом домене. Он помогает защитить данные от межсайтовых атак и разрешает легитимные кросс-доменные запросы, обеспечивая взаимодействие между веб-приложениями и API, размещенными на разных серверах. CORS добавляет специальные HTTP-заголовки для управления доступом и может включать предварительные запросы для проверки разрешений.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
