Найти в Дзене
Задачка на Яндекс Собеседовании
Задача: написать реализацию метода x, y координаты относительно view возвращает view (дочернюю или текущую) в который попал ползователь ? Решение: Для реализации метода, который возвращает дочернюю или текущую view, в которой находится пользователь в момент его касания, можно использовать рекурсивный подход. Например, вот пример реализации такого метода на языке Kotlin: fun View?.findTouchedView(x: Float, y: Float): View? { if (this == null) return null // Проверяем, что касание было в пределах текущей view val location = IntArray(2) this.getLocationOnScreen(location) val minX = location[0] val maxX = minX + this...
2 года назад
Применения архитектурных паттернов MVVM, MVI, MVP, MVC - различие ? Архитектурные паттерны MVVM (Model-View-ViewModel), MVI (Model-View-Intent), MVP (Model-View-Presenter) и MVC (Model-View-Controller) используются для организации кода в приложениях, чтобы разделить логику и представление данных. Вот краткое описание каждого из них и различия между ними: 1. MVVM (Model-View-ViewModel) MVVM является паттерном, который используется для отделения бизнес-логики приложения от его пользовательского интерфейса. Он включает в себя три основных компонента: Model, View и ViewModel. Model представляет данные и бизнес-логику, View отвечает за представление данных пользователю, а ViewModel связывает эти два компонента вместе. 2. MVI (Model-View-Intent) MVI является относительно новым паттерном, который основывается на концепции однонаправленного потока данных. Он включает в себя три основных компонента: Model, View и Intent. Model представляет данные и бизнес-логику, View отвечает за представление данных пользователю, а Intent определяет, какие действия должны быть выполнены в приложении. 3. MVP (Model-View-Presenter) MVP является паттерном, который также используется для отделения бизнес-логики приложения от его пользовательского интерфейса. Он включает в себя три основных компонента: Model, View и Presenter. Model представляет данные и бизнес-логику, View отвечает за представление данных пользователю, а Presenter связывает эти два компонента вместе и обрабатывает пользовательский ввод. 4. MVC (Model-View-Controller) MVC является одним из самых старых и широко используемых паттернов архитектуры. Он включает в себя три основных компонента: Model, View и Controller. Model представляет данные и бизнес-логику, View отвечает за представление данных пользователю, а Controller обрабатывает пользовательский ввод и управляет моделью и представлением. Различия между этими архитектурными паттернами включают в себя способы, которыми каждый из них разделяет код, способы связывания компонентов и то, как обрабатываются действия пользователя. Каждый из них имеет свои преимущества и недостатки, и выбор наилучшего зависит от конкретного проекта и его требований.
256 читали · 2 года назад
Понимание ООП и знание структуры данных? ООП (объектно-ориентированное программирование) - это подход к программированию, который основан на использовании объектов, которые могут взаимодействовать друг с другом, образуя более сложные структуры. ООП базируется на трех главных концепциях: наследование, полиморфизм и инкапсуляция. Структуры данных - это способы организации и хранения данных в памяти компьютера. Каждая структура данных имеет свои преимущества и недостатки в зависимости от того, как она используется. Некоторые из наиболее распространенных структур данных включают в себя массивы, списки, стеки, очереди, деревья и графы. Знание ООП и структур данных важно для создания эффективных и легко поддерживаемых программных приложений. ООП позволяет создавать модульный и расширяемый код, который может быть легко адаптирован к изменяющимся требованиям. Структуры данных помогают оптимизировать использование памяти и ускорить выполнение операций с данными.
2 года назад
Протоколы HTTP, HTTPS - различие? HTTP (HyperText Transfer Protocol) и HTTPS (HyperText Transfer Protocol Secure) являются протоколами для передачи данных между клиентом и сервером в Интернете. Главное различие между ними заключается в том, что HTTPS обеспечивает защищенное соединение с использованием SSL/TLS-шифрования, что обеспечивает безопасность передаваемых данных. В отличие от HTTPS, HTTP не обеспечивает шифрование данных, что может привести к утечке конфиденциальной информации, если злоумышленник получит доступ к этим данным. В HTTPS передаваемые данные зашифрованы, что делает их невидимыми для третьих лиц, которые могут перехватывать данные в Интернете. Это обеспечивает безопасность при передаче конфиденциальной информации, такой как пароли, номера кредитных карт и т.д. В целом, HTTPS является более безопасным и рекомендуется использовать для передачи конфиденциальной информации в Интернете. Однако, HTTP все еще используется для передачи нечувствительных данных.
2 года назад
Oтличие Serializable и Parcelable в андроид разработке, какой эффективнее ?
Основное отличие между Serializable и Parcelable в Android разработке заключается в способе сериализации объектов. Serializable сериализует объекты в формате, который может быть использован для сохранения и восстановления состояния объекта, в то время как Parcelable использует механизм передачи данных между процессами (IPC) для передачи объектов между компонентами Android. Parcelable обычно более эффективен, чем Serializable, так как он использует механизм IPC и меньше накладных расходов на маршаллинг и демаршаллинг объектов. Кроме того, Parcelable может быть более безопасен, так как он не использует...
571 читали · 2 года назад
Стиль REST ?
REST (Representational State Transfer) - это архитектурный стиль, используемый для проектирования и создания распределенных веб-сервисов. Он определяет набор ограничений и правил, которые упрощают разработку и облегчают понимание API. Основными принципами REST являются: REST API представляет собой интерфейс, который позволяет клиентам взаимодействовать с сервером посредством стандартных HTTP запросов, таких как GET, POST, PUT и DELETE...
2 года назад
Процесс и потоки ?
Процесс и потоки - это два основных понятия в операционной системе, связанных с выполнением программ. Процесс - это программа во время выполнения, которая запущена в оперативной памяти. Каждый процесс имеет свой уникальный идентификатор (PID) и отдельное адресное пространство. Это означает, что каждый процесс может иметь свои собственные переменные, данные и код, которые не могут быть доступны другим процессам. Поток - это механизм, который позволяет процессу выполнять несколько задач одновременно. Потоки являются составной частью процесса и разделяют его адресное пространство, что позволяет им обмениваться данными и переменными...
2 года назад
Android ViewModel как работает под капотом, как данные хранятся и не теряются?
ViewModel в Android - это часть архитектурного компонента, который позволяет сохранять и управлять данными в рамках жизненного цикла приложения, в том числе при конфигурационных изменениях, таких как поворот экрана или изменение языка. ViewModel создается вместе с Activity или Fragment и остается в памяти до тех пор, пока они не будут уничтожены. ViewModel имеет связь с Activity или Fragment, но не привязан к конкретному экземпляру. Это означает, что при повороте экрана Activity или Fragment пересоздается, но ViewModel остается тем же самым. Данные хранятся в ViewModel в форме объектов или LiveData...
195 читали · 2 года назад
Главное отличие наследование от делегирования?
Наследование и делегирование - это два разных подхода в объектно-ориентированном программировании. Наследование позволяет создавать новые классы на основе уже существующих, которые наследуют все поля и методы базового класса. Наследование устанавливает иерархию классов, где каждый производный класс является специализацией базового класса. Наследование может привести к проблемам, таким как ненужное увеличение размера классов и сложность в поддержке и изменении кода. Делегирование, с другой стороны, позволяет классу передать выполнение некоторых задач другому объекту. Класс-делегат содержит ссылку на объект-делегата и вызывает его методы при необходимости...
104 читали · 2 года назад
Основные компоненты Android-приложения, жизненный цикл и влияние на них системой?
Жизненный цикл Android-приложения состоит из следующих состояний: Система Android влияет на компоненты приложения, управляя их жизненным циклом и определяя, какие компоненты должны быть запущены, приостановлены, остановлены или уничтожены в зависимости от текущей потребности в ресурсах системы. Например, если система нуждается в дополнительной памяти, то она может приостановить работу приложения, находящегося в фоновом режиме, чтобы освободить ресурсы...
2 года назад
SOLID принципы с примерами на Kotlin?
SOLID - это набор принципов объектно-ориентированного программирования, которые помогают создавать гибкие, расширяемые и поддерживаемые системы. Рассмотрим каждый из этих принципов и приведем примеры их применения на языке Kotlin: Принцип единственной ответственности (Single Responsibility Principle) 1. Принцип единственной ответственности (S) гласит, что каждый класс должен иметь только одну причину для изменения. То есть класс должен отвечать только за одну часть функциональности системы. Пример: class Car { fun start() { /* ... */ } fun stop() { /* ... */ } } class CarController { fun startCar(car: Car) { car...
104 читали · 2 года назад