Frontend собеседования – Telegram
Frontend собеседования
1.54K subscribers
383 photos
543 links
Подготовка к собеседованиям на позицию Frontend-разработчик

Еще больше ответов на сайте https://frontview-it.ru

JS собеседования - @frontview_js
Frontend работа - @frontview_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Тег <code> используется для выделения фрагментов кода в HTML. Он отображает текст моноширинным шрифтом, сохраняя форматирование, но для многострочного кода лучше подходит <pre>.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👉 HEAD в Git — указатель на текущий коммит или ветку. Он всегда показывает, где находится рабочая область (последний загруженный коммит). Если HEAD указывает на ветку, он перемещается при новых коммитах. В оторванном состоянии (detached HEAD) ссылается напрямую на коммит.

git show HEAD  # Просмотр текущего коммита


HEAD хранится в .git/HEAD и может ссылаться на другой указатель (например, ref: refs/heads/main) или хэш коммита.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Рендеринг массивов в React выполняется с помощью метода map(), который преобразует каждый элемент массива в JSX-элемент. Каждый элемент должен иметь уникальный key для оптимизации процесса обновления DOM.


const items = ['Apple', 'Banana', 'Orange'];
const listItems = items.map((item, index) => (
<li key={index}>{item}</li>
));


Использование index в качестве key допустимо, но не рекомендуется для динамически изменяемых списков. Лучше применять уникальные идентификаторы из данных.

Для условного рендеринга можно комбинировать map() с проверками:


{items.length > 0 && items.map(item => (
<div key={item.id}>{item.name}</div>
))}


Если массив пуст, можно вывести fallback-контент.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
Utility-типы в TypeScript позволяют трансформировать существующие типы для создания новых. Omit исключает указанные свойства, Pick выбирает только нужные, а Partial делает все поля необязательными.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Объект arguments — это псевдомассив, доступный внутри обычных (не стрелочных) функций. Он содержит все переданные аргументы, даже если они не объявлены в параметрах.


function sum() {
let total = 0;
for (let i = 0; i < arguments.length; i++) {
total += arguments[i];
}
return total;
}


arguments не является настоящим массивом, поэтому методы типа map или forEach недоступны без преобразования. В современных проектах вместо arguments чаще используют rest-параметры (...args).

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Свойство object-position определяет выравнивание содержимого внутри заменяемого элемента, такого как <img> или <video>, относительно его контейнера. Работает совместно с object-fit.

По умолчанию значение object-position: 50% 50% центрирует содержимое. Можно задать смещение в пикселях или процентах:


img {
object-fit: cover;
object-position: 20px 10%;
}


Первый параметр — горизонтальное смещение, второй — вертикальное. Отрицательные значения допустимы. Если указано одно значение, второе считается 50%.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Альтернативный текст для изображений задаётся через атрибут alt и нужен для доступности — он отображается, если изображение не загрузилось, и озвучивается скринридерами для слабовидящих. Также alt помогает поисковым системам понимать содержимое картинки.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Рефы (refs) в React позволяют получать прямой доступ к DOM-элементам или React-компонентам, обходя механизм реактивности. Используются для управления фокусом, анимациями, интеграции со сторонними библиотеками.

Создаются через useRef (в функциональных компонентах) или createRef (в классовых). Реф присваивается элементу через атрибут ref:


const inputRef = useRef(null);

<input ref={inputRef} />


После монтирования inputRef.current будет содержать DOM-узел. Изменения рефа не вызывают ререндер компонента.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Чтобы проверить чётность числа, можно использовать оператор остатка от деления %. Если число делится на 2 без остатка — оно чётное.


function isEven(num) {
return num % 2 === 0;
}


Для отрицательных чисел результат также будет корректным. Альтернативный способ — проверка младшего бита:


const isEven = (num) => (num & 1) === 0;


Оба метода работают с целыми числами. Первый вариант более читаем, второй — быстрее.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Свойство tab-size определяет ширину символа табуляции (\t) в пробелах. По умолчанию равно 8, но можно задать любое целое число или значение в пикселях для точного контроля отступов в тексте с табами.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
В Git REMOTE — это ссылка на удалённый репозиторий, обычно расположенный на GitHub, GitLab или другом сервере. Позволяет синхронизировать локальные изменения с удалённой версией проекта.

Основные команды для работы с remote:

