Премиум каналы

Frontend | Вопросы собесов

Frontend | Вопросы собесов - канал где мы разбираем вопросы с собеседований на Frontend разработчика. У нас вы найдете полезные материалы и обсуждения, связанные с вопросами, которые могут возникнуть на собеседованиях для Frontend разработчиков. Мы предлагаем разнообразные темы, включая JavaScript, HTML, CSS и другие важные аспекты в***-разработки. Присоединяйтесь к нашему каналу в Telegram, чтобы получать регулярные обновления и улучшать свои навыки в Frontend разработке. Мы с нетерпением ждем вас в Frontend | Вопросы собесов!

Последние публикации с канала

Что такое inline стили, и какой они имеют приоритет ?
Спросят с вероятностью 10%

Inline стили — это способ применения CSS-правил непосредственно к HTML-элементу через атрибут style. Этот метод позволяет задать стили индивидуально для конкретного элемента, напрямую внутри его тега, без использования внешних или внутренних стилевых листов.

<p style="color: red; font-size: 20px;">Этот текст будет красного цвета и с размером шрифта 20px.</p>


Приоритетность inline стилей

Они имеют более высокий приоритет, чем стили, заданные через внешние или внутренние стилевые листы. Это означает, что если для одного и того же элемента заданы стили через CSS-классы или идентификаторы и через inline атрибут style, то они будут применены.

Порядок приоритетов CSS:

1️⃣ Inline стили (наивысший приоритет)
2️⃣ ID селекторы
3️⃣ Классы, псевдоклассы и атрибуты
4️⃣ Элементы и псевдоэлементы (наименьший приоритет)

Стоит отметить, что существует способ переопределить даже их с помощью правила !important в CSS, однако его использование следует минимизировать, поскольку это может усложнить дальнейшее управление и обслуживание стилей.

Преимущества:
Позволяют быстро протестировать и применить стили к конкретному элементу без необходимости редактирования стилевых листов.
Полезны для стилей, которые должны быть применены к одному элементу и не повторяются в других частях веб-страницы.

Недостатки:
Усложняют HTML-разметку и делают её менее читаемой.
Затрудняют поддержку и обновление стилей, особенно при большом количестве inline стилей.
Снижают возможность повторного использования CSS-правил и нарушают принцип разделения структуры и оформления.

Использование inline стилей может быть оправдано в определённых ситуациях, например, при динамическом изменении стилей или для уникальных стилей, специфичных для одного элемента. Однако для обеспечения лучшей организации кода и его поддержки рекомендуется использовать внешние или внутренние стилевые листы.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🔐
База собесов | 🔐 База тестовых

27.04.2024 / 09:04

Для чего нужен eventloop ?
Спросят с вероятностью 17%

Event Loop (цикл событий) — это фундаментальная концепция, особенно в контексте JavaScript и его выполнения в браузере и Node.js. Основная его задача — обеспечить выполнение асинхронного кода, такого как обработка событий, выполнение обратных вызовов (callbacks) и промисов, не блокируя при этом выполнение остального кода.

Как работает Event Loop

JavaScript — это однопоточный язык программирования, что означает, что он может выполнять только одну операцию за раз. Однако, благодаря Event Loop, он способен обрабатывать асинхронные операции, такие как запросы к серверу, таймеры и взаимодействие с пользователем, не останавливая основной поток выполнения кода.

Процесс работы Event Loop включает в себя несколько ключевых компонентов:

1️⃣ Call Stack (Стек вызовов): Здесь хранятся все функции, которые нужно выполнить. Добавляет функции в стек вызовов и выполняет их по порядку, сначала завершая выполнение функций, которые находятся на вершине стека.

2️⃣ Callback Queue (Очередь обратных вызовов): Когда асинхронная операция завершается (например, приходит ответ от сервера), соответствующий обратный вызов помещается в очередь обратных вызовов.

3️⃣ Event Loop: Следит за стеком вызовов и очередью обратных вызовов. Если стек вызовов пуст, он переносит первую функцию из очереди обратных вызовов в стек вызовов, чтобы она была выполнена.

Зачем это нужно

Event Loop позволяет JavaScript быть асинхронным и неблокирующим, что критически важно для создания отзывчивых приложений. Без него асинхронные операции, такие как загрузка данных с сервера или ожидание завершения таймера, заблокировали бы выполнение всего скрипта, делая веб-страницы и приложения медленными и неотзывчивыми.

