и посмотреть медиа
Frontend | Вопросы собесов
и посмотреть медиа
Вопросы собеседований по frontend с разбором.
Вопросы собеседований по frontend с разбором.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Сборник вопросов по frontend: JavaScript, фреймворки, производительность, доступность. Подробные ответы помогут уверенно пройти интервью.
🤔 Как мы будем через js анимировать что либо? В JavaScript есть три основных способа создания анимаций: CSS-анимации (transition, @keyframes) + изменение классов через JS Метод requestAnimationFrame() Использование библиотек (GSAP, Anime.js, Velocity.js) 🟠CSS-анимации + управление через JS Самый простой способ — использовать CSS-анимации, а в JS только добавлять или убирать классы. Анимировать #box { width: 100px; height: 100px; background: red; transition: transform 0.5s ease-in-out; } .move { transform: translateX(200px); } function toggleBox() { document.getElementById("box").classList.toggle("move"); } 🟠`requestAnimationFrame()` — лучший способ в чистом JS Если нужно более гибкое управление анимацией, используем requestAnimationFrame(). Старт #box { width: 50px; height: 50px; background: blue; position: absolute; } let position = 0; let animationId; function animate() { position += 5; // Двигаем на 5px за кадр document.getElementById("box").style.transform = `translateX(${position}px)`; if (position < 300) { // Останавливаем, когда достигнет 300px animationId = requestAnimationFrame(animate); } } function startAnimation() { cancelAnimationFrame(animationId); // Останавливаем предыдущую анимацию position = 0; animate(); } 🟠Библиотеки (GSAP, Anime.js, Velocity.js) Если нужно делать мощные анимации с минимальным кодом, лучше использовать библиотеку. Анимировать function animateBox() { gsap.to("#box", { x: 300, rotation: 360, duration: 2, ease: "elastic.out(1,0.3)" }); } Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое нечистая функция? Нечистая функция — функция, которая: - Имеет побочные эффекты (запросы, изменения внешнего состояния). - Может возвращать разные результаты при одних и тех же входных данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что можешь рассказать об version? version (версия) – это числовой или текстовый идентификатор, который используется для обозначения определённого состояния кода, программы, библиотеки или API. Версия помогает понимать, какие изменения были внесены, и совместима ли текущая версия с предыдущими. 🟠Семантическое версионирование (SemVer) Наиболее распространённый стандарт версионирования – SemVer (Semantic Versioning). Он использует формат MAJOR.MINOR.PATCH Пример в package.json (Node.js-проекты): { "name": "my-app", "version": "1.2.3" } Команда для обновления версии в package.json npm version major # 2.0.0 npm version minor # 1.3.0 npm version patch # 1.2.4 🟠Версионирование API При работе с REST API или GraphQL API тоже используют версии, чтобы не ломать старые клиенты. Ссылка скрыта 🟠Версионирование в Git В Git версиями называют теги (tags), привязанные к коммитам. git tag v1.0.0 git push origin v1.0.0 Чтобы посмотреть все версии git tag Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое блочная модель? Блочная модель (Box model) описывает, как браузер отображает и рассчитывает размеры элементов: - content → padding → border → margin. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое inline стили, и какой они имеют приоритет? Inline стили — это способ применения CSS-правил непосредственно к HTML-элементу через атрибут style. Этот метод позволяет задать стили индивидуально для конкретного элемента, напрямую внутри его тега, без использования внешних или внутренних стилевых листов. Этот текст будет красного цвета и с размером шрифта 20px. 🚩Приоритетность inline стилей Они имеют более высокий приоритет, чем стили, заданные через внешние или внутренние стилевые листы. Это означает, что если для одного и того же элемента заданы стили через CSS-классы или идентификаторы и через inline атрибут style, то они будут применены. 🚩Порядок приоритетов CSS Inline стили (наивысший приоритет) ID селекторы Классы, псевдоклассы и атрибуты Элементы и псевдоэлементы (наименьший приоритет) Стоит отметить, что существует способ переопределить даже их с помощью правила !important в CSS, однако его использование следует минимизировать, поскольку это может усложнить дальнейшее управление и обслуживание стилей. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какие есть значения у box-sizing? CSS-свойство box-sizing принимает два значения: - content-box – размер элемента считается по контенту, без учета padding и border. - border-box – размер включает контент, padding и border, что облегчает расчет ширины/высоты. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Когда брать абсолютные величины а когда относительные? Выбор между абсолютными и относительными единицами измерения зависит от контекста использования и целей, которые вы преследуете. Рассмотрим подробнее, когда и почему стоит использовать те или иные единицы. 🚩Абсолютные величины (например, 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`): Глобальная консистентность: Когда нужно задавать размер относительно корневого элемента (обычно ), что обеспечивает более предсказуемое масштабирование. Шрифты и отступы: Для элементов, которые должны быть пропорциональны базовому размеру шрифта 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; /* Относительный внешний отступ */ } Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как решить проблему несовместимости некоторых CSS-свойств в браузере? - Использовать vendor-префиксы (-webkit-, -moz-, -ms-, -o-); - Проверять поддержку на сайте caniuse.com; - Писать fallback-стили; - Использовать полифиллы или normalize.css для приведения к общему стилю. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Основные причины отказа от классовых компонентов в react? С появлением React Hooks в версии 16.8 (2019 год) классовые компоненты стали устаревшим способом создания компонентов. Сегодня функциональные компоненты с хуками заменяют классы. Давайте разберем почему. 🟠Меньше кода → чище и понятнее Функциональные компоненты короче, читаются легче, а код становится чище. class Counter extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } increment = () => { this.setState({ count: this.state.count + 1 }); }; render() { return ( Счетчик: {this.state.count} ); } } Функциональный компонент (хуки делают код проще) function Counter() { const [count, setCount] = useState(0); return ( setCount(count + 1)}> Счетчик: {count} ); } 🟠Легче управлять жизненным циклом (useEffect vs componentDidMount) В классах жизненный цикл* компонента состоит из нескольких методов (componentDidMount, componentDidUpdate, componentWillUnmount). class Timer extends React.Component { constructor(props) { super(props); this.state = { time: 0 }; } componentDidMount() { this.timer = setInterval(() => { this.setState({ time: this.state.time + 1 }); }, 1000); } componentWillUnmount() { clearInterval(this.timer); } render() { return Время: {this.state.time} секунд ; } } Функциональный компонент (хуки делают все проще) function Timer() { const [time, setTime] = useState(0); useEffect(() => { const timer = setInterval(() => setTime(t => t + 1), 1000); return () => clearInterval(timer); }, []); return Время: {time} секунд ; } 🟠Лучшая производительность (меньше потребления памяти) Классовые компоненты используют экземпляры классов, а функциональные компоненты – просто функции. Создают экземпляры this Обрабатывают setState Хранят лишние связи и контексты Не создают this Используют только нужные данные Оптимизируются через React.memo const Button = React.memo(({ onClick }) => { console.log("Ререндер кнопки"); return Нажми; }); function App() { const [count, setCount] = useState(0); const increment = useCallback(() => setCount(c => c + 1), []); return ( Счетчик: {count} ); } 🟠Легче переиспользовать логику (React Hooks vs HOC/Render Props) Раньше в классах код переиспользовали через HOC и Render Props, но это делало код сложным. function withLogging(WrappedComponent) { return class extends React.Component { componentDidMount() { console.log("Компонент монтирован"); } render() { return ; } }; } Хуки (useEffect) делают код чище function useLogger() { useEffect(() => console.log("Компонент монтирован"), []); } function MyComponent() { useLogger(); return Привет, мир! ; } 🟠Функциональные компоненты – будущее React React официально рекомендует использовать функциональные компоненты Dan Abramov (разработчик React) Новые фичи React (Suspense, Server Components) создаются для функциональных компонентов Классы не работают в React Server Components Большинство современных библиотек (Redux Toolkit, React Query) рассчитаны на хуки Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!