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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#ЧеКак
🤔 Как происходит составление хешмапы, если совпадает хеш-код?

Если два ключа имеют одинаковый хеш-код (коллизия), используются механизмы разрешения:
🟠Связанные списки (chaining): элементы с одинаковым хешем помещаются в один bucket в виде связанного списка.
🟠Сбалансированные деревья: современные реализации (например, в Java) используют деревья вместо списков для ускорения поиска при большом количестве коллизий.
🟠Метод equals используется для проверки уникальности ключей в случае совпадения хеша.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Kotlin создать список, который автоматически удаляет дубликаты при добавлении элементов?
Anonymous Quiz
0%
Использовать listOf()
25%
Использовать mutableListOf()
67%
Использовать setOf()
8%
Использовать linkedSetOf()
#полезное
👨‍💻 Гибрид двух легендарных игр

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что происходит при использовании lateinit с переменной, которая не была инициализирована перед её использованием?
Anonymous Quiz
18%
Возвращается значение по умолчанию
64%
Генерируется исключение UninitializedPropertyAccessException
9%
Программа завершается с ошибкой сегментации
9%
Компилятор выдаст предупреждение
#ЛитКод
Задача: 632. Smallest Range Covering Elements from K Lists

У вас есть k списков отсортированных целых чисел в неубывающем порядке. Найдите наименьший диапазон, в который входит хотя бы одно число из каждого из k списков. Мы определяем, что диапазон [a, b] меньше диапазона [c, d], если b - a < d - c или a < c, если b - a == d - c.

Пример:
Input: nums = [[4,10,15,24,26],[0,9,12,20],[5,18,22,30]]
Output: [20,24]


👨‍💻 Алгоритм:

1⃣Инициализация и сбор всех начальных элементов
Создайте массив для хранения текущих индексов каждого списка и используйте минимальную кучу для отслеживания текущих минимальных элементов из каждого списка.

2⃣Нахождение минимального диапазона
Используйте кучу для извлечения минимального элемента и обновления текущего диапазона. Обновляйте максимальный элемент в текущем диапазоне при добавлении новых элементов.

3⃣Проверка и обновление диапазона
Продолжайте обновлять кучу и диапазон, пока возможно. Завершите, когда один из списков исчерпан.

😎 Решение:
import java.util.PriorityQueue

data class Element(val value: Int, val row: Int, val col: Int)

class Solution {
fun smallestRange(nums: List<List<Int>>): IntArray {
val minHeap = PriorityQueue<Element> { a, b -> a.value - b.value }
var maxValue = Int.MIN_VALUE

for (i in nums.indices) {
minHeap.add(Element(nums[i][0], i, 0))
maxValue = maxOf(maxValue, nums[i][0])
}

var rangeStart = 0
var rangeEnd = Int.MAX_VALUE

while (minHeap.size == nums.size) {
val minElement = minHeap.poll()
if (maxValue - minElement.value < rangeEnd - rangeStart) {
rangeStart = minElement.value
rangeEnd = maxValue
}

if (minElement.col + 1 < nums[minElement.row].size) {
val value = nums[minElement.row][minElement.col + 1]
minHeap.add(Element(value, minElement.row, minElement.col + 1))
maxValue = maxOf(maxValue, value)
}
}

return intArrayOf(rangeStart, rangeEnd)
}
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#Собес
🤔 Расскажи про анонимные классы и объекты, object u companion object

Анонимные классы в Kotlin создаются с использованием ключевого слова object и не требуют явного обьявления. Они реализуют интерфейсы или наследуют классы и могут использоваться для одноразовых целей. object в Kotlin также используется для объявления объектов-синглтонов (object declaration) и для создания объектов внутри классов (companion object), которые действуют как статические поля.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🤔 В Kotlin, как преобразовать список строк в список их длин?
Anonymous Quiz
57%
list.map { it.length }
13%
list.convert { String -> Int }
17%
list.lengths()
13%
list.collect { it.length }
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#Полезное
👩‍💻 Android представил свою новую функцию RCS!

RCS (Rich Communication Services) — это стандарт для обмена сообщениями, который улучшает SMS и MMS, предоставляя пользователям более расширенные возможности, такие как передача медиафайлов высокого качества, поддержка групповых чатов, обмен реакциями на сообщения и подтверждения доставки.

Основные особенности RCS:

🟠Обогащенные сообщения: Возможность отправлять текстовые сообщения с вложениями, такими как фотографии, видео и документы, а также поддержка взаимодействий с картами и стикерами.

🟠 Групповые чаты и подтверждения: Поддержка групповых чатов с улучшенными функциями, включая подтверждения о доставке и прочтении сообщений.

🟠 Интеграция с интернетом: В отличие от стандартных SMS и MMS, сообщения RCS отправляются через интернет, что позволяет улучшить качество связи и снизить затраты на обмен сообщениями.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤2
#Вакансии
👨‍💻 Kotlin разработчик

Локация: Удаленно
Компания: YARUS
ЗП: от 1 500 до 2 500 $
Занятость: Частичная/Проектная
Город и адрес офиса: Санкт-Петербург

Kotlin – разработчик со опытом CI/CD в GitLab. B2B сегмент, готовый продукт с тестами и CICD, надо дотюнить CI/CD в GitLab (перевод на новые тесты) + пилить новые фичи (опыт работы с SDK Zebra, Honeywell желательно), апа под ТСД. Текущий разработчик проконсультирует, есть качественная дока, НЕ легаси.

🚩Требования
🔵Опыт работы в разработке от 3х лет
🔵Опыт работы с мобильной фермой (STF или аналог), SonarQube
🔵Практические знания архитектурных паттернов (MVC, MVP, MVVM, MVI)
🔵Опыт работы с SDK, Jetpack Compose, Retrofit
🔵Наличие репрезентативного pet-проекта или прод-проекта с целью демонстрации тех. скиллов обязательно

💬 Резюме отправлять: @yarus_y

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес
🤔 Чем Kotlin отличается от Java?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😊 Koin — это лёгкий и прагматичный фреймворк для внедрения зависимостей (Dependency Injection) на языке Kotlin!

🟠Он поддерживает как Kotlin Multiplatform, так и Android. Koin предоставляет удобный DSL для настройки зависимостей, минимизирует избыточность кода и интегрируется с различными экосистемами, включая Jetpack Compose и Ktor.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 634. Find the Derangement of An Array

В комбинаторной математике отклонение - это перестановка элементов множества таким образом, что ни один элемент не оказывается на прежнем месте. Вам дано целое число n. Изначально имеется массив, состоящий из n целых чисел от 1 до n в порядке возрастания, верните количество отклонений, которые он может породить. Поскольку ответ может быть огромным, верните его по модулю 109 + 7.

Пример:
Input: n = 3
Output: 2


👨‍💻 Алгоритм:

1⃣Инициализация массива для хранения результатов
Создайте массив dp для хранения количества отклонений для каждого значения от 0 до n. Установите начальные значения: dp[0] = 1 и dp[1] = 0.

2⃣Вычисление количества отклонений
Используйте динамическое программирование для вычисления количества отклонений для каждого значения от 2 до n. Формула для вычисления: dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2]) % MOD.