Пример:
Представьте, что вы пишете код, который запрашивает данные с сервера и затем обновляет веб-страницу этими данными. Без асинхронности и Event Loop вам пришлось бы ждать, пока не придет ответ от сервера, прежде чем пользователь сможет взаимодействовать со страницей. С ним пользователь может продолжать взаимодействовать со страницей, пока данные загружаются в фоновом режиме.

Event Loop обеспечивает асинхронное выполнение кода, позволяя приложениям оставаться отзывчивыми и эффективно обрабатывать длительные или отложенные операции, не блокируя при этом основной поток выполнения. Это достигается за счет циклического мониторинга стека вызовов и переноса обратных вызовов из очереди обратных вызовов в стек вызовов, когда это возможно.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🔐
База собесов | 🔐 База тестовых

26.04.2024 / 09:04

Устроиться фронтендером в Яндекс за выходные

18–19 мая устраиваем Weekend Offer Frontend. До 15 мая решите одну задачу в Контесте, 18-го пройдите два собеседования, а 19 мая познакомьтесь с командами и получите офер.

В мероприятии участвуют 13 команд: Поиск, E-com Поиска, Реклама, Бизнес, Cloud, 360, Игры, Умный дом, Путешествия, Аренда, Недвижимость, Авто.ру и Авто.ру Бизнес. Вы сможете пообщаться с менеджерами и выбрать проект, который покажется самым интересным.

Нанимаем в офисы по всей России, помогаем релоцироваться внутри страны.

Узнать подробности и зарегистрироваться можно здесь.

Реклама. ООО "Яндекс". ИНН 7736207543

26.04.2024 / 07:04

Как отцентровать блок по горизонтали и по вертикали ?
Спросят с вероятностью 10%

Центрирование блока по горизонтали и вертикали можно выполнить несколькими способами, в зависимости от контекста и требований к верстке. Вот несколько популярных методов:

1️⃣ Использование Flexbox

Это мощный инструмент для управления макетом, который позволяет легко центрировать элементы.

.parent {
display: flex;
justify-content: center; /* Центрирование по горизонтали /
align-items: center; / Центрирование по вертикали /
height: 100vh; / Высота родительского блока /
}

<div class="parent">
<div class="child">Центрированный блок</div>
</div>


Использование Grid

Также позволяет легко центрировать элементы как по горизонтали, так и по вертикали.
.parent {
display: grid;
place-items: center; / Центрирование по горизонтали и вертикали /
height: 100vh;
}

<div class="parent">
<div class="child">Центрированный блок</div>
</div>


2️⃣ Использование абсолютного позиционирования

Этот метод подходит для центрирования элемента внутри родительского блока с относительным позиционированием.
.parent {
position: relative;
height: 100vh;
}

.child {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

<div class="parent">
<div class="child">Центрированный блок</div>
</div>


3️⃣ Использование свойства margin

Для горизонтального центрирования блочного элемента его можно использовать с автоматическим расчетом слева и справа.
.child {
width: 50%; / Желаемая ширина блока /
margin: 0 auto; / Автоматический отступ слева и справа */
}


Однако, для вертикального центрирования этот метод работает только при фиксированной высоте родителя и требует дополнительных расчетов.

Выбор метода зависит от конкретных требований к макету и поддержки браузерами. Flexbox и Grid являются современными и предпочтительными способами для создания адаптивных макетов, в то время как абсолютное позиционирование и использование margin могут пригодиться в более специфических ситуациях.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🔐
База собесов | 🔐 База тестовых

25.04.2024 / 09:04

Что такое дженерик ?
Спросят с вероятностью 17%

Дженерики (Generics) — это мощный инструмент, позволяющий создавать компоненты (как правило, функции, классы и интерфейсы), работающие с любым типом данных. Основная цель — обеспечение строгой типизации при работе с различными типами данных, не теряя при этом гибкости и переиспользуемости кода.

Как это работает

Вместо указания конкретного типа данных при создании компонента, используется параметр типа — переменная, которая затем заменяется на реальный тип данных при использовании компонента. Это позволяет компоненту работать с различными типами данных без изменения его исходного кода.

