Android Mobile | YeaHub
430 subscribers
331 photos
21 videos
593 links
Теория, подготовка к интервью и курсы для Android разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #coroutine #infinite_loop #delay
🤔 Как корутины ведут себя при использовании бесконечного цикла (например, while(true))?

💬 Кратко:

Если в корутине используется бесконечный цикл без suspend-вызовов, она заблокирует поток, в котором выполняется, поскольку не отдаёт управление планировщику. Чтобы корутина оставалась отзывчивой и переключалась, внутри цикла нужно вставлять точки приостановки (delay, yield) или вызывать неблокирующие операции.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #coroutine #dispatcher
🤔 Какие подходы можно использовать для разделения ответственности между слоями при работе с многопоточностью?

💬 Кратко:

Обычно управление потоками делят между слоями так: presentation-слой отвечает за запуск корутин и управление жизненным циклом, domain-слой использует dispatcher’ы для выполнения бизнес-логики, а data-слой работает с сетью и базой данных на своих потоках. Такой подход упрощает тестирование, делает код предсказуемым и предотвращает утечки ресурсов. Каждый слой работает только с данными своего уровня, не нарушая границы архитектуры.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #database #one-to-many #relational_model
🤔 Почему связь один-ко-многим предпочтительнее для поиска?

💬 Кратко:
Связь один-ко-многим реализуется через внешний ключ в дочерней таблице, ссылающийся на первичный ключ родительской таблицы. Это позволяет эффективно индексировать внешний ключ, что ускоряет поиск всех дочерних записей для заданной родительской. Такая структура избегает избыточности данных и обеспечивает целостность, что делает запросы предсказуемыми и быстрыми. В отличие от связи многие-ко-многим, здесь не требуется промежуточная таблица, что упрощает запросы.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#book #kotlin
📚 Kotlin in Action
Авторы: Дмитрий Жемеров, Светлана Исакова (2016)


Kotlin — это статически типизированный язык программирования, разрабатываемый компанией JetBrains. Благодаря тому, что Kotlin может компилироваться в байт-код Java, его использование возможно также и в операционной системе Android, а хороший синтаксис и понятная типизация делают этот язык приятнее в разработке. Книга написана создателями языка и содержит не только основы, но и информацию по совместному использованию Java и Kotlin.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #broadcast #manifest #runtime
🤔 В чём отличие регистрации BroadcastReceiver в манифесте и в коде (runtime-регистрация)?

💬 Кратко:

При объявлении в манифесте приёмник работает даже если приложение не запущено (до Android 8.0, с ограничениями в O+), а runtime-регистрация (registerReceiver) действует только пока жив активный компонент (Activity/Service) и служит для динамических фильтров. Manifest-регистрация удобна для системных событий, runtime — для событий в пределах экрана.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
#Собес #adb #install #apk
🤔 Как происходит установка APK или AAB на устройство при запуске через Android Studio?

💬 Кратко:

APK передаётся на устройство напрямую через ADB и устанавливается одним файлом. AAB не устанавливается как есть — Android Studio генерирует набор split APK, которые затем отправляются на устройство. После проверки подписи система размещает файлы приложения и запускает его. Процесс включает оптимизацию и инкрементальные обновления.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
#article #kotlin
📚 Чем занимается Android-разработчик, или Хватит уже спрашивать у них алгоритмы

Автор, опытный Android-разработчик, развенчивает мифы о том, что на собеседованиях и в реальной работе главное — знать алгоритмы, и подробно рассказывает, чем действительно занимается мобильный разработчик: работу в команде (ревью кода, коммуникация), планирование и дизайн фич, верстку UI, написание логики приложения, управление многопоточностью, взаимодействие с инструментами сборки и публикацию в магазины приложений. Он подчеркивает, что ключевые навыки — это практический опыт, знание инструментов (например Git, Gradle, Kotlin/Java) и умение решать реальные инженерные задачи, а не только теорию алгоритмов

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #generic #type_erasure #inline
🤔 Как работают дженерики в Kotlin «под капотом»?

💬 Кратко:

Kotlin-дженерики реализованы через стирание типов (type erasure) на JVM, аналогично Java: информация о конкретном параметре типа недоступна в рантайме. Компилятор проверяет типы во время компиляции, а затем генерирует код без параметризации. Для сохранения информации о типе используют реифицированные (reified) параметры в inline-функциях.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #kotlin #nullability
🤔 Когда использовать Int vs Int??

💬 Кратко:

- Int — когда значение всегда есть (например, возраст).
- Int? — если значение может отсутствовать (например, ID несуществующего элемента).

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #group #count
🤔 Как посчитать количество записей для каждого значения поля в таблице?

💬 Кратко:

Для подсчета количества записей используется GROUP BY вместе с COUNT(). Записи группируются по значению поля, и для каждой группы считается количество строк. Это стандартный способ агрегации в SQL. Такой запрос часто используется для статистики и отчетов.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#podcast #всё
📚 TeachMeSkills IT-школа

