cookie

Ми використовуємо файли cookie для покращення вашого досвіду перегляду. Натиснувши «Прийняти все», ви погоджуєтеся на використання файлів cookie.

avatar

Kotlin | Вопросы собесов

Разбираем вопросы с собеседований на Android разработчка. Kotlin / Java Сайт: easyoffer.ru Реклама: @easyoffer_adv

Більше
Рекламні дописи
1 467
Підписники
+424 години
+727 днів
+46830 днів

Триває завантаження даних...

Приріст підписників

Триває завантаження даних...

🤔 Что такое `data class` в Kotlin?Anonymous voting
  • Класс для хранения констант
  • Класс, автоматически генерирующий методы
  • Абстрактный класс
  • Интерфейс
0 votes
1
Какие архитектурные паттерны, которые используются в android фреймворке есть ? Спросят с вероятностью 20% В разработке Android-приложений применяются различные архитектурные паттерны, которые помогают сделать код более читаемым, удобным для тестирования и легким в обслуживании. Ниже перечислены ключевые часто используемые архитектурные паттерны: 1️⃣Model-View-Controller (MVC)Model содержит бизнес-логику и данные приложения. ✅View отвечает за отображение данных (пользовательский интерфейс). ✅Controller действует как посредник между Model и View, управляя потоком данных к Model и обновляя View. В Android активности и фрагменты обычно играют роль контроллера. 2️⃣Model-View-Presenter (MVP)Model представляет слой данных и бизнес-логику. ✅View отвечает за отображение данных и делегирует обработку пользовательских действий Presenter. ✅Presenter содержит логику представления, работает с Model и обновляет View. В MVP View (активности и фрагменты) полностью отделены от логики представления, что облегчает тестирование. 3️⃣Model-View-ViewModel (MVVM)Model обеспечивает структуру данных и бизнес-логику. ✅View отображает визуальные элементы и действия пользователя. ✅ViewModel служит абстракцией View и содержит логику представления, отвечая за наблюдение за данными и состоянием UI. MVVM поддерживается архитектурными компонентами Android Jetpack, такими как LiveData и DataBinding, что обеспечивает простую и эффективную реализацию реактивного UI. 4️⃣Clean Architecture Clean Architecture предложена Робертом Мартином (Uncle Bob) и адаптирована для Android. Она направлена на разделение кода на слои с четко определенными задачами: ✅Доменный слой содержит бизнес-логику (сущности, использование случаев). ✅Слой данных отвечает за доступ к данным (базы данных, сетевые запросы). ✅Презентационный слой содержит логику UI (активности, фрагменты, ViewModel). Этот подход помогает достичь высокой степени декомпозиции и независимости компонентов, что упрощает тестирование и поддержку приложения. 5️⃣Component-Based Architecture Компонентно-ориентированная архитектура фокусируется на разделении приложения на переиспользуемые компоненты, каждый из которых имеет четко определенные задачи и интерфейсы. В контексте Android это может включать создание модульных фрагментов, вью и сервисов, которые могут быть легко заменены или переиспользованы в различных частях приложения или даже в других приложениях. Выбор архитектурного паттерна зависит от конкретных требований и сложности проекта. Использование этих паттернов облегчает масштабирование приложения, обеспечивает его устойчивость к изменениям и упрощает процесс разработки и тестирования. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 1078 вопросов на Android разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
👍 6
Фото недоступнеДивитись в Telegram
⚡️В сети начали находить курсы и книги известных онлайн школ в открытом доступе Вот отсортированная база с тонной материала(постепенно пополняется): 🔗 БАЗА (3385 видео): (343 видео, 87 книги) — Java (176 видео, 32 книги) — Git (293 видео, 63 книги) — C# (352 видео, 89 книги) — С++ (167 видео, 53 книги) — PHP (227 видео, 83 книги) — SQL (163 видео, 29 книги) — Linux (363 видео, 122 книги) — Python (415 видео, 168 книги) — Frontend (143 видео, 33 книги) — Flask (167 видео, 43 книги) — Django (197 видео, 49 книги) — Разработка ботов (137 видео, 93 книги) — Data Science (113 видео, 82 книги) — GameDev (129 видео, 73 книги) — QA Скачивать ничего не нужно — все выложили в Telegram и на YouTube с доступом по ссылке
Показати все...
🤔 Какое ключевое слово используется для объявления расширения функции в Kotlin?Anonymous voting
  • extend
  • func
  • fun
  • override
0 votes
Какое главное отличие между Java и Kotlin касательно абстрактных классов, методов ? Спросят с вероятностью 13% Java и Kotlin оба поддерживают концепции абстрактных классов и методов, но существуют определенные различия в подходах и возможностях, связанных с этими концепциями в каждом из языков. Рассмотрим ключевые отличия: 1️⃣Синтаксис и использование Java: ✅Абстрактные классы и методы объявляются с использованием ключевого слова abstract. ✅Абстрактные методы не могут иметь реализации в абстрактном классе. ✅Любой класс, содержащий один или более абстрактных методов, должен быть объявлен абстрактным. Пример:
abstract class Animal {
    abstract void makeSound();