Преимущества:

Безопасность типов: Позволяют проверить тип данных на этапе компиляции, предотвращая возможные ошибки, связанные с неправильным использованием типов данных.
Переиспользуемость кода: С помощью можно создать универсальные алгоритмы и структуры данных, работающие с любыми типами данных, что сокращает дублирование кода.
Читаемость кода: Использование их делает код более понятным, поскольку намерения разработчика становятся очевидными благодаря явному указанию типов данных.

В нем дженерики активно используются для повышения безопасности типов.

function identity<T>(arg: T): T {
return arg;
}

let output1 = identity<string>("myString"); // тип T становится string
let output2 = identity<number>(100); // тип T становится number


Дженерики — это концепция в программировании, позволяющая компонентам работать с разными типами данных, при этом сохраняя строгую типизацию. Это достигается за счет использования параметров типа, которые заменяются на конкретные типы данных при использовании компонента, улучшая тем самым безопасность, переиспользуемость и читаемость кода.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🔐 База собесов | 🔐 База тестовых

24.04.2024 / 09:04

Что такое специфичность селекторов ?
Спросят с вероятностью 10%

Специфичность селекторов — это механизм, по которому браузер определяет, какие CSS-правила применять к элементу, в случае конфликта между несколькими правилами. Специфичность определяется на основе вида селектора и его вложенности. Это ключевой аспект для понимания того, как CSS применяется к HTML-документу и как разрешаются конфликты стилей.

Как рассчитывается специфичность:

Специфичность рассчитывается по четырём компонентам (A, B, C, D), которые можно представить в виде чисел в четырёхколоночном значении:

А: Если стиль прописан в атрибуте style у элемента, то A = 1 (инлайновые стили).
B: Количество ID селекторов в правиле.
C: Количество классов, селекторов атрибутов и псевдоклассов в правиле.
D: Количество типов элементов и псевдоэлементов в правиле.

При этом важно понимать, что селектор с более высоким уровнем специфичности переопределит селектор с более низким уровнем специфичности, независимо от порядка их объявления.

Примеры:

1️⃣ Инлайновый стиль (A=1, B=0, C=0, D=0): Наивысшая специфичность.

      <div style="color: red;"></div>


2️⃣ ID селектор (A=0, B=1, C=0, D=0): Высокая специфичность.
      #header { color: blue; }


3️⃣ Классы, селекторы атрибутов, псевдоклассы (A=0, B=0, C=1, D=0):
      .button.active { color: green; }


4️⃣ Типы элементов и псевдоэлементы (A=0, B=0, C=0, D=1):
      div::before { content: ">>"; }


Исключения и особые случаи:

Универсальный селектор (*), комбинаторы (например, +, >, ~) и отрицание (:not()) не влияют на специфичность.
Важность (!important): Если к правилу применён !important, это правило переопределяет другие правила, независимо от специфичности (использовать с осторожностью).

Понимание специфичности селекторов помогает избежать конфликтов стилей и делает код более предсказуемым и управляемым. Это основа для эффективной разработки стилей и помогает избежать излишнего использования !important, что может усложнить дальнейшую поддержку кода.

Специфичность — это важный инструмент для управления каскадом стилей и обеспечения того, чтобы правильные стили применялись к правильным элементам.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🔐 База собесов | 🔐 База тестовых

23.04.2024 / 09:04

Что такое области видимости ?
Спросят с вероятностью 13%

Область видимости (Scope) в программировании определяет контекст выполнения кода, в котором переменные, функции и объекты доступны для использования. Области видимости играют ключевую роль в структуре и безопасности кода, позволяя разграничивать доступ к данным и избегать конфликтов имен.

Виды областей видимости:

1️⃣ Глобальная область видимости: Переменные, объявленные вне всех функций или блоков кода, находятся в глобальной области видимости. Они доступны из любой части кода в том же контексте выполнения.

2️⃣ Локальная (или функциональная) область видимости: Переменные, объявленные внутри функции, доступны только в пределах этой функции и вложенных в неё функций.

3️⃣ Блочная область видимости: Введена в ES6 с помощью ключевых слов let и const, позволяет ограничить область видимости переменной блоком кода (например, циклом или условным оператором).

Глобальная область видимости:

var globalVar = "Я глобальная переменная";

function exampleFunction() {
console.log(globalVar); // Доступ к глобальной переменной внутри функции
}

console.log(globalVar); // Доступ к глобальной переменной вне функции

Локальная область видимости:
function exampleFunction() {
var localVar = "Я локальная переменная";
console.log(localVar); // Доступна только внутри функции
}

exampleFunction();
console.log(localVar); // Ошибка: localVar не определена

Блочная область видимости:
if (true) {
let blockVar = "Я переменная блочной видимости";
console.log(blockVar); // Доступна только внутри блока
}

console.log(blockVar); // Ошибка: blockVar не определена


Замыкания

Это функция, вместе со всеми переменными, которые ей доступны из своей области видимости, включая переменные из внешних областей видимости. Замыкания позволяют сохранять состояние внутри функции и обращаться к переменным из внешней области видимости даже после того, как функция была выполнена.
function outerFunction() {
var outerVar = "Я внешняя переменная";

function innerFunction() {
console.log(outerVar); // Доступ к переменной из внешней области видимости
}

return innerFunction;
}

var myFunction = outerFunction();
myFunction(); // Вывод: "Я внешняя переменная"


Область видимости важна для структурирования и организации кода, она помогает избегать конфликтов имен и обеспечивает безопасность данных, ограничивая доступ к переменным из разных частей программы. Понимание областей видимости и замыканий жизненно важно для разработки надёжных и эффективных приложений.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🔐 База собесов | 🔐 База тестовых

22.04.2024 / 09:04

Что такое методолгия bem ?
Спросят с вероятностью 13%

Методология BEM (Block, Element, Modifier) — это популярный подход к организации CSS классов и структуры HTML. Эта методология направлена на упрощение разработки и поддержки больших и масштабируемых проектов за счет введения строгой структуры для классов CSS.

Компоненты BEM:

1️⃣ Блок (Block): Независимый компонент страницы, который может быть повторно использован. В нем описывает сущность, которая имеет смысл сама по себе (например, кнопка, меню).
2️⃣ Элемент (Element): Часть блока, которая не может использоваться отдельно от него. Элементы связываются с блоками через двойное подчеркивание (__). Например, пункт меню (menu__item) является элементом блока меню.
3️⃣ Модификатор (Modifier): Свойство, которое изменяет внешний вид или поведение блока или элемента. Модификаторы обозначаются двойным дефисом (--). Например, активное состояние кнопки может быть представлено как button--active.

Преимущества:

Модульность: Благодаря независимости блоков, их легко переиспользовать в разных частях проекта или даже в разных проектах.
Ясность и понятность: Структура классов становится более очевидной, что облегчает понимание структуры проекта новыми разработчиками.
Упрощение масштабирования: Методология облегчает добавление новых функций и стилей без страха нарушить существующие.
Уменьшение каскадирования: Использование уникальных имен классов для блоков и элементов сокращает вероятность конфликтов и неожиданного наследования стилей.

<div class="menu">
<div class="menu__item menu__item--active">Главная</div>
<div class="menu__item">Новости</div>
</div>


В этом примере menu является блоком, menu__item — элементом этого блока, а menu__item--active — модификатором элемента, указывающим на его активное состояние.

Методология BEM предлагает систематический подход к структурированию классов CSS и HTML-разметки, который помогает создавать масштабируемые и легко поддерживаемые веб-проекты. Это достигается за счет разделения интерфейса на независимые блоки, что упрощает разработку, отладку и тестирование веб-приложений.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

21.04.2024 / 09:04

В чём разница между foreach и map ?
Спросят с вероятностью 17%

forEach и map — это два метода массивов, предназначенные для итерации по элементам массива, но они используются в разных целях и работают по-разному.

forEach

- Назначение: Используется для выполнения заданной функции один раз для каждого элемента в массиве. Основное назначение — выполнение побочных эффектов (например, вывод в консоль, запись в файл и т.д.).
- Возвращаемое значение: Не возвращает никакого значения (то есть возвращает undefined). Это означает, что результат его работы нельзя присвоить переменной.
- Изменение оригинального массива: Может изменять оригинальный массив, если внутри функции-коллбэка производятся изменения его элементов.

const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));
// Выводит каждый элемент в консоль


map

