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
useReducer — альтернатива useState для управления сложным состоянием. Принимает редюсер-функцию (state, action) => newState и начальное состояние, возвращает текущее состояние и метод dispatch для генерации действий.


const [state, dispatch] = useReducer(reducer, initialState);


Редюсер обрабатывает действия (обычно объекты с `type`), обновляя состояние предсказуемо. Оптимален для связанных данных или когда следующее состояние зависит от предыдущего.


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


Используется для сложной логики состояния, особенно в сочетании с контекстом.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Тег <link> устанавливает связь между текущим HTML-документом и внешними ресурсами, такими как CSS-файлы, иконки или шрифты. Он размещается в <head> и чаще всего используется для подключения стилей (rel="stylesheet") или favicon (rel="icon").

Также <link> может применяться для предзагрузки ресурсов (rel="preload"), указания альтернативных версий страницы или установки отношений между документами через атрибут rel.


✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
Определяет, как элемент реагирует на события мыши/тача. Основные значения:
- auto (по умолчанию) — элемент обрабатывает события как обычно
- none — полностью игнорирует события (клики, ховеры)


.button { pointer-events: none; } /* Кнопка становится "некликабельной" */


Особенности:
- Не влияет на события клавиатуры (фокус остаётся доступным)
- Позволяет "прокликивать" сквозь элементы к нижним слоям
- Часто используется для временного отключения интерактивности

Работает для SVG и HTML-элементов. В сложных случаях комбинируется с visibility или opacity.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Коммит — это snapshot (снимок) состояния репозитория на определенный момент времени. Каждый коммит сохраняет изменения в файлах, а также содержит метаданные: автора, дату, сообщение и уникальный хеш (например, a1b2c3d).

Коммиты образуют историю проекта. Их можно просматривать, откатывать или объединять. Создается коммит командой:


git commit -m "Описание изменений"


Комментарий к коммиту должен быть четким и описывать суть изменений. Для просмотра истории коммитов используется git log.

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

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Атрибуты — это дополнительные свойства HTML-элементов, которые задают их характеристики или поведение. Они указываются внутри открывающего тега в формате name="value".

Некоторые атрибуты универсальны, например class, id или style, другие — специфичны для определенных элементов (href для <a>, src для <img>).


<a href="https://example.com" target="_blank">Ссылка</a>


Атрибут href задает URL, а target="_blank" открывает ссылку в новой вкладке.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Оператор keyof принимает тип объекта и возвращает объединение строковых литералов его ключей. Это полезно для строгой типизации при работе со свойствами объекта.


type Person = { name: string; age: number };
type PersonKeys = keyof Person; // "name" | "age"


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


function getProperty<T>(obj: T, key: keyof T) {
return obj[key];
}


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

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Для выполнения HTTP-запросов обычно используют библиотеки axios или fetch. Асинхронные операции обрабатывают в методах компонента, часто с применением async/await для удобства.


data() {
return { posts: [] };
},
async created() {
try {
const response = await axios.get('https://api.example.com/posts');
this.posts = response.data;
} catch (error) {
console.error('Ошибка загрузки данных:', error);
}
}


Для управления состоянием загрузки и ошибок добавляют соответствующие поля в data. В Vue 3 можно использовать Composition API с ref или reactive для аналогичной логики.


setup() {
const posts = ref([]);
const loadPosts = async () => {
posts.value = await axios.get('https://api.example.com/posts');
};
return { posts, loadPosts };
}


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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Свойство user-select определяет, может ли пользователь выделять текст на странице. Для полного запрета выделения используется значение none.


.unselectable {
user-select: none;
-webkit-user-select: none; /* Для Safari */
-moz-user-select: none; /* Для Firefox */
}


Это полезно для элементов интерфейса, где выделение текста не требуется (кнопки, иконки). Свойство не блокирует копирование через контекстное меню или DevTools.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Для клонирования репозитория используется команда git clone, за которой следует URL репозитория (HTTPS или SSH). Эта команда создает локальную копию со всей историей и ветками.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Подъем состояния — это перенос общего состояния из дочерних компонентов в их ближайшего общего родителя. Такой подход обеспечивает синхронизацию данных между компонентами.


