Android Interview Questions and Answers - репозиторий с вопросами для Android-собеседований. Материал систематизирован, охватывает большинство тем, которые чаще всего встречаются на собеседованиях. Подойдет как новичкам, так и опытным разработчикам для закрепления знаний. Внутри:
• Основы Android: Activity, Fragment, жизненные циклы.
• Архитектура приложений: MVVM, MVP, Clean Architecture.
• Работа с данными: Room, SQLite, SharedPreferences.
• Асинхронность: Coroutines, RxJava, WorkManager.
• Лучшие практики: Советы по кодингу, оптимизации производительности и безопасности.
Android Interview Questions на GitHub: https://github.com/amitshekhariitbhu/android-interview-questions
Платформа: Android
⭐️: 11.6K
• Основы Android: Activity, Fragment, жизненные циклы.
• Архитектура приложений: MVVM, MVP, Clean Architecture.
• Работа с данными: Room, SQLite, SharedPreferences.
• Асинхронность: Coroutines, RxJava, WorkManager.
• Лучшие практики: Советы по кодингу, оптимизации производительности и безопасности.
Android Interview Questions на GitHub: https://github.com/amitshekhariitbhu/android-interview-questions
Платформа: Android
⭐️: 11.6K
👍2
Go в GUI, я создал
Идея сделать игру под Android на Go была неоднозначной, но интересной. Я легко мог представить Go не только в привычной для него сервисной нише, но и в прикладной — его кросс-платформенность и близость к системному уровню в сочетании с простотой пришлись бы там очень кстати. И вот мы здесь — игру мечты я пока не создал, но пару игр попроще сделать удалось.
Статья: https://habr.com/ru/articles/874264/
Платформа: Android
Идея сделать игру под Android на Go была неоднозначной, но интересной. Я легко мог представить Go не только в привычной для него сервисной нише, но и в прикладной — его кросс-платформенность и близость к системному уровню в сочетании с простотой пришлись бы там очень кстати. И вот мы здесь — игру мечты я пока не создал, но пару игр попроще сделать удалось.
Статья: https://habr.com/ru/articles/874264/
Платформа: Android
👍1
Костыли, костыли и ещё раз костыли. Или поддержка iOS 15 на SwiftUI
Итак, есть задача: переделать экран авторизации на новый дизайн, добавить новые способы авторизации. И заодно опять же перейти на SwiftUI. Кстати, у нас довольно объёмный проект, и я думала мы будем очень долго переходить с UIKit, но прошло пол года, а уже треть почти переделана, без особых напрягов.
Статья: https://habr.com/ru/articles/874258/
Платформа: iOS
Итак, есть задача: переделать экран авторизации на новый дизайн, добавить новые способы авторизации. И заодно опять же перейти на SwiftUI. Кстати, у нас довольно объёмный проект, и я думала мы будем очень долго переходить с UIKit, но прошло пол года, а уже треть почти переделана, без особых напрягов.
Статья: https://habr.com/ru/articles/874258/
Платформа: iOS
Как Класс производительности помог Google Maps предоствить первоклассный опыт
Экосистема Android включает в себя широкий спектр устройств, и бывает сложно создать опыт, который бы использовал преимущества новых или премиальных аппаратных функций и при этом хорошо работал для пользователей на всех устройствах. В Android 12 Google ввел стандарт Media Performance Class (MPC), чтобы помочь разработчикам лучше понять возможности устройства и определить высокопроизводительные устройства.
Статья: https://apptractor.ru/info/articles/kak-klass-proizvoditelnosti-pomog-google-maps-predostvit-pervoklassnyy-opyt.html
Платформа: Android
Экосистема Android включает в себя широкий спектр устройств, и бывает сложно создать опыт, который бы использовал преимущества новых или премиальных аппаратных функций и при этом хорошо работал для пользователей на всех устройствах. В Android 12 Google ввел стандарт Media Performance Class (MPC), чтобы помочь разработчикам лучше понять возможности устройства и определить высокопроизводительные устройства.
Статья: https://apptractor.ru/info/articles/kak-klass-proizvoditelnosti-pomog-google-maps-predostvit-pervoklassnyy-opyt.html
Платформа: Android
👍1
Forwarded from Mobile Development by AppTractor
Shopify поделился своим опытом использования React Native в компании. Основные тезисы:
• Приложения на React Native работают быстро
• Горячая перезагрузка — это потрясающе
• Typenoscript открывает возможности движения талантов
• Нативные разработчики имеют решающее значение
• Нативный код имеет решающее значение
• Отладка хуже
• Обновления React Native не являются бесшовными
• Большая зависимость от библиотек сторонних разработчиков
• Общие основы открывают массу преимуществ
Главный вывод - за последние 5 лет React Native прошел долгий путь развития, и многие ограничения, из-за которых люди не принимали его, просто больше не существуют. Если вы давно не пробовали использовать RN, сейчас самое время вернуться к нему.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Sharing - мгновенный обмен состоянием между функциями вашего приложения и внешними слоями, включая user defaults, файловую систему и многое другое. Инструмент работает в различных контекстах, таких как представления SwiftUI, модели @Observable и контроллеры представлений UIKit, и полностью поддается модульному тестированию.
Sharing на GitHub: https://github.com/pointfreeco/swift-sharing
Платформа: iOS
⭐️: 459
Sharing на GitHub: https://github.com/pointfreeco/swift-sharing
Платформа: iOS
⭐️: 459
Архитектура для SwiftUI — VSURF
Кому-то может показаться, что мы изобретаем велосипед. Кто-то упрекнет нас в том, что мы специально накосячили с одной из классических архитектур, чтобы выставить её в плохом свете. Другой скажет, что архитектура вообще не нужна.
Но мы уверены в своих силах. Ведь у нас уже была SurfMVP, а теперь пришел час VSURF. Технологии не стоят на месте, а задачи остаются прежними. Заказчику нужна «картинка». Разработчики собирают «картинку» как пазл. А архитектор продумывает детали этого пазла.
Статья: https://habr.com/ru/companies/surfstudio/articles/874958/
Платформа: iOS
Кому-то может показаться, что мы изобретаем велосипед. Кто-то упрекнет нас в том, что мы специально накосячили с одной из классических архитектур, чтобы выставить её в плохом свете. Другой скажет, что архитектура вообще не нужна.
Но мы уверены в своих силах. Ведь у нас уже была SurfMVP, а теперь пришел час VSURF. Технологии не стоят на месте, а задачи остаются прежними. Заказчику нужна «картинка». Разработчики собирают «картинку» как пазл. А архитектор продумывает детали этого пазла.
Статья: https://habr.com/ru/companies/surfstudio/articles/874958/
Платформа: iOS
💩1🥴1
Абсолютно потрясающее, но определенно не всеобъемлющее руководство по тестированию пуш-уведомлений
Представьте себе страшный сон тестировщика и в целом вашей команды – пользователи пишут в поддержку, что пуши не приходят, сообщения не доходят, а вы никак не можете воспроизвести проблему и у вас даже нет понимания: а как это воспроизводить, от чего вообще зависит доставка пушей?
Посмотрев русскоязычные и англоязычные ресурсы про тестирование, я так и не смог найти полноценного материала, который бы гарантировал достаточные знания для того, чтобы понимать как пуши и уведомления работают, как их тестировать и что не маловажно как искать и разбираться с проблемами, когда пуши не доходят до пользователей.
Статья: https://habr.com/ru/articles/811297/
Платформа: Android/тестирование
Представьте себе страшный сон тестировщика и в целом вашей команды – пользователи пишут в поддержку, что пуши не приходят, сообщения не доходят, а вы никак не можете воспроизвести проблему и у вас даже нет понимания: а как это воспроизводить, от чего вообще зависит доставка пушей?
Посмотрев русскоязычные и англоязычные ресурсы про тестирование, я так и не смог найти полноценного материала, который бы гарантировал достаточные знания для того, чтобы понимать как пуши и уведомления работают, как их тестировать и что не маловажно как искать и разбираться с проблемами, когда пуши не доходят до пользователей.
Статья: https://habr.com/ru/articles/811297/
Платформа: Android/тестирование
❤3👍1🔥1
Как мы сделали on-device-распознавание номеров телефонов для ИТ-Пикника
В статье рассказываем, как в суперсжатые сроки реализовали распознавание номеров телефонов on-device на iOS. Результаты работы мы представили 40 тысячам гостей на стенде Т-Банка нашего продукта на ИТ-Пикнике 2024 — ежегодном фестивале для айтишников.
Мы расскажем о технических достижениях и вызовах, с которыми столкнулись, поделимся решениями, которые разработали специально для мероприятия, а еще теми, что уже встроены в наши приложения и успешно используются
Статья: https://habr.com/ru/companies/tbank/articles/874868/
Платформа: iOS
В статье рассказываем, как в суперсжатые сроки реализовали распознавание номеров телефонов on-device на iOS. Результаты работы мы представили 40 тысячам гостей на стенде Т-Банка нашего продукта на ИТ-Пикнике 2024 — ежегодном фестивале для айтишников.
Мы расскажем о технических достижениях и вызовах, с которыми столкнулись, поделимся решениями, которые разработали специально для мероприятия, а еще теми, что уже встроены в наши приложения и успешно используются
Статья: https://habr.com/ru/companies/tbank/articles/874868/
Платформа: iOS
Lumo-UI - плагин Gradle для генерации компонентов пользовательского интерфейса Compose через командную строку. Он предоставляет настраиваемые и готовые к использованию компоненты, которые вы можете скопировать и вставить в свои проекты. Он генерирует компоненты пользовательского интерфейса непосредственно в вашей кодовой базе, предоставляя вам полное право собственности и гибкость в настройке их в соответствии с вашими конкретными потребностями дизайна, без внешних зависимостей.
Lumo-UI на GitHub: https://github.com/nomanr/lumo-ui
Платформа: Android
⭐️: 159
Lumo-UI на GitHub: https://github.com/nomanr/lumo-ui
Платформа: Android
⭐️: 159
❤2
Технический гайд по сторис или как мы повысили конверсию в мобильном приложении в 9 раз
Наша команда мобильной разработки развивает одноименное приложение — онлайн-платформу для решения вопросов с недвижимостью. Мы помогаем проводить сделки проще, быстрее и безопаснее. Основные пользователи приложения — физические лица (B2C) и риелторы (B2B2C). Эта статья — технический гайд для android-разработчиков, которые хотят реализовать и внедрить полный цикл сторис у себя в приложении с использованием: Compose, MVVM, Coroutines flow и правил чистой архитектуры.
Статья: https://habr.com/ru/companies/m2tech/articles/874438/
Платформа: Android
Наша команда мобильной разработки развивает одноименное приложение — онлайн-платформу для решения вопросов с недвижимостью. Мы помогаем проводить сделки проще, быстрее и безопаснее. Основные пользователи приложения — физические лица (B2C) и риелторы (B2B2C). Эта статья — технический гайд для android-разработчиков, которые хотят реализовать и внедрить полный цикл сторис у себя в приложении с использованием: Compose, MVVM, Coroutines flow и правил чистой архитектуры.
Статья: https://habr.com/ru/companies/m2tech/articles/874438/
Платформа: Android
Jetpack Compose и Edge-to-Edge на Android 15
В Android 15 (API 35) Google продолжает продвигать иммерсивные пользовательские интерфейсы от края до края (edge-to-edge). Несмотря на то, что это улучшает дизайн современных приложений, это вносит тонкие изменения, которые могут нарушить существующие макеты - особенно если ваше приложение полагается на точную работу с системными панелями. В этой статье мы рассмотрим, как перенести приложение Jetpack Compose на API 35, и обсудим лучшие методы управления переходом к edge-to-edge UI.
Статья: https://apptractor.ru/info/articles/jetpack-compose-i-edge-to-edge-na-android-15.html
Платформа: Android
В Android 15 (API 35) Google продолжает продвигать иммерсивные пользовательские интерфейсы от края до края (edge-to-edge). Несмотря на то, что это улучшает дизайн современных приложений, это вносит тонкие изменения, которые могут нарушить существующие макеты - особенно если ваше приложение полагается на точную работу с системными панелями. В этой статье мы рассмотрим, как перенести приложение Jetpack Compose на API 35, и обсудим лучшие методы управления переходом к edge-to-edge UI.
Статья: https://apptractor.ru/info/articles/jetpack-compose-i-edge-to-edge-na-android-15.html
Платформа: Android
Recall - это приложение-календарь, предназначенное для записи ежедневных событий, чтобы иметь возможность просматривать тенденции в продуктивности, достижении целей и управлении временем. Оно построено на базе Swift и SwiftUI, а на бэкенде использует MongoDB и Realm DeviceSync.
Recall на GitHub: https://github.com/Brian-Masse/Recall
Платформа: iOS
⭐️: 7
Recall на GitHub: https://github.com/Brian-Masse/Recall
Платформа: iOS
⭐️: 7
This media is not supported in your browser
VIEW IN TELEGRAM
Как синтаксический сахар Kotlin может сломать вам логику работы приложения
Kotlin предоставил много возможностей и позволил убрать написание однотипного кода, но это стало тем что разработчики стали забывать, что не весь синтаксический сахар позволит реализовать задуманное. В Java же сложность написания чего-то заставляла нас делать выбор осознанным. Не используйте бездумно всё, что вам предлагает язык программирования и IDE, реализуйте логику работы объектов вашей программы соотвественно их поведению!
Статья: https://habr.com/ru/articles/875460/
Платформа: Android
Kotlin предоставил много возможностей и позволил убрать написание однотипного кода, но это стало тем что разработчики стали забывать, что не весь синтаксический сахар позволит реализовать задуманное. В Java же сложность написания чего-то заставляла нас делать выбор осознанным. Не используйте бездумно всё, что вам предлагает язык программирования и IDE, реализуйте логику работы объектов вашей программы соотвественно их поведению!
Статья: https://habr.com/ru/articles/875460/
Платформа: Android
Темы в современных iOS-приложениях с UITraitCollection
Совсем недавно (с iOS 17) Apple представила довольно удобный способ обработки смены тем в приложениях для iOS. Раньше это было довольно мучительно. Но с появлением
Эта статья представляет собой законченное описание того, как добавить тематическое оформление в реальное приложение.
Статья: https://apptractor.ru/info/articles/temy-v-sovremennyh-ios-prilozheniyah-s-uitraitcollection.html
Платформа: iOS
Совсем недавно (с iOS 17) Apple представила довольно удобный способ обработки смены тем в приложениях для iOS. Раньше это было довольно мучительно. Но с появлением
UITraitAppearance все стало проще.Эта статья представляет собой законченное описание того, как добавить тематическое оформление в реальное приложение.
Статья: https://apptractor.ru/info/articles/temy-v-sovremennyh-ios-prilozheniyah-s-uitraitcollection.html
Платформа: iOS
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Отлаживаем неотлаживаемое
В статье Брайс Боствик делится своим опытом обхода различных защитных механизмов в iOS-приложении. Это приложение блокировало подключение отладчика, завершало работу при попытке инъекции кода и даже приводило к перезагрузке устройства при запуске на взломанном (jailbroken) iPhone.
Брайс подробно описывает, как приложение использует функцию
Кроме того, автор обнаружил, что приложение содержит функцию, которая вызывает бесконечный цикл создания снимков экрана с помощью метода
Брайс также рассматривает проблему инъекции кода, когда приложение завершается при попытке добавить новый код. Он объясняет, что это может быть связано с отсутствием корректной группы приложений (App Group) после повторной подписи приложения. В качестве решения он предлагает использовать метод swizzling для замены вызова
В целом, статья предоставляет ценные инсайты и практические методы обхода сложных защитных механизмов в iOS-приложениях. Эти знания могут быть полезны разработчикам, сталкивающимся с подобными проблемами при отладке и модификации приложений.
Статья: https://bryce.co/undebuggable/
Платформа: iOS
В статье Брайс Боствик делится своим опытом обхода различных защитных механизмов в iOS-приложении. Это приложение блокировало подключение отладчика, завершало работу при попытке инъекции кода и даже приводило к перезагрузке устройства при запуске на взломанном (jailbroken) iPhone.
Брайс подробно описывает, как приложение использует функцию
ptrace с параметром PT_DENY_ATTACH для предотвращения присоединения отладчика. Он предлагает несколько методов обхода этой защиты, включая установку точки останова перед вызовом ptrace и использование команды thread return в lldb для пропуска выполнения этой функции.Кроме того, автор обнаружил, что приложение содержит функцию, которая вызывает бесконечный цикл создания снимков экрана с помощью метода
snapshotViewAfterScreenUpdates, что приводит к перезагрузке устройства. Это служит дополнительной мерой защиты от отладки и модификации приложения.Брайс также рассматривает проблему инъекции кода, когда приложение завершается при попытке добавить новый код. Он объясняет, что это может быть связано с отсутствием корректной группы приложений (App Group) после повторной подписи приложения. В качестве решения он предлагает использовать метод swizzling для замены вызова
containerURLForSecurityApplicationGroupIdentifier на возвращение временного каталога, что позволяет обойти эту защиту.В целом, статья предоставляет ценные инсайты и практические методы обхода сложных защитных механизмов в iOS-приложениях. Эти знания могут быть полезны разработчикам, сталкивающимся с подобными проблемами при отладке и модификации приложений.
Статья: https://bryce.co/undebuggable/
Платформа: iOS
🔥1
CuteMusic - это простой, легкий и открытый музыкальный плеер для Android, написанный на Jetpack Compose & Media3. Фичи: воспроизводите любую песню из любого места, просто поделившись аудиофайлом с приложением, не скачивая его, удобный поиск по всей вашей музыке/альбомам/артистам, очень быстрый, никаких лишних разрешений, поддержка Material 3/You & Monet,
красивый ландшафтный UI, редактор тегов.
CuteMusic на GitHub: https://github.com/sosauce/CuteMusic
Платформа: Android
⭐️: 295
красивый ландшафтный UI, редактор тегов.
CuteMusic на GitHub: https://github.com/sosauce/CuteMusic
Платформа: Android
⭐️: 295
Вызов защищенного API из iOS-приложения на Swift
Пошаговое руководство по использованию OAuth 2.0 при доступе к защищенным API из iOS‑приложения на Swift с Auth0.
Статья: https://habr.com/ru/companies/otus/articles/875968/
Платформа: iOS
Пошаговое руководство по использованию OAuth 2.0 при доступе к защищенным API из iOS‑приложения на Swift с Auth0.
Статья: https://habr.com/ru/companies/otus/articles/875968/
Платформа: iOS
Интеграция Docker в Android разработку
Если говорить о Docker в контексте Android-разработки, то чаще всего кейсы его использования встречаются в тестировании и развертывании приложений.
Docker позволяет создать изолированную среду, в которой можно запустить приложение вместе со всеми его зависимостями, что очень ценится в тестировании. Ключевым фактором является то, что внесенные изменения, никак не влияют на другие контейнеры или систему. Конвейеризация же только ускоряет эти и другие процессы.
Звучит непросто? Но на самом же деле, в этом нет ничего сложного. Чтобы в этом убедиться, напишем небольшой Pipeline для Android проекта.
Статья: https://habr.com/ru/articles/875940/
Платформа: Android
Если говорить о Docker в контексте Android-разработки, то чаще всего кейсы его использования встречаются в тестировании и развертывании приложений.
Docker позволяет создать изолированную среду, в которой можно запустить приложение вместе со всеми его зависимостями, что очень ценится в тестировании. Ключевым фактором является то, что внесенные изменения, никак не влияют на другие контейнеры или систему. Конвейеризация же только ускоряет эти и другие процессы.
Звучит непросто? Но на самом же деле, в этом нет ничего сложного. Чтобы в этом убедиться, напишем небольшой Pipeline для Android проекта.
Статья: https://habr.com/ru/articles/875940/
Платформа: Android
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
(iOS Ru) Фото-пикер 2.0: как сделать фичу на 150%•
(iOS En) Guiding the Golden Age: Rebuilding Indoor Navigation for Rijksmuseum•
(iOS En) Mastering Color Views in SwiftUI•
(iOS En) Notification Deep Linking | Open Specific View From Push Notifications •
(iOS En) Scalable Continuous Integration for iOS•
(And Ru) Как сделать библиотеку, чтобы ей пользовались•
(And En) InputStreams & OutputStreams In Kotlin•
(And En) Working With Files In Kotlin•
(And En) Compose Performance for Us Humans•
(KMP En) Becoming a KMP Expert•
(KMP En) Multi-language Support in Kotlin/Compose Multiplatform•
(Flt En) Flutter Animations Made Easy•
(Dev Ru) Управление ресурсами в DevOps: от облачных решений до «железных» серверов•
(Dev Ru) Универсальное решение для мобильного автотестирования•
(Dev Ru) Смена профессии в IT — Карьера, Профессиональный рост•
(Dev En) Neetcode 150 Course - All Coding Interview Questions Solved❤1