- Назначение: Используется для создания нового массива, заполненного результатами вызова предоставленной функции на каждом элементе исходного массива. Основное назначение — трансформация данных.
- Возвращаемое значение: Возвращает новый массив, который содержит результаты применения функции к каждому элементу исходного массива. Это позволяет использовать его в цепочках вызовов и присваивать результат его работы переменной.
- Изменение оригинального массива: Не изменяет оригинальный массив, что делает его предпочтительным в функциональном программировании.
const array2 = [1, 4, 9];
const map1 = array2.map(x => x * 2);
console.log(map1);
// Выводит новый массив [2, 8, 18]


Основные различия

- Цель использования: forEach для выполнения операций или побочных эффектов на каждом элементе массива; map для создания нового массива на основе обработки каждого элемента исходного массива.
- Возвращаемое значение: forEach возвращает undefined, в то время как map возвращает новый массив.
- Изменение исходного массива: forEach может изменять исходный массив, если это предусмотрено логикой коллбэка; map не изменяет исходный массив, а создаёт новый.

forEach используется для выполнения функции на каждом элементе массива без создания нового массива. Он идеален для ситуаций, когда вам нужно применить какой-либо побочный эффект.
map применяется для трансформации исходного массива в новый, без изменения исходного массива

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

20.04.2024 / 09:04

Какая основная цель использования Virtual DOM в современных JavaScript фреймворках?

Anonymous Quiz

2% - Увеличение безопасности приложения

3% - Управление памятью браузера

89% - Минимизация количества обращений к реальному DOM

6% - Ускорение работы сетевых запросов

19.04.2024 / 16:04

Как делается http запрос ?
Спросят с вероятностью 13%

HTTP-запросы — это основа взаимодействия, позволяющие клиентам (например, браузерам) общаться с серверами. Это происходит с использованием протокола HTTP (HyperText Transfer Protocol). Клиент отправляет его серверу, а сервер отвечает HTTP-ответом. Запросы могут быть сделаны для различных целей, включая получение данных (GET запрос), отправку данных для создания или обновления ресурсов (POST, PUT запросы), удаление ресурсов (DELETE запрос) и др.

Структура HTTP-запроса

Состоит из следующих частей:

1️⃣ Стартовая строка (Start line): Определяет метод запроса (например, GET, POST), URI (Uniform Resource Identifier) запрашиваемого ресурса и версию HTTP.
2️⃣ Заголовки (Headers): Содержат дополнительную информацию для сервера, например тип контента, который клиент может принимать (Accept), тип контента, который отправляется (Content-Type), параметры аутентификации и другие.
3️⃣ Пустая строка: Разделяет заголовки и тело запроса.
4️⃣ Тело запроса (Body) (необязательно): Содержит данные, отправляемые в запросе. Используется с методами POST, PUT и другими, но не с GET.

Способы отправки HTTP-запросов

- Использование веб-браузера

Самый простой способ его отправки — использование веб-браузера. Когда вы вводите URL в адресную строку и нажимаете Enter, браузер отправляет GET-запрос к серверу, запрашивая содержимое страницы.

- Использование инструментов

cURL: Командная утилита для отправки запросов через терминал или командную строку.

    curl -X GET "http://example.com"

Postman: Графический интерфейс пользователя (GUI) для отправки HTTP-запросов, удобный для тестирования API.
HTTP клиенты в языках программирования: Большинство языков программирования предоставляют библиотеки для работы с HTTP. Например, fetch в JavaScript, requests в Python, HttpClient в .NET.

Пример с использованием Fetch API
fetch('http://example.com/movies.json')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Ошибка:', error));


Этот код отправляет GET-запрос к http://example.com/movies.json, преобразует ответ и выводит его в консоль.

HTTP-запросы являются фундаментальной частью веб-разработки, позволяя клиентам и серверам обмениваться данными. Существует множество способов для выполнения HTTP-запросов, включая использование веб-браузеров, специализированных инструментов и программных библиотек в различных языках программирования. Важно понимать структуру запроса и правильно использовать методы HTTP для эффективного взаимодействия с веб-серверами.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

19.04.2024 / 09:04

Какое ключевое отличие между классическими функциями и стрелочными функциями в JavaScript?

Anonymous Quiz

57% - Стрелочные функции не могут использовать this.

