и посмотреть медиа
Frontend | Interview questions
и посмотреть медиа
Interview questions frontend randomly.
Interview questions frontend randomly.
AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.
Collection of frontend questions: JavaScript, frameworks, performance, accessibility. Detailed answers will help confidently pass interviews.
🤔 Когда использовать useLayoutEffect, а когда useEffect? - useEffect вызывается после отрисовки браузером. Его используют для побочных эффектов, не влияющих на layout: загрузка данных, подписки, таймеры. - useLayoutEffect вызывается до того, как браузер "покажет" DOM пользователю. Подходит для синхронных изменений DOM, которые должны быть видны сразу: измерение размеров, синхронное позиционирование, изменения scroll. Резюме: по умолчанию — useEffect. useLayoutEffect нужен, когда важен контроль визуального представления до показа пользователю. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Почему методы жизненного цикла нельзя писать через прилоченную функцию? В Vue 2 и Vue 3 (Options API) методы жизненного цикла (mounted, created, beforeDestroy и др.) должны быть обычными функциями, а не стрелочными (() => {}). 🟠Как работает `this` в Vue? Когда Vue вызывает метод жизненного цикла, он автоматически привязывает this к экземпляру компонента. export default { data() { return { message: "Привет!" }; }, mounted() { console.log(this.message); // ✅ Работает, this = { message: "Привет!" } } }; 🟠Почему стрелочная функция не работает? Стрелочные функции не создают свой собственный this, а берут this из внешнего контекста (того, что было при их создании). export default { data() { return { message: "Привет!" }; }, mounted: () => { console.log(this.message); // ❌ Ошибка: this === undefined } }; 🟠Как стрелочные функции всё-таки можно использовать? Хотя стрелочные функции нельзя использовать для методов жизненного цикла, их можно применять внутри обычных методов: export default { data() { return { message: "Привет!" }; }, mounted() { setTimeout(() => { console.log(this.message); // ✅ Работает, this берётся из `mounted()` }, 1000); } }; Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какие методы будут у API? Методы API чаще всего соответствуют CRUD-операциям: - GET — получение данных. - POST — создание ресурса. - PUT/PATCH — обновление. - DELETE — удаление. Если REST не используется, методы могут быть обёрнуты в RPC-стиль или GraphQL-запросы: getUser, updatePrice, subscribeToPrice, logUserActivity. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что выбираешь ооп или функции? Выбор между объектно-ориентированным программированием (ООП) и функциональным программированием (ФП) зависит от задачи, которую нужно решить. Оба подхода имеют свои плюсы и минусы. 🚩Когда использовать ООП? Объектно-ориентированное программирование подходит, когда: Нужно моделировать реальные объекты и их поведение Приложение состоит из множества взаимодействующих сущностей Важно инкапсулировать данные и защитить их от прямого изменения Требуется повторное использование кода через наследование и полиморфизм class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} издает звук`); } } class Dog extends Animal { speak() { console.log(`${this.name} лает`); } } const dog = new Dog("Бобик"); dog.speak(); // "Бобик лает" 🚩Когда использовать функциональное программирование? Функциональный подход хорош, если Код должен быть чистым и предсказуемым Нужно избегать изменений состояния (иммутабельность) Требуется много работы с массивами, коллекциями данных Нужно легко писать асинхронный код const double = num => num * 2; const numbers = [1, 2, 3, 4]; const doubledNumbers = numbers.map(double); console.log(doubledNumbers); // [2, 4, 6, 8] Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое Web Workers и зачем они нужны? Web Workers позволяют запускать JavaScript-код в отдельном потоке, не блокируя основной поток интерфейса. Они полезны для тяжёлых вычислений, чтобы не замораживать UI. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Для чего в js нужна асинхронность? JavaScript – однопоточный язык, где код выполняется **последовательно, но иногда мы ждём ответа (запрос в интернет, чтение файла, таймер). Если всё делать синхронно, программа зависнет. 🟠Проблема синхронного кода Представьте, что мы загружаем данные из API синхронно: const data = fetch("Ссылка скрыта // ❌ Ожидание ответа console.log("Данные загружены:", data); 🟠Асинхронность решает эту проблему Асинхронный код не блокирует выполнение программы fetch("Ссылка скрыта .then(response => response.json()) .then(data => console.log("Данные загружены:", data)); console.log("Этот код выполнится сразу! 🚀"); 🚩Как работает асинхронность в JS? Callbacks (обратные вызовы) – старый способ. Promises (fetch(), then/catch) – современный вариант. async/await – удобный синтаксис для асинхронного кода. async/await – лучший способ писать асинхронный код async function getData() { try { let response = await fetch("Ссылка скрыта let data = await response.json(); console.log("Данные:", data); } catch (error) { console.error("Ошибка загрузки:", error); } } getData(); console.log("Этот код выполняется, пока ждём данные!"); 🚩Где нужна асинхронность? Запросы к серверу Чтение файлов Таймеры Работа с базами данных Взаимодействие с пользователем (ожидание ввода) Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое useContext? Это хук для доступа к данным из контекста. Он позволяет передавать данные между компонентами без необходимости проброса через пропсы. Это упрощает управление глобальным состоянием. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какие используешь подходы для написания приложения которую проще поддерживать, чем делать первоначальную разработку? При разработке frontend-приложений, которые в будущем будет проще поддерживать и масштабировать, я придерживаюсь ряда ключевых подходов. 🟠Разделение ответственности (Separation of Concerns) Это значит, что код должен быть разделен по зонам ответственности. В frontend-разработке это проявляется в: Чистом разделении логики, представления и данных (например, с помощью архитектуры MVC, MVVM или FLUX). Использовании компонентов в React/Vue или шаблонов в Angular. Разделении CSS, JS и HTML, либо использовании методологий, где стили хранятся рядом с компонентом (CSS Modules, Styled Components). Вместо того, чтобы писать всю логику и разметку в одном файле: function App() { const [count, setCount] = useState(0); return setCount(count + 1)}>Count: {count}; } Я разделяю бизнес-логику и представление // CounterLogic.js export function useCounter() { const [count, setCount] = useState(0); const increment = () => setCount(count + 1); return { count, increment }; } // Counter.js import { useCounter } from "./CounterLogic"; function Counter() { const { count, increment } = useCounter(); return Count: {count}; } 🟠Компонентный подход и повторное использование кода Frontend-приложения должны строиться из переиспользуемых и изолированных компонентов. Это уменьшает дублирование кода и делает его понятным. // Button.js (переиспользуемый компонент) function Button({ onClick, children }) { return {children}; } // Counter.js (использует Button) function Counter() { const [count, setCount] = useState(0); return setCount(count + 1)}>Count: {count}; } 🟠Чистый код и читаемость Код должен быть понятным не только мне, но и другим разработчикам. Понятные имена переменных и функций. Вместо x → userAge, вместо doSmth() → calculateTotalPrice(). Меньше вложенности. Вместо кучи if и else, лучше использовать early return. Разбиение кода на модули. Один файл = одна зона ответственности. function getDiscountedPrice(price, discount) { if (discount
Открыть канал и посмотреть медиа🤔 Какие достоинства у инкрементального DOM против виртуального? Инкрементальный DOM (например, в Svelte): - Менее абстрактен — ближе к реальному DOM. - Быстрее монтируется — нет необходимости в полной виртуальной копии. - Меньше памяти и меньше промежуточных структур. В отличие от виртуального DOM: - он не сравнивает деревья, а прямо вставляет нужные изменения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!