git remote add origin <url> # Добавляет удалённый репозиторий
git remote -v # Показывает список удалённых репозиториев
git push origin main # Отправляет изменения в удалённую ветку
git fetch origin # Загружает изменения без слияния
git pull origin main # Забирает изменения и сливает с текущей веткой


Имя origin используется по умолчанию, но может быть изменено.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
SyntheticEvent в React — это кросс-браузерная обёртка над нативными DOM-событиями, обеспечивающая единое API для всех браузеров.


function handleClick(e) {
e.preventDefault(); // Работает во всех браузерах
console.log(e.type); // 'click'
}


События автоматически делегируются через пулинг, что улучшает производительность. Свойства SyntheticEvent включают target, currentTarget, stopPropagation() и другие.

После обработки события все свойства SyntheticEvent обнуляются для оптимизации памяти, поэтому асинхронный доступ к ним требует вызова e.persist().

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
HTML напрямую влияет на SEO, так как поисковые системы анализируют его структуру и семантику для определения релевантности страницы. Правильное использование тегов (<noscript>, <h1>-<h6>, <meta>, <img alt>) улучшает индексацию и ранжирование сайта.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
ReadonlyArray — это специальный тип в TypeScript, представляющий иммутабельный (неизменяемый) массив. В отличие от обычного массива, он запрещает модифицирующие операции:


const arr: ReadonlyArray<number> = [1, 2, 3];
arr.push(4); // Ошибка: Property 'push' does not exist


Доступны только методы для чтения (map, filter, slice). Преобразовать в обычный массив можно через as Array<T> или spread-оператор ([...arr]). Используется для защиты данных от случайных изменений.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
Метод split() разбивает строку на массив подстрок по указанному разделителю.


const str = 'a,b,c';
const arr = str.split(','); // ['a', 'b', 'c']


Если разделитель пустой (''), строка разбивается на отдельные символы. Необязательный второй аргумент ограничивает длину результирующего массива.


'hello'.split('', 3); // ['h', 'e', 'l']


Если разделитель не найден, возвращается массив с исходной строкой.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Функции min() и max() в CSS позволяют задавать значения свойств как минимальный или максимальный результат из перечисленных параметров. min() выбирает наименьшее значение из списка, а max() — наибольшее, что полезно для адаптивных границ размеров (например, width: min(100%, 500px)).

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
JSX транслируется в вызовы React.createElement(). Каждый JSX-элемент преобразуется в функцию, где:



<div className="test">Hello</div>
// Становится:
React.createElement('div', { className: 'test' }, 'Hello');


Первый аргумент — тип элемента, второй — пропсы, остальные — дети. Компоненты передаются по имени <Component />React.createElement(Component). Трансляция происходит через Babel или TypeScript до запуска кода.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Операция push в Git отправляет локальные коммиты в удалённый репозиторий.


git push <remote> <branch>


- <rem
ote> — имя удалённого репозитория (обычно origin)
- <bra
nch> — ветка, которую нужно отправить


git push -u origin main


Флаг -u связывает локальную ветку с удалённой для будущих push/pull без указания параметров. При конфликтах требуется предварительный pull.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
HTML5 ввёл семантические теги для улучшения структуры документа: <header>, <footer>, <article>, <section>, <nav>, <aside>, а также медиа-теги <video>, <audio> и графический <canvas>. Эти элементы заменили универсальные <div> в ключевых местах разметки, упрощая понимание кода и SEO-оптимизацию.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Цикл for выполняет блок кода многократно, пока условие истинно. Состоит из трёх частей:


for (инициализация; условие; шаг) {
// тело цикла
}


- Инициализация — задаёт начальное значение (например, let i = 0)
- Условие — проверяется перед каждой итерацией (i < 10)
- Шаг — выполняется после каждой итерации (i++)

Используется для перебора массивов, строк или повторения операций. Альтернативы — for...of (для итерируемых объектов) и forEach (для массивов).

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
CSS-спрайты — это метод объединения нескольких изображений в один файл для уменьшения количества HTTP-запросов. Часто применяется для иконок, кнопок и других мелких элементов.

Как использовать:
1. Создать спрайт, разместив все изображения в одном файле (например, sprite.png).

2. Задать элементу фоновое изображение и позиционировать его с помощью background-position:


.icon {
background-image: url('sprite.png');
width: 32px;
height: 32px;
}

.icon-home {
background-position: 0 0;
}

.icon-settings {
background-position: -32px 0;
}


Преимущества: ускорение загрузки страницы, меньше запросов к серверу. Недостаток — сложность обновления при изменении спрайта.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3