Специализация
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 в телеграм
Что такое приведение типов (type casting) в C?
Приведение типов (type casting) – это преобразование переменной из одного типа в другой. Оно бывает неявным и явным.
Что такое делегат с многократной подпиской (Multicasting delegate) в C#?
Делегат с многократной подпиской — это расширение обычного делегата, которое позволяет назначить более одного метода для вызова при срабатывании делегата. Этот тип делегата полезен, когда необходимо выполнить несколько действий с одним событием.
Нужно обмениваться broadcast-сообщениями только между своими приложениями, запрещая внешним их принимать. Как это реализовать?
При отправке читайте разрешение через sendBroadcast(intent, YOUR_PERMISSION) и регистрируйте BroadcastReceiver с тем же правом: в манифесте укажите android:permission="YOUR_PERMISSION". Тогда только приложения, у которых есть это разрешение, смогут отправлять или принимать ваш Broadcast.
В чём отличие регистрации BroadcastReceiver в манифесте и в коде (runtime-регистрация)?
При объявлении в манифесте приёмник работает даже если приложение не запущено (до Android 8.0, с ограничениями в O+), а runtime-регистрация (registerReceiver) действует только пока жив активный компонент (Activity/Service) и служит для динамических фильтров. Manifest-регистрация удобна для системных событий, runtime — для событий в пределах экрана.
Какие проблемы могут возникнуть при перехвате Intent через BroadcastReceiver?
При перехвате могут быть уязвимости: подставить злонамеренный Intent (Intent-spoofing), вызвать переполнение очереди при многих Broadcast, получить лишние System-Broadcast после Android 8.0. Также возможны утечки ресурсов при незакрытых регистрации и таймауты, если приёмник обрабатывает тяжёлую работу в main-потоке.
Что такое BroadcastReceiver и как продлить время его жизни?
Как передать текст, полученный через Intent, в BroadcastReceiver и сохранить его на бэкенде?
Как работает механизм CAS (Compare-And-Swap) внутри Atomicклассов?
В чем преимущества и недостатки User Stories и Use Cases?
Когда лучше использовать User Stories, а когда Use Cases?
Рейтинг:
2
Сложность:
6
BroadcastReceiver — компонент, который получает Intent кратковременно в onReceive. По умолчанию после завершения метода система убивает процесс или освобождает ресурсы. Чтобы продлить время, внутри onReceive можно вызвать goAsync() и получить PendingResult, затем выполнить асинхронную работу в другом потоке и в конце вызвать pendingResult.finish(). Либо сразу стартовать Foreground Service для длительной работы.
Рейтинг:
2
Сложность:
6
Текст можно получить в BroadcastReceiver через intent.getStringExtra("ключ"). Затем его можно передать на бэкенд с помощью сетевого клиента, например Retrofit.
Рейтинг:
2
Сложность:
6
CAS — атомарная инструкция процессора, которая обновляет значение в памяти, только если текущее значение совпадает с ожидаемым (expectedValue). При несовпадении операция повторяется. Это основа Atomic-классов.
Рейтинг:
2
Сложность:
6
User Stories просты, гибки и идеально подходят для Agile-проектов, но могут быть недостаточно детальными для сложных функций. Use Cases, наоборот, предоставляют исчерпывающее описание поведения системы, что полезно для сложных сценариев, но они более громоздки и медленнее создаются. Выбор между ними зависит от сложности функциональности и методологии проекта.
Рейтинг:
2
Сложность:
7
User Stories лучше всего использовать в гибких (Agile) проектах, где требования могут меняться, и для описания небольших, ценных для пользователя функций. Use Cases предпочтительнее для сложных, критически важных процессов с множеством сценариев и ветвлений, где важна полная ясность и предсказуемость, например, в банковских операциях или авиационной навигации.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7