    void breathe() {
        System.out.println("I breathe air.");
    }
}
Kotlin: ✅Абстрактные классы и методы также объявляются с использованием ключевого слова abstract. ✅Абстрактные методы не могут иметь реализации в абстрактном классе. ✅Основное отличие в том, что Kotlin поддерживает свойства (properties), которые могут быть абстрактными, что не поддерживается. Пример:
abstract class Animal {
    abstract fun makeSound()

    fun breathe() {
        println("I breathe air.")
    }
}
2️⃣Наследование и реализация Java: ✅Классы могут наследовать только один абстрактный класс, так как Java не поддерживает множественное наследование классов. Kotlin: ✅Также позволяет классам наследовать только один абстрактный класс. Однако он вводит понятие интерфейсов, которые могут содержать реализацию по умолчанию, и класс может реализовывать несколько интерфейсов. Это предоставляет большую гибкость по сравнению с Java. 3️⃣Модификаторы доступа по умолчанию Java: ✅Если он не указан, по умолчанию он имеет уровень доступа "package-private", что означает, что члены класса доступны только внутри того же пакета. Kotlin: ✅Если он не указан, по умолчанию он является public, что означает, что член класса доступен везде, где виден сам класс. И Java, и Kotlin предоставляют мощные средства для работы с абстрактными классами и методами, но Kotlin предлагает более современный подход с дополнительной гибкостью благодаря поддержке свойств, интерфейсов с реализацией по умолчанию и более открытым модификатором доступа по умолчанию. Эти особенности делают его привлекательным выбором для новых проектов и разработчиков, стремящихся использовать более современные практики и возможности языка. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 1078 вопросов на Android разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
🤔 6👍 4
🤔 Что делает функция `apply` в Kotlin?Anonymous voting
  • Возвращает новый объект
  • Изменяет контекст
  • Возвращает контекстный объект
  • Создает анонимный класс
0 votes
Чем отличаются единицы измерения, например dp от sp ? Спросят с вероятностью 13% Используются различные единицы измерения для указания размеров и расстояний в пользовательском интерфейсе, среди которых наиболее часто используются dp (density-independent pixels) и sp (scale-independent pixels). Обе эти единицы предназначены для обеспечения одинакового визуального представления элементов интерфейса на различных устройствах, но они служат разным целям. 1️⃣Density-independent Pixels (dp)Определение: Или "пиксель, не зависящий от плотности", — это абстрактная единица, которая используется для выражения размеров макета или элементов интерфейса. 1 dp эквивалентен одному пикселю на экране с плотностью 160 dpi (точек на дюйм), которая считается базовой плотностью (mdpi). ✅Цель использования: dp используется для гарантии того, что элементы пользовательского интерфейса (например, кнопки, поля, отступы) будут иметь одинаковый физический размер на всех устройствах, независимо от плотности экрана устройства. 2️⃣Scale-independent Pixels (sp)Определение: Или "пиксель, не зависящий от масштаба", также является абстрактной единицей и используется специально для размеров шрифтов текста. ✅Особенность: Помимо учета плотности экрана, как и dp, sp также учитывает предпочтения пользователя по масштабу текста. Если пользователь увеличивает масштаб текста в настройках доступности своего устройства, размеры текста в sp автоматически увеличиваются, обеспечивая лучшую читаемость. Основные различия между dp и sp 1️⃣Масштабирование текста: sp масштабируются не только с изменением плотности экрана, но и в зависимости от пользовательских настроек масштабирования текста. Это делает sp предпочтительной единицей для задания размеров текста, чтобы обеспечить его доступность и комфортное восприятие. 2️⃣Использование в макетах: dp рекомендуется использовать для всех других размеров в пользовательском интерфейсе, включая отступы, ширины, высоты элементов и т. д., чтобы обеспечить их консистентность на различных устройствах. В XML-разметке Android можно указать размер текста в sp и размер элемента в dp:
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:padding="8dp"
    android:text="Пример текста" />
Такое разделение позволяет оптимизировать приложение для различных устройств и настроек доступности, улучшая пользовательский опыт. Поэтому важно всегда использовать sp для текста и dp для всех остальных размеров в приложении Android. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 1078 вопросов на Android разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...

👍 7
🤔 Какая особенность у ключевого слова `val` в Kotlin?Anonymous voting
  • Иммутабельность
  • Ленивая инициализация
  • Внутренняя синхронизация
  • Глобальная видимость