3⃣Возвращение результата
Верните значение dp[n], которое будет количеством отклонений для n элементов, по модулю 10^9 + 7.

😎 Решение:
class Solution {
fun countDerangements(n: Int): Int {
val MOD = 1_000_000_007
if (n == 0) return 1
if (n == 1) return 0
val dp = IntArray(n + 1)
dp[0] = 1
dp[1] = 0
for (i in 2..n) {
dp[i] = ((i - 1) * (dp[i - 1] + dp[i - 2].toLong()) % MOD).toInt()
}
return dp[n]
}
}


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес
🤔 Какие основные типы данных в Kotlin?

В Kotlin есть несколько основных типов данных:
🟠Числа: Int (целые числа), Double (двойной точности числа с плавающей запятой), Float (одинарной точности), Long (длинные целые числа), Short (короткие целые числа) и Byte (байты).

🟠Булевы значения: Тип Boolean , который может быть либо true , либо false .

🟠Символы: Тип Char для одного символа.

🟠Строки: Тип String для последовательности символов.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
🤔 Как в Kotlin создать класс с приватным конструктором?
Anonymous Quiz
61%
class MyClass private constructor()
26%
private class MyClass()
11%
class private MyClass()
3%
class MyClass() private
❤2
#полезное
😊 Шаблон приложения Kotlin Multiplatform

🟠Базовый шаблон приложения Kotlin Multiplatform для Android и iOS. Он включает общую бизнес-логику и обработку данных, а также реализацию общего пользовательского интерфейса с использованием Compose Multiplatform

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤1
#Собес
🤔 Как обрабатывать nullable значения в Kotlin?

B Kotlin для работы с nullable типами данных можно использовать несколько методов:
🟠 Safe calls (?.): безопасный доступ к свойствам и методам объекта, если объект равен
null.
🟠 Elvis operator (?:): позволяет задать значение по умолчанию, если объект равен null.
🟠 Safe casts (as?): безопасное приведение типов, которое возвращает null , если
приведение невозможно.
🟠 Non-null assertion (!!): если вы уверены, что переменная не равна null, используйте оператор !! , но будьте осторожны, потому что это может вызвать исключение NullPointerException.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
🤔 В Kotlin, какой метод позволяет перебрать элементы коллекции и выполнить действие для каждого элемента, не изменяя саму коллекцию?
Anonymous Quiz
21%
map
73%
forEach
6%
transform
0%
Пра
❤2
#вакансии
👨‍💻 Junior Android разработчик

Локация: Удаленно
Компания: Effective Mobile
ЗП: 70 000 р. на старте
Занятость: Полная

Мы - аккредитованная  IT-компания Effective Mobile. Сейчас мы в поисках андроид разработчика (junior).
Если ты готов активно развивать свои навыки (а мы в этом поможем), то ты сможешь поработать в крупных компаниях, таких как   Х5 Group, Сбербанк, ВК, МТС, Магнит, Magnum и других.

🚩Мы ждём от тебя
🔵 Понимание Android (Activity, Fragment, Service, BroadcastReceiver, WorkManager, View под капотом);
🔵 Владение Kotlin (generics, лямбды, null safety);
🔵 Понимание принципов работы с  Coroutines/RxJava;
🔵 Уверенное знание любого DI фреймворка;
🔵 Понимание принципов Clean Architecture;
🔵 Навыки работы с Git.

🚩Мы предлагаем
🟡 Удаленный формат работы с гибким графиком 5/2;
🟡 Четкая система постановки задач;
🟡 Наставничество от более опытных специалистов;
🟡 Поддержка корпоративного психолога.

💬 Резюме отправлять: @sumkinapolina

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3