Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Какие особенности имеют хуки useEffect и useLayoutEffect?
useEffect выполняется асинхронно после рендеринга, что позволяет обновлять DOM без блокировки отображения. useLayoutEffect, напротив, выполняется синхронно сразу после изменения DOM и перед его отображением, что позволяет производить измерения или манипуляции с элементами. Это может быть полезно, когда необходимо сразу же реагировать на изменения и избежать мерцания интерфейса.
Какие методы участвуют в процессе layout у UIView? А если что-то подобное с констрейнтами?
Основные методы:
layoutSubviews() — вызывается для перерасчета позиций.
setNeedsLayout() — помечает view для обновления.
layoutIfNeeded() — немедленный перерасчет.
Для констрейнтов: система Auto Layout вызывает эти методы автоматически.
Чем отличается скрытие элементов с помощью opacity, visibility и display: none?
opacity: 0 делает элемент невидимым, но он продолжает занимать место и реагировать на события. visibility: hidden также скрывает элемент, сохраняя его место в layout, но события мыши не срабатывают. display: none полностью удаляет элемент из потока документа, освобождая занимаемое место.
Что такое memory layout? Для каких типов важно расположение свойств?
Memory layout описывает, как данные типа располагаются в памяти. Для value типов (например, структур) важно расположение свойств, так как оно влияет на размер и выравнивание. Для reference типов это менее критично, так как они хранятся в куче.
Как ты верстаешь: Autolayout или фреймы? Сравни их по производительности.
Autolayout удобнее для адаптивной верстки, но может быть медленнее фреймов из-за расчета constraints. Frame-based layout быстрее, но требует ручного расчета размеров и позиций. Для сложных интерфейсов предпочтителен Autolayout, для производительности — фреймы.
Что делают setNeedsLayout и layoutIfNeeded?
В чем разница между viewWillLayoutSubviews и viewDidLayoutSubviews?
Как Auto Layout пересчитывает констрейнты при изменении состояния UI?
В каких случаях Auto Layout может негативно влиять на производительность?
Когда предпочтительнее использовать фреймовую верстку вместо Auto Layout?
Рейтинг:
2
Сложность:
7
setNeedsLayout помечает что view требует обновления layout в следующем цикле run loop. layoutIfNeeded немедленно обновляет layout, если он помечен как dirty. Первый откладывает обновление, второй форсирует его.
Рейтинг:
4
Сложность:
7
Оба метода вызываются во время layout-прохода, но в разные моменты. viewWillLayoutSubviews вызывается до того, как система рассчитает и применит фреймы сабвью, а viewDidLayoutSubviews — после завершения расчётов. В первом методе удобно менять констрейнты или подготавливать состояние, во втором — работать с уже финальными размерами. Неправильный выбор метода часто приводит к бесконечным layout-циклам.
Рейтинг:
5
Сложность:
8
Auto Layout пересчитывает констрейнты при любом изменении, которое может повлиять на геометрию интерфейса. Система помечает layout как “грязный”, затем в следующем layout-проходе решает систему уравнений и применяет новые размеры. Перерасчёт происходит лениво и может объединяться с другими изменениями. Чем сложнее и глубже иерархия, тем дороже этот процесс.
Рейтинг:
5
Сложность:
8
Auto Layout может негативно влиять на производительность, когда используется в сложных и часто обновляемых иерархиях. Частые изменения констрейнтов, глубокие деревья view и layout в каждом кадре приводят к дорогим перерасчётам. Особенно заметно это в списках, анимациях и при скролле. В таких местах Auto Layout требует аккуратного использования или замены.
Рейтинг:
4
Сложность:
7
Фреймовую верстку предпочтительно использовать там, где интерфейс простой, размеры известны заранее или UI часто обновляется. Она даёт полный контроль над геометрией и работает быстрее, так как не требует решения системы ограничений. Особенно хорошо фреймы подходят для ячеек списков, кастомных view и анимаций. При этом ответственность за адаптацию интерфейса ложится на разработчика.
Рейтинг:
4
Сложность:
6
Рейтинг:
2
Сложность:
5
Рейтинг:
3
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6