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
👉 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
👍3
🟠Контекст в React позволяет передавать данные через дерево компонентов без пропсов. Для управления состоянием можно создать контекст и провайдер, который будет хранить состояние и методы для его обновления.

Создание контекста:

const StateContext = React.createContext();


Провайдер с состоянием:

function StateProvider({ children }) {
const [state, setState] = useState(initialState);
return (
<StateContext.Provider value={{ state, setState }}>
{children}
</StateContext.Provider>
);
}


Использование в компоненте:

const { state, setState } = useContext(StateContext);


Для сложного состояния можно использовать useReducer вместо useState. Такой подход заменяет Redux в небольших приложениях.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Внешние стили подключаются в HTML-документе с помощью тега <link> внутри раздела <head>. Указание атрибутов rel="stylesheet" и href="путь_к_файлу.css" обязательно для корректной загрузки стилей.

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

Простейший пример — проверка через typeof:

function printId(id: number | string) {
if (typeof id === 'string') {
console.log(id.toUpperCase());
} else {
console.log(id.toFixed(2));
}
}


Пользовательские Type Guards используют предикат типа (is):

function isString(value: unknown): value is string {
return typeof value === 'string';
}


Также работают с instanceof и проверкой свойств объекта. Type Guards улучшают безопасность типов и помогают избежать ошибок.

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

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

Копирование и объединение массивов:

const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]


Клонирование и модификация объектов:

const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 }; // { a: 1, b: 2, c: 3 }


Передача элементов массива как аргументов функции:

const nums = [1, 2, 3];
Math.max(...nums); // 3


Работает в любом итерируемом контексте, включая строки и коллекции.

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

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

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


.hidden-element {
visibility: hidden;
}


Элемент остается на странице, занимает место, но становится невидимым. В отличие от display: none, не удаляется из потока документа.

Альтернативный вариант — прозрачность:

.transparent-element {
opacity: 0;
}


Сохраняет кликабельность и взаимодействие, если не отключено pointer-events.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Индексация (staging area) — промежуточная область между рабочим каталогом и репозиторием. Содержит изменения, которые будут включены в следующий коммит.

Добавление файлов в индекс:

git add file.txt


Просмотр состояния индекса:

git status


Индекс позволяет точно контролировать, какие изменения попадут в коммит, включая частичное добавление изменений в файлах.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
forwardRef позволяет передавать ref через компонент-обёртку к дочернему DOM-элементу или классовому компоненту. Используется когда нужно получить прямой доступ к DOM-ноде или экземпляру компонента, обёрнутого в HOC.

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🟣<iframe> — это inline-фрейм, позволяющий встраивать отдельный HTML-документ в текущую страницу. От обычных фреймов (устаревших <frame>) отличается тем, что может быть размещён внутри контента, а не только в frameset.


<iframe src="page.html" width="300" height="200"></iframe>


Основные отличия:
- iframe работает как встроенный элемент, а фреймы требовали специальной структуры <frameset>
- iframe поддерживает стилизацию через CSS
- iframe безопаснее и современнее устаревших фреймов

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
➡️ Record — это utility-тип для создания объектов с заданными типами ключей и значений. Синтаксис: Record<Keys, Type>, где Keys — тип ключа, Type — тип значения.


const users: Record<string, number> = {
'id1': 25,
'id2': 30
};


Используется для:
- Описания словарей с единым типом значений
- Создания map-подобных структур
- Гарантирует типобезопасность при динамических ключах

Альтернатива index signatures, но с более явным синтаксисом.

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

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🔹Композиция — это подход к организации логики компонентов через Composition API. Вместо опций (data, methods) используется функция setup(), где логика группируется по функциональности, а не по типам.


import { ref, computed } from 'vue';

export default {
setup() {
const count = ref(0);
const double = computed(() => count.value * 2);

function increment() {
count.value++;
}

return { count, double, increment };
}
}


Преимущества:
- Гибкая организация кода
- Повторное использование логики через composable-функции
- Лучшая типобезопасность с TypeScript

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
vw (viewport width) и vh (viewport height) — относительные единицы, привязанные к размерам окна браузера. 1vw = 1% ширины, 1vh = 1% высоты viewport.


.element {
width: 50vw; /* 50% от ширины окна */
height: 100vh; /* 100% от высоты окна */
}


Применяются для:
- Адаптивных интерфейсов, масштабируемых относительно окна
- Создания полноэкранных секций
- Резиновых элементов без привязки к родительским блокам

Не учитывают скролл-бар, в отличие от %.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
😎Для восстановления используйте git reflog для поиска последних действий и git checkout или git reset для возврата файлов.


git reflog # Поиск последнего коммита перед удалением
git checkout HEAD@{n} -- path/to/file # Восстановление файла из истории


Если файлы были проиндексированы, но не закоммичены:

git fsck --lost-found # Поиск dangling-объектов


Для восстановления после git rm используйте git reset HEAD file перед git checkout -- file.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
▶️Lazy loading — это отложенная загрузка компонентов, которая происходит только при их фактическом использовании. Реализуется через React.lazy и Suspense.


const LazyComponent = React.lazy(() => import('./LazyComponent'));

function App() {
return (
<React.Suspense fallback={<div>Loading...</div>}>
<LazyComponent />
</React.Suspense>
);
}


Основные особенности:
- Уменьшает начальный размер бандла
- Загружает компоненты динамически при необходимости
- Требует обертки в <Suspense> для отображения fallback-контента

Работает только с default-экспортами в компонентах.

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Атрибут required указывает, что поле формы обязательно для заполнения перед отправкой. Применяется к элементам <input>, <select> и <textarea>. Если поле пустое, браузер блокирует отправку формы и выводит сообщение об ошибке.


<input type="text" name="username" required>


Работает только с формами (<form>). Поддерживается всеми современными браузерами, но для кастомизации сообщений требуется JavaScript.

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

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Set – коллекция уникальных значений. Позволяет быстро проверять наличие элемента, добавлять и удалять значения.


const set = new Set([1, 2, 3]);
set.add(4); // Добавить значение
set.has(2); // true – проверка наличия
set.delete(1); // Удалить значение


Map – коллекция пар ключ-значение, где ключом может быть любой тип. Удобен для хранения данных с нестроковыми ключами.


const map = new Map();
map.set('name', 'Alice'); // Добавить запись
map.get('name'); // 'Alice' – получить значение
map.delete('name'); // Удалить запись


Обе структуры поддерживают итерацию и имеют методы size, clear().

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Реактивные свойства автоматически обновляют представление при изменении. Vue делает их реактивными через data() или ref() / reactive() (Composition API).


data() {
return { count: 0 } // Реактивное свойство
}


Обычные свойства (например, объявленные в `created()`) не отслеживаются Vue. Их изменения не вызывают перерисовку.


created() {
this.nonReactive = 42 // Не реактивное
}


Реактивность работает только на инициализации. Добавление свойств после создания (this.newProp = value) требует Vue.set() или reactive().

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

✈️ Frontend собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Анимации в CSS создаются с помощью @keyframes, где описываются промежуточные состояния, и свойства animation, которое применяет эти ключевые кадры к элементу. Для плавных переходов между состояниями также можно использовать transition, указывая свойства, длительность и функцию скорости изменения.

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