Это серия выпусков от "TeachMeSkills Школа программирования"
Речь пойдет об актуальные направления и технологии в IT; перспективы роста начинающих специалистов; холиварные топики из жизни разработчиков.


Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👎1
#Собес #lazycolumn #recomposition #profiling
🤔 Как исследовать причину фризов при скролле LazyColumn в Jetpack Compose?

💬 Кратко:

Используйте Layout Inspector, CPU Profiler и Composition Tracing для анализа. Причины часто в тяжёлых recomposition и modifiers.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #zygote #activity #thread
🤔 Как создаётся и запускается новый процесс приложения при старте Activity?

💬 Кратко:

При запуске Activity система сначала проверяет, существует ли процесс приложения. Если он отсутствует, Android создаёт новый процесс через Zygote — базовый процесс, содержащий заранее загруженные классы. Затем запускается главный поток приложения, инициализируется ActivityThread и создаётся Application. После этого через AMS запускается нужная Activity, вызывая её методы жизненного цикла.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #PostgreSQL #CAST #type_conversion
🤔 Как работает CAST в PostgreSQL?

💬 Кратко:
CAST в PostgreSQL используется для явного преобразования значения из одного типа данных в другой. Синтаксис: CAST(expression AS target_type) или expression::target_type. Это необходимо, когда нужно привести данные к нужному формату, например, при сравнении или вычислениях. Без CAST PostgreSQL может неявно преобразовывать типы, но это не всегда безопасно.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#article #jetpackcompose
📚 Создание кастомного Toolbar с Jetpack Compose. Подробный разбор всех попыток и решений

В статье Android-разработчик из ПСБ подробно показывает, как он создавал кастомный Toolbar на Jetpack Compose, решая ключевую проблему — корректное центрирование заголовка и подзаголовка при динамическом содержимом слева и справа. Через примеры реализации с Row и весами (weight) автор объясняет ограничения простых подходов и приходит к использованию компонента Layout, который даёт полный контроль над измерениями и позиционированием элементов, снижает ненужные рекомпозиции и делает интерфейс более стабильным и предсказуемым.

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #kotlin #null_safety #coroutine
🤔 Чем Kotlin выигрывает у Java в контексте Android-разработки?

💬 Кратко:

Kotlin лаконичнее (уменьшает boilerplate), безопаснее (null-safety), поддерживает расширения, корутины и современные концепции (коллекции, DSL), что делает код чище и меньше ошибок. Он полностью совместим с Java, позволяет плавно мигрировать существующие проекты и улучшает опыт разработки через встроенные инструменты в Android Studio.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #flow #state_flow #shared_flow
🤔 StateFlow vs SharedFlow

💬 Кратко:

StateFlow хранит последнее значение и всегда возвращает его новым подписчикам. Он похож на "живое состояние". SharedFlow не хранит состояние по умолчанию, а работает как "событийный поток", где данные могут быть потеряны, если никто не слушает. В целом: StateFlow используют для состояния экрана, SharedFlow — для одноразовых событий.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #idempotency #api #design
🤔 Что такое idempotency key и как он применяется?

💬 Кратко:

Idempotency Key — это уникальный идентификатор, который клиентская система генерирует для каждой логической операции (например, создания платежа) и отправляет вместе с запросом к API. Сервер использует этот ключ, чтобы отслеживать, был ли такой запрос уже обработан. Если ключ новый — операция выполняется, а её результат сохраняется вместе с ключом. Если ключ повторяется — сервер не выполняет операцию заново, а возвращает сохранённый ранее результат. Это предотвращает дублирование действий из-за повторных отправок запроса.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
👍1
#podcast #все
📚 Kolesa Podcast

Podcast by IT-компания Kolesa Group. В целом он обо всём и вся. Интересно для прослушивания на досуге

Перейти к материалу

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #solid #oop #principles
🤔 SOLID, рассказать что это и привести примеры нарушения из Android SDK.

💬 Кратко:

SOLID - 5 принципов ООП: Single responsibility, Open-closed, Liskov substitution, Interface segregation, Dependency inversion. В Android SDK есть нарушения, например в Activity.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #inline #корутина #функция

🤔 Middle/Senior Android в компанию Альфа-Банк

Скриннинг. ЗП: 250-400k. Опыт: 3 года. Июнь 2024. Собеседование в себя включало постоянное рассуждение, проектирование и построение гипотез для теории и практические вопросы для лайвкодинга.

💬 Вопросы:

- Что такое inline функции в Kotlin?

- В чём разница между inline, noinline и crossinline?

- Как работает return в лямбде внутри inline-функции?

- Как suspendCancellableCoroutine помогает работать с колбэками?

- Чем отличается StateFlow от SharedFlow?

👉 Все вопросы из этого собеседования (6)

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа