и посмотреть медиа
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.
🤔 Где писать запросы к серверу? Запросы к серверу в React можно выполнять в нескольких местах в зависимости от архитектуры вашего приложения и используемого подхода. 🚩Использование хуков useEffect позволяет выполнять побочные эффекты, такие как запросы к серверу, в функциональных компонентах. import React, { useState, useEffect } from 'react'; function DataFetchingComponent() { const [data, setData] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch('Ссылка скрыта const result = await response.json(); setData(result); } catch (error) { console.error('Error fetching data:', error); } }; fetchData(); }, []); // Пустой массив означает, что эффект выполнится только при монтировании компонента return ( {data ? ( {JSON.stringify(data, null, 2)} ) : ( Loading data... )} ); } export default DataFetchingComponent; 🚩Методы жизненного цикла в классовых компонентах Метод componentDidMount используется для выполнения запросов к серверу в классовых компонентах после монтирования компонента. import React, { Component } from 'react'; class DataFetchingComponent extends Component { constructor(props) { super(props); this.state = { data: null, }; } componentDidMount() { fetch('Ссылка скрыта .then(response => response.json()) .then(data => { this.setState({ data }); }) .catch(error => { console.error('Error fetching data:', error); }); } render() { const { data } = this.state; return ( {data ? ( {JSON.stringify(data, null, 2)} ) : ( Loading data... )} ); } } export default DataFetchingComponent; 🟠Сервисы или утилиты Запросы к серверу можно изолировать в отдельные файлы сервисов или утилит, что помогает сделать код более модульным и переиспользуемым. service.js export async function fetchData() { const response = await fetch('Ссылка скрыта if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); } DataFetchingComponent.js import React, { useState, useEffect } from 'react'; import { fetchData } from './service'; function DataFetchingComponent() { const [data, setData] = useState(null); useEffect(() => { fetchData() .then(data => setData(data)) .catch(error => console.error('Error fetching data:', error)); }, []); return ( {data ? ( {JSON.stringify(data, null, 2)} ) : ( Loading data... )} ); } export default DataFetchingComponent; 🟠Управление состоянием Для крупных приложений, где важно централизованное управление состоянием, запросы к серверу можно выполнять в рамках таких библиотек, как Redux или MobX. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как работает React? Это библиотека для построения пользовательских интерфейсов, основанная на компонентной архитектуре. Она использует Virtual DOM для оптимизации обновлений: изменения сначала вносятся в виртуальный DOM, а затем синхронизируются с реальным DOM минимальными операциями. React поддерживает однонаправленный поток данных, что упрощает управление состоянием приложения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как отменить обтекание картинки текстом? Когда мы добавляем картинку в HTML, текст по умолчанию может обтекать её, если используется float. 🚩Отмена обтекания с `clear: both;` Если изображение обтекается текстом из-за float, нужно очистить обтекание с помощью clear: both;. Этот текст не будет обтекать картинку. .float-img { float: left; /* Изображение обтекается текстом */ margin-right: 10px; } .clear-text { clear: both; /* Останавливает обтекание */ } 🚩Сделать изображение блочным (`display: block;`) По умолчанию img – inline-block элемент, поэтому текст может располагаться рядом. Если сделать его display: block;, текст уйдёт вниз. img { display: block; margin: 10px auto; /* Центрирование */ } 🚩Использовать `overflow: hidden;` для предотвращения наложений Если у родителя есть float, можно использовать overflow: hidden; для очистки потока. .container { overflow: hidden; /* Очищает обтекание */ } Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как увеличить в размере при наведении элемент, не сдвигая соседние? Чтобы увеличить элемент в размере при наведении, не сдвигая при этом соседние элементы, можно использовать CSS свойство transform с функцией scale. Это позволяет изменять размер элемента, не влияя на его положение и соседние элементы, так как трансформация происходит в контексте самого элемента и не меняет его фактические размеры в документе. Увеличение при наведении .container { display: flex; gap: 10px; } .item { width: 100px; height: 100px; background-color: lightblue; text-align: center; line-height: 100px; transition: transform 0.3s; } .item:hover { transform: scale(1.2); /* Увеличение размера при наведении */ } 1 2 3 🚩Почему это важно? 🟠Эффективность пользовательского интерфейса Увеличение элементов при наведении может служить для привлечения внимания пользователя или для улучшения взаимодействия, например, при работе с интерактивными элементами. 🟠Стабильность макета Применение трансформации с transform: scale позволяет изменять размер элемента без изменения его фактического размера и расположения в документе, что сохраняет стабильность макета и не нарушает расположение соседних элементов. 🟠Плавные анимации Использование transition делает анимацию плавной и приятной для глаз, улучшая общее восприятие интерфейса. Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое usecontext? Это один из встроенных хуков, который позволяет компонентам подписываться на контекст и получать доступ к данным контекста. Используется для передачи данных через дерево компонентов без необходимости передавать пропсы на каждом уровне. Это особенно полезно для глобальных данных, таких как текущий авторизованный пользователь, тема (светлая/темная) или настройки локализации. 🚩Как он работает 🟠Создание контекста Для создания контекста используется функция createContext. Она возвращает объект контекста, который содержит два компонента: Provider и Consumer. import React, { createContext, useState } from 'react'; const MyContext = createContext(); 🟠Provider Компонент Provider используется для предоставления значения контекста всем дочерним компонентам. Все компоненты внутри Provider могут получить доступ к значениям, переданным в value. const MyProvider = ({ children }) => { const [state, setState] = useState('Hello World'); return ( {children} ); }; 🟠useContext Используется для подписки на контекст в функциональных компонентах. Он принимает объект контекста, возвращаемый из createContext, и возвращает текущее значение контекста. import React, { useContext } from 'react'; const MyComponent = () => { const { state, setState } = useContext(MyContext); return ( {state} setState('New Value')}>Change Value ); }; Полный пример import React, { createContext, useState, useContext } from 'react'; // Создание контекста const MyContext = createContext(); const MyProvider = ({ children }) => { const [state, setState] = useState('Hello World'); return ( {children} ); }; const MyComponent = () => { const { state, setState } = useContext(MyContext); return ( {state} setState('New Value')}>Change Value ); }; const App = () => ( ); export default App; Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что известно о внедрении зависимостей? Dependency Injection (внедрение зависимостей) — это передача внешних зависимостей объекту вместо создания их внутри. Это позволяет легче тестировать, заменять реализации, повышает модульность и снижает связанность компонентов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Зачем нам разбивать приложение отдельно на backend и frontend? Разделение на Frontend (клиент) и Backend (сервер) – это стандартный подход в современной веб-разработке. Это делает приложение гибче, масштабируемее и удобнее в разработке. 🚩Почему лучше разделять? 🟠Гибкость и масштабируемость Можно менять Frontend и Backend независимо. Можно использовать разные технологии (например, Vue.js + Django). Можно легко разделить команды разработчиков. 🟠Повышенная безопасность Frontend не имеет доступа к базе данных. Все важные вычисления, авторизация, хранение данных происходят на сервере. API можно защитить токенами (JWT, OAuth). 🟠Уменьшение нагрузки на клиент Логика обработки данных выполняется на сервере. Клиент получает уже готовые данные, а не загружает огромные файлы. 🟠Легче разрабатывать и тестировать Можно разрабатывать Frontend и Backend независимо. Можно подменять сервер на mock-данные во время разработки. 🚩Как они общаются? (REST API & GraphQL) Разделённые приложения общаются через API: REST API (GET, POST, PUT, DELETE) GraphQL API (запросы только нужных данных) WebSockets (реальное время, чаты, онлайн-игры) GET Ссылка скрыта Ответ от Backend [ { "id": 1, "name": "Alice" }, { "id": 2, "name": "Bob" } ] Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какой тип у функции? В JavaScript функция — это объект типа function. Он имеет ссылочный тип и может передаваться как значение. Чем похожи массивы, объекты и функции? Все они — объекты. Можно добавлять свойства, передавать по ссылке. У каждого есть прототип, и они наследуют от Object. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое нотация о-большое? O-большое (Big O) — это способ описания эффективности алгоритма в зависимости от размера входных данных. Она показывает, как быстро растёт время выполнения или использование памяти при увеличении количества входных данных. 🚩Зачем нужна O-большое? Когда мы пишем код, важно понимать, насколько он эффективен, особенно при работе с большими массивами или сложными вычислениями. Big O помогает: - Оценить время работы алгоритма. - Понять, как алгоритм масштабируется. - Сравнить разные алгоритмы и выбрать лучший. 🚩Примеры сложности алгоритмов O(1) – Константное время function getFirstElement(arr) { return arr[0]; // Не зависит от размера массива } O(N) – Линейное время function findElement(arr, target) { for (let i = 0; i < arr.length; i++) { if (arr[i] === target) return i; } return -1; } O(N²) – Квадратичное время (плохо) function bubbleSort(arr) { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { if (arr[i] > arr[j]) { [arr[i], arr[j]] = [arr[j], arr[i]]; } } } return arr; } O(log N) – Логарифмическое время (оптимально) function binarySearch(arr, target) { let left = 0, right = arr.length - 1; while (left
Открыть канал и посмотреть медиаOnly registered users can share their opinion.
Be the first to share your impression of this resource!