Специализация
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 в телеграм
Какова роль main() в C?
main() – это главная функция, с которой начинается выполнение программы на C. Именно с неё запускается код, и без неё компилятор выдаст ошибку. В main() можно передавать аргументы командной строки и возвращать код завершения.
Скомпилируется ли программа на C без функции main()? Что насчёт её выполнения?
Программа на C может быть скомпилирована без функции main(), но она не будет выполняться, так как main() — это точка входа программы.
Почему важно избегать блокировки main-потока при работе с сетью?
Главный (UI) поток обрабатывает все касания, анимации и отрисовку. Если вы выполняете сетевые операции или тяжёлую обработку в нём, интерфейс замёрзнет, приложение перестанет реагировать и может быть завершено системой за «Not Responding».
Почему при работе с плеером необходим main-диспетчер? Что происходит при вызове из другого потока?
Плеер требует main-диспетчера, потому что управляет UI-элементами (например, SurfaceView). Вызов из другого потока может вызвать краш.
Как работает UI-поток (Looper, Handler)? Что делает main.immediate?
Looper — бесконечный цикл обработки сообщений.
Handler — отправляет задачи в Looper.
main.immediate — выполняет задачу сразу, если текущий поток — main.
Чистая архитектура. Назови слои. От кого зависит domain?
Что такое DDD (Domain-Driven Design) и как можно применить этот подход на практике?
Что такое Domain-Driven Design (DDD) и в чём заключается его фундаментальная идея?
Как выявлять и исправлять причины блокировки main thread?
В чем разница между выполнением задач на main queue и background queue?
Рейтинг:
3
Сложность:
9
Слои: Entities (domain), Use Cases, Interface Adapters, Frameworks & Drivers. Domain не зависит ни от чего - это ядро системы.
Рейтинг:
4
Сложность:
8
DDD (Domain-Driven Design) — это подход к разработке программного обеспечения, который фокусируется на сложной предметной области (домене). Его основная идея — максимально точно смоделировать в коде бизнес-процессы, правила и понятия, используя общий язык между разработчиками и экспертами.
На практике его применяют через:
Глубокое погружение в домен: Постоянное общение с бизнес-экспертами.
Создание единого языка (Ubiquitous Language): Использование одних и тех же точных терминов (например, "Портфель заказов", "Инвойс", "Сборка") в разговорах, документах и коде.
Выделение bounded context (ограниченных контекстов): Чёткое разделение большой системы на относительно независимые модули, каждый со своей внутренней моделью (например, "Контекст логистики" и "Контекст биллинга").
Рейтинг:
5
Сложность:
7
DDD — это подход к проектированию, который ставит бизнес-домен в центр разработки. Главная идея — строить архитектуру так, чтобы код отражал реальные бизнес-правила и язык предметной области. Основные элементы DDD — сущности (entities), value objects, агрегаты, доменные сервисы, bounded contexts и ubiquitous language. Этот подход позволяет создавать гибкие и понятные системы, особенно когда бизнес-логика сложная.
Рейтинг:
5
Сложность:
7
Main thread блокируется, когда в нём выполняются тяжёлые операции. Для выявления используют профилировщики и логи. Исправление обычно заключается в переносе работы в фоновые потоки. Также важно оптимизировать код и избегать синхронных операций. Это напрямую снижает риск ANR.
Рейтинг:
5
Сложность:
5
Main queue используется для обновления интерфейса и обработки пользовательских событий. Background queue предназначена для тяжелых и длительных операций. Выполнение тяжелой логики на main queue приводит к зависанию UI. Фоновая очередь не имеет доступа к UI напрямую. Корректное разделение задач критично для производительности.
Рейтинг:
2
Сложность:
2
Рейтинг:
1
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
5
Рейтинг:
1
Сложность:
6