function Parent() {
const [value, setValue] = useState('');
return (
<>
<ChildA value={value} onChange={setValue} />
<ChildB value={value} />
</>
);
}


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

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Таблицы используются для структурированного отображения данных в строках и столбцах. Основные теги:


<table>
<tr>
<th>Заголовок 1</th>
<th>Заголовок 2</th>
</tr>
<tr>
<td>Данные 1</td>
<td>Данные 2</td>
</tr>
</table>


- <table>: контейнер таблицы
- <tr>: строка таблицы
- <th>: ячейка заголовка (жирный текст)
- <td>: ячейка с данными

Для объединения ячеек используются атрибуты colspan и rowspan. Стилизация выполняется через CSS.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Транспиляция — это преобразование TypeScript-кода в чистый JavaScript через компилятор tsc. В процессе удаляются типы и аннотации, сохраняется логика кода, а также применяются настройки из tsconfig.json (версия JS, модули и другие опции).

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Для работы с датами используется объект Date. Он позволяет создавать экземпляры дат, производить манипуляции и форматирование.


const now = new Date(); // Текущая дата и время
const specificDate = new Date(2024, 11, 31); // 31 декабря 2024


Основные методы:
- getFullYear(), getMonth(), getDate() — получение компонентов даты
- setHours(), setMinutes() — установка времени
- toLocaleDateString() — локализованное форматирование

Для сложных операций (интервалы, парсинг) удобно использовать библиотеки типа moment.js или date-fns.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Нестандартные шрифты подключаются через правило @font-face, которое указывает путь к файлу шрифта и его свойства.


@font-face {
font-family: 'CustomFont';
src: url('fonts/custom-font.woff2') format('woff2'),
url('fonts/custom-font.woff') format('woff');
font-weight: normal;
font-style: normal;
}


После объявления шрифт применяется через свойство font-family. Современные форматы (WOFF2) обеспечивают лучшее сжатие. Важно указывать fallback-шрифты на случай проблем с загрузкой.


body {
font-family: 'CustomFont', Arial, sans-serif;
}


Для оптимальной производительности рекомендуются подмножества шрифтов и предзагрузка через <link rel="preload">.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Для добавления файлов используется команда git add, которая помечает изменения для последующего коммита. Можно добавить конкретные файлы (git add имя_файла) или все изменения (git add .).

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


function Counter() {
const [count, setCount] = useState(0);
return (
<button onClick={() => setCount(count + 1)}>
Clicked {count} times
</button>
);
}


Односторонний поток данных упрощает отладку, а богатая экосистема (React Router, Redux) расширяет возможности. Поддержка SSR (Next.js) улучшает SEO и производительность.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Для добавления аудио используется тег <audio> с атрибутом src или вложенными тегами <source> для поддержки разных форматов.


<audio controls>
<source src="track.mp3" type="audio/mpeg">
<source src="track.ogg" type="audio/ogg">
Ваш браузер не поддерживает аудио.
</audio>


- controls добавляет стандартный интерфейс управления
- autoplay включает автоматическое воспроизведение (ограничено в браузерах)
- loop зацикливает воспроизведение

Для кастомного плеера используется JavaScript API (play(), pause()).

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥1
Модификатор public позволяет обращаться к свойствам и методам из любого места, private ограничивает доступ только текущим классом, а protected разрешает доступ самому классу и его подклассам. Эти модификаторы помогают контролировать инкапсуляцию и предотвращают случайное изменение внутреннего состояния.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Прототипное наследование — это механизм, при котором объекты могут наследовать свойства и методы друг от друга через ссылку __proto__. Каждый объект имеет скрытую ссылку на свой прототип (другой объект), что позволяет делегировать доступ к отсутствующим свойствам.


const animal = { eats: true };
const rabbit = { jumps: true };
rabbit.__proto__ = animal; // Наследование

console.log(rabbit.eats); // true (свойство взято из прототипа)


Функции-конструкторы используют prototype для задания прототипа создаваемым объектам. Современный синтаксис заменяет __proto__ на Object.create() и class.

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

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