0 votes
2👾 1
Что известно про extension ? Спросят с вероятностью 20% Extension функции и свойства (расширения) позволяют добавлять новую функциональность к существующим классам без их модификации или наследования. Расширения не изменяют класс, к которому они добавлены, а предоставляют способ расширить его функциональность "снаружи". Extension функции Позволяют добавлять новые методы к классу. Они объявляются с указанием типа, который они расширяют, за которым следует точка и имя функции. Расширяющая функция внутри своего тела может обращаться к членам класса через this. Пример расширяющей функции:
fun String.lastChar(): Char = this[this.length - 1]

Это расширение добавляет к классу 
String функцию lastChar, возвращающую последний символ строки. Extension свойства Подобно функциям, можно объявлять расширяющие свойства, которые позволяют "добавлять" новые свойства к существующим классам. Пример расширяющего свойства:
val String.lastChar: Char
    get() = this[this.length - 1]
Это расширение добавляет к классу String свойство lastChar, которое позволяет получить последний символ строки. Расширения не могут доступать к приватным или защищенным членам класса, так как они фактически являются внешними функциями или свойствами, добавленными к классу. Преимущества использования 1️⃣Улучшение читаемости кода: Расширения позволяют писать более четкий и понятный код, особенно когда функциональность тесно связана с конкретным типом данных. 2️⃣Более удобная организация кода: Функциональность можно добавлять к классам без изменения исходного кода класса или создания подклассов. 3️⃣Повышение гибкости: Расширения дают возможность расширять функциональность классов из внешних библиотек или фреймворков, к исходному коду которых у вас нет доступа. Расширения особенно полезны при работе с библиотеками или фреймворками, когда модификация исходного класса невозможна. Они также идеально подходят для создания DSL (Domain-Specific Languages). Extension функции и свойства — это мощный инструмент, позволяющий расширять функциональность существующих классов без их изменения или наследования, облегчая тем самым разработку и поддержку кода. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 1078 вопросов на Android разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...
👍 4
Как будут вести себя linked list и array list, если вставить в них элемент ? Спросят с вероятностью 13% LinkedList и ArrayList представляют собой две разные реализации интерфейса List, и каждая из них имеет свои особенности поведения при вставке элементов. Разберем, как эти две структуры данных ведут себя при добавлении элемента, исходя из их внутренней структуры и алгоритмической сложности операций. ArrayList Основан на динамическом массиве. Это означает, что внутри ArrayList данные хранятся в массиве, размер которого автоматически увеличивается, когда текущая емкость массива исчерпана. Добавление элемента в конец списка `ArrayList` (используя метод `add(E e)`): ✅Когда вы добавляете элемент в конец, операция обычно выполняется за время O(1), так как не требуется сдвигать элементы. ✅Однако, если внутренний массив заполнен, и требуется его расширение, ArrayList создает новый массив большего размера и копирует в него все элементы из старого массива, что занимает O(n) времени, где n — количество элементов в списке. Это случается редко, но делает среднюю сложность вставки в конец O(1) (амортизированное время). Добавление элемента в середину списка (используя метод `add(int index, E element)`): ✅Если вам нужно вставить элемент в середину списка, ArrayList должен сдвинуть все последующие элементы на одну позицию вправо для освобождения места для нового элемента. Эта операция имеет временную сложность O(n - index), где index — индекс, на который вставляется элемент. LinkedList Реализует структуру данных двунаправленного связного списка. Каждый элемент (узел) содержит ссылки на предыдущий и следующий элементы в списке, а также данные элемента. Добавление элемента в конец списка LinkedList (используя методсебя linked или `addLast(E e)`): ✅Это обычно выполняется за время O(1), так как достаточно просто обновить ссылки последнего узла и добавить новый узел в конец. Добавление элемента в начало списка: ✅Так же как и добавление в конец, добавление элемента в начало списка (используя метод addFirst(E e)) выполняется за время O(1), потому что требуется только изменить несколько ссылок в узлах. Добавление элемента в середину списка (используя метод `add(int index, E element)`): ✅Для этого необходимо сначала найти узел, который в данный момент находится на данной позиции. Поскольку для этого требуется пройти от начала или конца списка до индекса, это занимает O(n / 2) в среднем, а затем вставка нового узла происходит за O(1). Таким образом, общая сложность составляет O(n). Выбор между LinkedList и ArrayList зависит от типа операций, которые вы планируете чаще всего выполнять. Если вам нужно быстро добавлять и удалять элементы без учета их позиции, LinkedList может быть более предпочтительным. Если же вам нужен быстрый произвольный доступ к элементам и добавление в конец списка, ArrayList будет лучшим выбором. 👉 Можно посмотреть примеры как отвечают люди на этот вопрос, или перейти к списку 1078 вопросов на Android разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показати все...

👍 9🔥 1
Оберіть інший тариф

На вашому тарифі доступна аналітика тільки для 5 каналів. Щоб отримати більше — оберіть інший тариф.