32% - Только классические функции могут быть конструкторами.

7% - Стрелочные функции всегда возвращают значение.

4% - Только стрелочные функции поддерживают асинхронное выполнение.

18.04.2024 / 17:04

Что такое rest api ?
Спросят с вероятностью 13%

REST API (Representational State Transfer Application Programming Interface) — это архитектурный стиль взаимодействия компонентов распределенного приложения в сети. В контексте веб-разработки, он позволяет веб-сервисам общаться друг с другом через HTTP, используя стандартные методы HTTP (GET, POST, PUT, DELETE и т.д.) для выполнения операций над данными.

Основные принципы:

1️⃣ Без состояния (Stateless): Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для его выполнения. Сервер не сохраняет состояние клиента между запросами.
2️⃣ Единообразие интерфейса (Uniform Interface): Определяет стандартный способ взаимодействия между клиентом и сервером, что облегчает и унифицирует разработку и взаимодействие компонентов системы.
3️⃣ Кэширование (Cacheable): Ответы на запросы могут быть кэшируемыми или некэшируемыми, что позволяет улучшить производительность системы за счет уменьшения нагрузки на сервер.
4️⃣ Клиент-сервер (Client-Server): Разделение обязанностей между клиентом (например, пользовательским интерфейсом) и сервером (хранилище данных), что упрощает разработку и масштабирование компонентов независимо друг от друга.
5️⃣ Многоуровневая система (Layered System): Клиент не может обязательно знать, общается ли он напрямую с сервером или через посредников, что повышает безопасность системы и позволяет использовать балансировщики нагрузки, кэширующие сервера и т.д.
6️⃣ Код по требованию (Code on Demand, необязательно): Сервер может временно расширять или настраивать функциональность клиента, передавая ему исполняемый код.

Примеры:

1️⃣ Веб-сервисы: Веб-сайты используют его для запроса данных с сервера (например, загрузка списка пользователей, публикации сообщений в блоге).
2️⃣ Мобильные приложения: Мобильные приложения общаются с сервером для получения и отправки данных (например, проверка погоды, отправка сообщений).
3️⃣ Интеграция с внешними сервисами: Приложения могут интегрироваться с внешними API для расширения своего функционала (например, использование карт Google Maps, интеграция с социальными сетями).

REST API — это набор принципов и ограничений для создания веб-сервисов, который обеспечивает гибкое и эффективное взаимодействие между компонентами распределенных систем через HTTP. Благодаря своей простоте, масштабируемости и гибкости, REST стал доминирующим стилем для разработки API для веб-приложений.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

18.04.2024 / 09:04

Какое ключевое отличие между Function Expression и Function Declaration в JavaScript?

Anonymous Quiz

74% - Function Declaration можно вызвать до её объявления.

20% - Function Expression может быть именованной или анонимной.

4% - Только Function Declaration поддерживает асинхронные вызовы.

2% - Function Expression более эффективна при выполнении.

17.04.2024 / 16:04

В чём отличие хранения данных в local storage от куки ?
Спросят с вероятностью 17%

Хранение данных в Local Storage и использование куки (cookies) — это два различных способа сохранения информации на стороне клиента в веб-разработке. Каждый из них имеет свои особенности, преимущества и недостатки:

Local Storage

1️⃣ Объем данных: Предоставляет значительно больше пространства для хранения данных по сравнению с куки — до 5-10 МБ в зависимости от браузера.
2️⃣ Доступность: Данные, сохраненные нем, доступны только на том же домене и не отправляются на сервер при каждом запросе, в отличие от куки.
3️⃣ Срок хранения: Данные нем сохраняются бессрочно или до тех пор, пока не будут явно удалены кодом или пользователем через настройки браузера.
4️⃣ Безопасность: Так как данные из него не отправляются на сервер с каждым запросом, риск перехвата этих данных ниже, чем у куки. Однако, поскольку данные доступны через JavaScript, Local Storage уязвим к XSS-атакам (межсайтовому скриптингу).

Куки (Cookies)

1️⃣ Объем данных: Ограничены размером, обычно максимум 4 КБ на одно куки.
2️⃣ Доступность: Отправляются на сервер при каждом HTTP-запросе к домену, который их установил, что может быть полезно для аутентификации или отслеживания сессий пользователя.
3️⃣ Срок хранения: Срок жизни куки может быть установлен при их создании. Если срок не установлен, куки считается сессионным и удаляется при закрытии браузера.
4️⃣ Безопасность: Куки могут быть настроены как HttpOnly, что делает их недоступными и уменьшает риск XSS-атак. Также куки могут быть помечены как Secure, что означает их отправку только по защищенным соединениям (HTTPS).

Local Storage лучше подходит для хранения больших объемов данных, которые не требуется отправлять на сервер с каждым запросом. Это хороший выбор для сохранения настроек пользователя или данных форм на стороне клиента.

Куки лучше использовать для управления сессиями пользователя или для хранения небольших объемов данных, которые должны быть доступны как на клиенте, так и на сервере. Куки также могут служить для реализации механизмов аутентификации и отслеживания состояния сессий.

Выбор между Local Storage и куки зависит от конкретных требований приложения, включая необходимый объем хранения, требования к безопасности и необходимость обмена данными между клиентом и сервером.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

17.04.2024 / 09:04

Какой из методов является подходящим для явного указания контекста this при однократном вызове функции?

Anonymous Quiz

29% - call

7% - apply

24% - bind

40% - все вышеупомянутые

16.04.2024 / 16:04

Что такое dom дерево ?
Спросят с вероятностью 13%

DOM (Document Object Model) дерево
— это интерфейс, который представляет содержимое веб-страницы в виде иерархической структуры объектов. Каждый элемент страницы, включая текст, теги и атрибуты, становится узлом в этом дереве. Он позволяет языкам программирования, взаимодействовать с содержимым веб-страницы, изменяя его структуру, стиль и содержание.

Структура DOM дерева

- Узлы (Nodes): Базовые части. Узлы могут представлять элементы (Element), текст (Text), комментарии (Comment) и т.д.
- Корневой узел (Root Node): Обычно узел document, который служит входной точкой к содержимому веб-страницы.
- Родительские узлы (Parent Nodes): Узлы, содержащие другие узлы (дочерние узлы).
- Дочерние узлы (Child Nodes): Узлы, находящиеся внутри другого узла.
- Соседние узлы (Sibling Nodes): Узлы, расположенные на одном и том же уровне иерархии.

Как работает DOM

Когда браузер загружает веб-страницу, он создаёт такое дерево на основе HTML-документа. Это преобразование позволяет скриптам динамически изменять визуальное представление страницы, добавляя, удаляя или модифицируя элементы и их атрибуты.

Можно выполнять различные операции с ним, такие как:

Поиск элементов: С помощью методов вроде getElementById, getElementsByClassName, querySelector и querySelectorAll.
Создание и добавление элементов: Используя методы createElement и appendChild.
Удаление элементов: С помощью removeChild.
Изменение атрибутов и стилей: Через обращение к свойствам элементов, таким как className, style и другим.

Важность DOM

Играет ключевую роль в интерактивности и динамическом поведении веб-страниц. Благодаря ему, веб-страницы могут отвечать на действия пользователя, обновляясь без необходимости перезагрузки страницы. Это лежит в основе таких технологий, как AJAX и SPA (Single Page Application), которые позволяют создавать быстрые и плавные веб-приложения.

DOM дерево — это иерархическая структура, представляющая содержимое веб-страницы как объекты. Это позволяет создавать динамические и интерактивные веб-приложения, изменяя содержимое, структуру и внешний вид страницы на лету.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

16.04.2024 / 09:04

Какой метод позволяет изолировать стили компонента в веб-разработке, предотвращая их влияние на другие элементы страницы?

Anonymous Quiz

15% - Использование префиксов классов

64% - Применение CSS-модулей

6% - Вставка стилей непосредственно в HTML

15% - Использование инлайн-стилей

15.04.2024 / 16:04

Как использовать useeffect ?
Спросят с вероятностью 13%

useEffect — это хук, введённый в React 16.8, который позволяет выполнять побочные эффекты в функциональных компонентах. Побочные эффекты включают в себя операции, которые выходят за рамки возвращаемого результатом рендеринга, такие как работа с сетью (запросы к API), подписки, изменение документа и так далее. Он заменяет собой жизненные циклы классовых компонентов, такие как componentDidMount, componentDidUpdate и componentWillUnmount.

