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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #threading #synchronization #lock
🤔 Что делает ключевое слово synchronized?

💬 Кратко:

synchronized блокирует доступ к коду или объекту для других потоков, пока текущий поток не завершит выполнение. Это предотвращает гонки данных (race conditions) и обеспечивает потокобезопасность.

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

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

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

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

💬 Вопросы:

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

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

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

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

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

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#repository #bestpractices #androidtools
📚 Best practices in Android development

Это свод рекомендаций и проверенных практик разработки Android‑приложений от компании Futurice, охватывающий ключевые аспекты проектирования, кодирования, тестирования и сопровождения ПО; в нём систематизированы советы по архитектуре, работе с ресурсами, управлению зависимостями, оптимизации производительности и безопасности, а также приведены примеры типичных ошибок и способы их избежания, что делает его полезным справочником для Android‑разработчиков разного уровня.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #opentelemetry #observability #tracing
🤔 Что такое OpenTelemetry? Для чего используется?

💬 Кратко:

OpenTelemetry - open-source инструмент для сбора телеметрии (метрики, логи, трейсы). Помогает в мониторинге и диагностике.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #access_modifiers #visibility #private
🤔 Какие модификаторы доступа существуют у элементов класса? Какой модификатор используется по умолчанию?

💬 Кратко:

private, protected, internal, public. По умолчанию — public.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
❤1
#Собес #OpenTelemetry #observability #distributed_tracing
🤔 Что такое OpenTelemetry и чем он отличается от Sentry или Victoria Metrics?

💬 Кратко:
OpenTelemetry — это открытый стандарт и набор инструментов для сбора, обработки и экспорта телеметрических данных (трейсы, метрики, логи). В отличие от Sentry, которая фокусируется на отслеживании ошибок и производительности в реальном времени, OpenTelemetry предоставляет унифицированный API для сбора данных, которые затем можно отправлять в разные бэкенды. Victoria Metrics — это система хранения и визуализации метрик, а OpenTelemetry занимается только сбором и экспортом, не храня данные.

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

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

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

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #work_manager #started_service #foreground_service
🤔 Когда стоит использовать WorkManager, а когда — Service?

💬 Кратко:

WorkManager лучше для отложенных, гарантированных, задач, нечувствительных к точному времени (синхронизация, загрузка файлов), которые должны выполниться даже после перезагрузки. Service (особенно Foreground Service) подходит для непрерывных, длительных задач в реальном времени (плеер, навигация), когда нужен постоянный жизненный цикл и интерактивное уведомление.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #process #manifest #android_process
🤔 Может ли Android-приложение работать в нескольких процессах?

💬 Кратко:

Да, Android-приложение может запускать компоненты в отдельных процессах, указав атрибут android:process в манифесте.

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

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

💬 Кратко:

git clone используется для создания копии удалённого репозитория на вашем локальном компьютере, включая все его коммиты и историю.

git remote управляет удалёнными репозиториями, позволяя добавлять, удалять или изменять удалённые URL-адреса для вашего локального репозитория.

 

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#repository #tipsandtricks
📚 Android Tips & Tricks: Practical Development Hacks

Репозиторий содержит подборку практических советов, приёмов и «лайфхаков» для разработки Android‑приложений — от оптимизации рабочего процесса и отладки до тонкостей работы с API, инструментами сборки и пользовательским интерфейсом; материал представлен в виде кратких, ёмких фрагментов кода и пояснений, что позволяет быстро находить решения типовых задач и повышать эффективность разработки.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #opentelemetry #observability #tracing
🤔 Что такое OpenTelemetry? Для чего используется?

💬 Кратко:

OpenTelemetry - open-source инструмент для сбора телеметрии (метрики, логи, трейсы). Помогает в мониторинге и диагностике.

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

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

💬 Кратко:

CoroutineScope определяет жизненный цикл корутин, например GlobalScope, viewModelScope, lifecycleScope, а Dispatcher указывает, на каком потоке выполнять код: Dispatchers.Main для UI, Dispatchers.IO для I/O, Dispatchers.Default для CPU-интенсивных задач. Их комбинируют, чтобы корутины запускались в нужных условиях и отменялись вместе с жизненным циклом.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #API_Gateway #microservices #Nginx
🤔 Как устроено взаимодействие фронтенда с микросервисами через API gateway (например Nginx)?

💬 Кратко:
API Gateway — это единый входной узел для всех запросов от фронтенда к бэкенду, состоящему из множества микросервисов. Он выступает в роли обратного прокси (reverse proxy), маршрутизируя запросы к нужному сервису на основе пути URL или других параметров. Это позволяет фронтенду общаться с одним доменом, скрывая сложность распределённой системы. Gateway также часто берёт на себя кросcдоменные запросы (CORS), аутентификацию, балансировку нагрузки и кэширование, упрощая клиентский код и повышая безопасность.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#book #начинающие
📚 Программирование для Android. Денис Колисниченко

В последнем издании описываются нюансы по разработке 64-разрядных приложений для Android. Автор показывает изменения в интерфейсе среды разработки, среди прочих нюансов.
Многое объясняется едва ли не с нуля

Что касается аппаратных компонентов смартфона, автор уделяет этому особое внимание, рассказывая и показывая, как получить данные о девайсе, его характеристиках, как использовать его датчики и другие модули.

Есть и большое количество информации о том, как решать разные нештатные ситуации, которых может возникнуть немало. Это, например, отказ эмулятора, проблемы с установкой ПО и т. п.

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #multithreading #atomicity #volatile
🤔 Какие проблемы возникают с 64-битными примитивами (double/long) в многопоточке?

💬 Кратко:

Чтение/запись long и double не атомарны на некоторых платформах (может читаться частично обновлённое значение). Решение — использование volatile или AtomicLong.

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

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

💬 Кратко:

inline функции в Kotlin разворачиваются в месте вызова во время компиляции, вместо того чтобы быть вызванными как обычные функции. Это уменьшает накладные расходы на вызов функции, но увеличивает размер байткода. inline функции особенно полезны для повышения производительности при использовании лямбда-функций.

 

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

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

💬 Кратко:

Первичный ключ — это уникальный идентификатор строки в таблице. Основные виды: простой ключ (состоит из одного столбца, например, ID пользователя) и составной ключ (состоит из нескольких столбцов, например, номер заказа + номер позиции в нем). По способу создания они делятся на естественные (имеющие реальный смысл, как номер паспорта, но их использование рискованно) и суррогатные (искусственные, созданные специально для таблицы, например, автоинкрементное число или GUID). Суррогатные ключи предпочтительнее, так как они неизменны и не зависят от бизнес-логики.

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

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

Русскоязычный канал, на котором вы найдете видеозаписи лекций и короткие тематические ролики на интересные темы о компьютерных науках и программировании. Материал публикуется для ИТ-специалистов, студентов и школьников, интересующихся программированием и математикой.

Помимо роликов о программировании на Rust канал публикует уроки по Python, алгоритмизации, анализу изображений, C/C++, Java, Kotlin и прочему. Лекторы разные: в основном нескучные и отвечающие на вопросы аудитории.

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

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

💬 Кратко:

- volatile — гарантирует видимость изменений для всех потоков, но не поддерживает атомарные операции (например, i++).
- Atomic-классы (AtomicInteger, AtomicBoolean) — обеспечивают атомарность операций (например, incrementAndGet()).

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

📣 Все для прокачки навыков:
✅ Анонсы → канал
✅ Комьюнити → чат
✅ База задач и вопросов → платформа
#Собес #android #di #coroutines
🤔 Как правильно передавать Dispatcher в классы: через DI или напрямую?

💬 Кратко:

Лучше передавать через DI (например, Hilt), чтобы упростить тестирование и замену реализаций. Прямая передача допустима только в простых случаях.

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

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