Frontend | Вопросы собесов
18.3K subscribers
38 photos
2 videos
1.43K links
Download Telegram
🤔 Из каких секций состоит компонент Vue?

- <template> — разметка;
- <script> — логика компонента;
- <style> — стили, можно использовать scoped для изоляции; Дополнительно — setup, lang, scoped, module и др.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍5🔥5
🤔 Когда брать абсолютные величины а когда относительные?

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

🚩Абсолютные величины (например, px, pt, cm, in)

Имеют фиксированные размеры и не зависят от других элементов или размеров экрана. Они всегда остаются одинаковыми, независимо от контекста.

🚩Когда использовать

1⃣Пиксели (`px`)
Точные размеры: Когда вам нужно задать точные размеры элементов, например, для пиксельной точности в дизайне.
Фиксированные элементы: Для элементов, размеры которых не должны изменяться в зависимости от экрана или родительского элемента (например, логотипы или иконки).
Маленькие декоративные элементы: Когда размеры элементов настолько малы, что относительные единицы могут привести к неконтролируемому результату.
.logo {
width: 100px;
height: 50px;
}


🚩Относительные величины (например, %, em, rem, vw, vh)

Изменяются в зависимости от других элементов или размеров экрана. Они позволяют создавать более гибкие и адаптивные макеты.

🟠Проценты (`%`)
Адаптивные макеты: Когда нужно, чтобы элемент занимал определенный процент от размера родительского элемента.
Контейнеры и блоки: Для ширины и высоты блоков, которые должны изменяться вместе с размерами родителя.
.container {
width: 80%;
height: 50%;
}


🟠Эм (`em`)
Шрифты: Когда нужно задавать размер шрифта относительно размера шрифта родителя.
Внутренние отступы и поля: Для создания элементов, которые масштабируются вместе с текстом.
.text {
font-size: 1.2em;
margin: 1em;
}


🟠Рем (`rem`):
Глобальная консистентность: Когда нужно задавать размер относительно корневого элемента (обычно <html>), что обеспечивает более предсказуемое масштабирование.
Шрифты и отступы: Для элементов, которые должны быть пропорциональны базовому размеру шрифта
body {
font-size: 16px;
}

.header {
font-size: 2rem; /* 32px */
margin: 1rem; /* 16px */
}


🟠Вьюпорт (`vw`, `vh`):
Адаптивные размеры: Когда размеры элементов должны быть пропорциональны размеру вьюпорта (окна браузера).
Фоновые изображения и видео: Для элементов, которые должны занимать определенный процент от экрана.
.hero {
width: 100vw;
height: 100vh;
}


🚩Комбинированное использование

Иногда можно комбинировать абсолютные и относительные единицы для достижения наилучшего результата.
.container {
width: 80%; /* Относительная ширина */
padding: 20px; /* Абсолютный внутренний отступ */
}

.text {
font-size: 1.5rem; /* Относительный размер шрифта */
margin: 2em; /* Относительный внешний отступ */
}


Ставь 👍 и забирай 📚 Базу знаний
👍8
🤔 Когда используются теги div и span?

- div — это блочный элемент, используется для структурирования больших участков контента;
- span — строчный элемент, применяется для выделения текста внутри других блоков без создания новой строки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍12🔥1
🤔 Зачем необходим DOM?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍7🔥1
🤔 Что такое dispatch?

В контексте Frontend-разработки, dispatch — это метод, который отправляет (диспатчит) событие или действие. В зависимости от технологии dispatch может использоваться в Redux, EventTarget или React.

🟠`dispatch` в Redux
В Redux dispatch(action) используется для отправки (диспатча) действий (actions) в хранилище (store).
import { useDispatch } from 'react-redux';

const Counter = () => {
const dispatch = useDispatch();

return (
<button onClick={() => dispatch({ type: 'INCREMENT' })}>
Увеличить
</button>
);
};


🟠`dispatchEvent` в JavaScript (EventTarget API)
В нативном JavaScript метод dispatchEvent() используется для генерации пользовательских событий на DOM-элементах.
const button = document.querySelector("button");

// Создаём событие
const event = new Event("myCustomEvent");

// Добавляем слушатель событий
button.addEventListener("myCustomEvent", () => {
console.log("Событие вызвано!");
});

// Диспатчим событие
button.dispatchEvent(event); // Выведет: "Событие вызвано!"


🟠`dispatch` в React (useReducer)
В React-хуке useReducer dispatch используется для изменения состояния компонента.
import { useReducer } from 'react';

const reducer = (state, action) => {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
default:
return state;
}
};

const Counter = () => {
const [state, dispatch] = useReducer(reducer, { count: 0 });

return (
<button onClick={() => dispatch({ type: 'increment' })}>
{state.count}
</button>
);
};


Ставь 👍 и забирай 📚 Базу знаний
👍8
🤔 В чём отличие box-sizing: border-box от box-sizing: content-box?

- border-box включает padding и border в размер элемента — проще контролировать итоговую ширину.
- content-box — по умолчанию: ширина задаётся только для содержимого, а padding и border добавляются отдельно.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍9
🤔 Зачем мы используем React.Fragment?

React.Fragment позволяет оборачивать несколько JSX-элементов без лишнего тега в DOM. Он нужен, когда требуется вернуть несколько элементов из компонента, не создавая дополнительных обёрток (<div> и т.п.).
Вот подробные текстовые ответы на твои вопросы, охватывающие темы React, Redux, верстку, TypeScript и веб-разработку в целом:


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊14👍6🔥3🤔2
🤔 Какие есть альтернативы SSR?

- SPA + пререндеринг (Scully, React Static, Nuxt generate) — хорош для статического контента.
- JAMStack + CDN — готовая сборка без сервера.
- Edge rendering — через CDN-функции (например, Cloudflare Workers).
- Hybrid rendering (ISR/SSG) — как в Next.js, где часть страниц SSR, часть — SSG.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥14👍2
🤔 Что такое функциональное программирование?

Функциональное программирование (FP) — это парадигма программирования, в которой основной единицей кода являются функции. В FP функции работают с данными без изменения внешнего состояния и без побочных эффектов.

🚩Основные принципы функционального программирования

🟠Чистые функции (Pure Functions)
Функция называется чистой, если:
При одинаковых входных данных всегда возвращает одинаковый результат.
Не изменяет внешние переменные (нет побочных эффектов).
Нечистая функция (изменяет внешнюю переменную)
let count = 0;
function increment() {
count += 1; // изменяет внешнюю переменную
return count;
}


Чистая функция (зависит только от аргументов)
function increment(num) {
return num + 1; // не меняет внешнее состояние
}
console.log(increment(5)); // 6
console.log(increment(5)); // 6 (всегда одинаковый результат)


🟠Иммутабельность (Immutable Data)
Данные не изменяются, а создаются новые версии объектов.
Изменение объекта (нефункциональный подход)
const user = { name: "Alice", age: 25 };
user.age = 26; // изменяет объект


Создание нового объекта (функциональный подход)
const user = { name: "Alice", age: 25 };
const updatedUser = { ...user, age: 26 }; // создаём новый объект


🟠Функции высшего порядка (Higher-Order Functions)
Функция, которая принимает другую функцию в аргумент или возвращает функцию.
const numbers = [1, 2, 3];
const squared = numbers.map(n => n * n); // [1, 4, 9]


Пример: Функция, возвращающая другую функцию
const multiplyBy = (factor) => (num) => num * factor;
const double = multiplyBy(2);
console.log(double(5)); // 10


🟠Функциональные методы массивов (map, filter, reduce)
Функциональные методы позволяют не мутировать массив, а создавать новый.
Используем map() для изменения элементов
const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2); // [2, 4, 6]


Используем filter() для фильтрации
const words = ["apple", "banana", "kiwi"];
const shortWords = words.filter(word => word.length < 6); // ["kiwi"]


Используем reduce() для вычислений
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, num) => acc + num, 0); // 10


🟠Каррирование (Currying)
Разделение функции на несколько функций, каждая принимает по одному аргументу.
function sum(a, b) {
return a + b;
}
console.log(sum(2, 3)); // 5


Пример: Каррированная функция
const sum = (a) => (b) => a + b;
console.log(sum(2)(3)); // 5


Ставь 👍 и забирай 📚 Базу знаний
1👍12
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие хуки добавляют для подключения роутера?

Во Vue с Vue Router:
- beforeRouteEnter — до создания компонента;
- beforeRouteUpdate — при смене параметров маршрута;
- beforeRouteLeave — при уходе с маршрута; Используются для логики навигации, авторизации и пр.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊6👍2🤔2
🤔 Какое свойство Flexbox отвечает за направление flex items?

Свойство flex-direction:
- row (по горизонтали),
- column (по вертикали),
- и их обратные варианты (row-reverse, column-reverse).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4🔥1