Синтаксис:

useEffect(() => {
// Ваш код для побочного эффекта
return () => {
// Очистка (необязательно)
};
}, [зависимости]);


Функция побочного эффекта: Это его основное тело, где вы помещаете код, который должен выполняться после каждого рендеринга (по умолчанию) или когда изменяются определённые зависимости.
Очистка: Функция очистки выполняется перед тем, как компонент будет удалён, а также перед следующим выполнением эффекта. Это идеальное место для отмены подписок, таймеров и других ресурсов, чтобы избежать утечек памяти.
Массив зависимостей: Определяет, при изменении каких значений должен повторно выполняться эффект. Если массив пуст ([]), эффект выполнится один раз после первого рендеринга. Если массив не указан, эффект будет выполняться после каждого рендеринга.

Примеры использования:

1️⃣ Запуск эффекта один раз

Чтобы выполнить эффект один раз после первого рендеринга (аналог componentDidMount в классовых компонентах), используйте пустой массив зависимостей:
useEffect(() => {
// Код здесь будет выполнен один раз после инициализации компонента
}, []);


2️⃣ Выполнение при изменении зависимостей

Чтобы выполнить эффект при изменении определённых значений:
const [count, setCount] = useState(0);

useEffect(() => {
// Код здесь будет выполнен каждый раз, когда изменяется значение count
document.title = Вы нажали ${count} раз;
}, [count]); // Зависимости


3️⃣ Очистка эффекта

Пример использования функции очистки:
useEffect(() => {
const timerID = setInterval(() => {
// Ваша логика здесь
}, 1000);

return () => {
clearInterval(timerID); // Очистка при размонтировании компонента
};
}, []); // Эффект выполнится один раз


useEffect позволяет вам выполнять побочные эффекты в функциональных компонентах. Он может заменить собой несколько методов жизненного цикла классовых компонентов, предоставляя более унифицированный и удобный способ работы с побочными эффектами. Через массив зависимостей вы контролируете, как часто эффект должен выполняться, что делает ваш компонент более оптимизированным и предсказуемым.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

15.04.2024 / 09:04

Что такое меморизация ?
Спросят с вероятностью 17%

Меморизация — это оптимизационная техника, используемая для ускорения выполнения программ путём сохранения результатов дорогостоящих функций и повторного использования этих результатов, когда снова возникают одинаковые входные данные, вместо того чтобы повторно выполнять функцию.

Как это работает

При первом вызове функции с определённым набором аргументов результат выполнения функции сохраняется в каком-либо хранилище (чаще всего в виде объекта или карты). При последующих вызовах функции с теми же аргументами, вместо выполнения функции, возвращается сохранённый результат. Это значительно сокращает время выполнения, особенно если исходная функция требует значительных вычислительных ресурсов.

Применение:

Меморизация часто применяется для оптимизации производительности в различных областях, включая:

- Рекурсивные вычисления, например, вычисление чисел Фибоначчи.
- Дорогостоящие вычисления, которые часто повторяются с одними и теми же аргументами.
- Оптимизация производительности веб-приложений, например, в React, где меморизация помогает избежать ненужных перерисовок компонентов.

function memoize(fn) {
const cache = {};
return function(...args) {
const key = args.toString();
if (cache[key]) {
return cache[key];
} else {
const result = fn.apply(this, args);
cache[key] = result;
return result;
}
};
}

// Пример использования меморизации для функции вычисления факториала
const factorial = memoize(function(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
});

console.log(factorial(5)); // Вычисляется и сохраняется в кэше
console.log(factorial(5)); // Возвращается результат из кэша, вычислений не происходит


Меморизация — это техника сохранения результатов выполнения функций для их быстрого повторного использования, что позволяет существенно ускорить выполнение программы, особенно при работе с дорогостоящими вычислениями или рекурсивными функциями. Это достигается за счёт того, что вместо повторного выполнения функции с теми же аргументами, результат возвращается из специального хранилища (кэша).

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти к Списку всех вопросов на Frontend Developer. Ставь 👍 если нравится контент.

🧩 Идущий | 🔐 Собесы | 🔐 Тестовые

14.04.2024 / 14:04
Отзывы: - 0
Поделитесь вашим мнением! Оставьте отзыв:

Похожие

Избранное