Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

+1 183новые вакансии за сутки·93 833вакансии открыты сейчас·Новое:Talanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 273
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: фильтры с числами, отклик по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 409 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 230
  • Облачные технологии14 171
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 801
  • Продакт-менеджер1 247

Разработка

  • Android1 858
  • iOS1 698
  • Fullstack вакансии996
  • AI вакансии955
  • Frontend вакансии755
  • Mobile вакансии44

По стеку

  • Go8 752
  • Java6 593
  • Node.js2 036
  • .NET1 739
  • Kotlin1 618
  • Rust1 472
  • C#717
  • PHP690
  • C++579

DevOps и инфраструктура

  • Kubernetes7 787
  • DevOps вакансии6 095
  • Linux-инфраструктура5 508
  • Terraform / IaC4 287
  • CI/CD3 272
  • Мониторинг и Observability1 792
  • SRE566
  • Кибербезопасность454

Аналитика и данные

  • Data Scientist1 138
  • Бизнес-аналитик921
  • Аналитик данных858
  • Системный аналитик154

Другие направления

  • Проджект-менеджер624
  • UI/UX дизайн149
  • Ручное тестирование14

По регионам

  • Вакансии в США44 166
  • Вакансии в Европе24 014
  • Вакансии в Канаде4 535
  • Работа в России3 867

По формату

  • Удалённые вакансии75 005
  • Релокация в США44 166
  • Гибридная работа12 485
  • Офисная работа7 090

По уровню

  • Senior вакансии42 643
  • Middle вакансии20 960
  • Junior вакансии6 708

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis38 вакансий
  • Spotify37 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме KotlinВсе вопросы
KotlinMiddleПроектирование систем

Что такое Kotlin Multiplatform (KMP) и Compose Multiplatform?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

KMP — технология Kotlin для компиляции общего кода в Android, iOS, JVM, JS и WASM. Compose Multiplatform расширяет это UI-фреймворком на основе Jetpack Compose для всех платформ.

Структура KMP-проекта

// build.gradle.kts
plugins {
    alias(libs.plugins.kotlin.multiplatform)
    alias(libs.plugins.android.library)
}

kotlin {
    androidTarget {
        compilations.all { kotlinOptions.jvmTarget = "17" }
    }
    iosArm64()
    iosSimulatorArm64()

    sourceSets {
        commonMain.dependencies {
            implementation("io.ktor:ktor-client-core:2.3.12")
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
            implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
        }
        androidMain.dependencies {
            implementation("io.ktor:ktor-client-okhttp:2.3.12")
        }
        val iosMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-darwin:2.3.12")
            }
        }
    }
}

Kotlin Multiplatform (KMP)

KMP позволяет писать общий код на Kotlin и компилировать его в разные таргеты. Каждый таргет компилируется нативно:

  • Android — компилируется в JVM bytecode через androidTarget().
  • iOS — компилируется в нативный бинарник через LLVM (iosArm64(), iosSimulatorArm64()).
  • JVM — для десктоп и серверного кода.
  • JS / WASM — для веб-таргетов.

Главная идея: бизнес-логика один раз, UI — нативно на каждой платформе (до появления Compose Multiplatform).

expect/actual механизм

Для платформо-специфичных API используется expect/actual:

// commonMain: объявляем интерфейс
expect fun getPlatformName(): String

expect class DatabaseDriver {
    fun createDriver(): SqlDriver
}

// androidMain: реализация для Android
actual fun getPlatformName(): String = "Android ${Build.VERSION.SDK_INT}"

actual class DatabaseDriver {
    actual fun createDriver(): SqlDriver =
        AndroidSqliteDriver(AppDatabase.Schema, context, "app.db")
}

// iosMain: реализация для iOS
actual fun getPlatformName(): String = UIDevice.currentDevice.systemName()

actual class DatabaseDriver {
    actual fun createDriver(): SqlDriver =
        NativeSqliteDriver(AppDatabase.Schema, "app.db")
}

Compose Multiplatform

Compose Multiplatform (от JetBrains) расширяет Jetpack Compose на все таргеты. Shared UI код компилируется в нативный рендеринг на каждой платформе:

  • Android — использует стандартный Jetpack Compose.
  • iOS — рендерит через Metal (не UIKit-враппер).
  • Desktop — через Skia (skiko).
  • Web (WASM) — через Skia в WebAssembly.
// Shared UI в commonMain
@Composable
fun JobCard(job: Job, onClick: () -> Unit) {
    Card(
        modifier = Modifier
            .fillMaxWidth()
            .padding(16.dp)
            .clickable(onClick = onClick),
        elevation = CardDefaults.cardElevation(4.dp)
    ) {
        Column(modifier = Modifier.padding(16.dp)) {
            Text(text = job.title, style = MaterialTheme.typography.headlineSmall)
            Text(text = job.company, style = MaterialTheme.typography.bodyMedium)
            job.salary?.let {
                Text(text = "$it USD/mo", color = MaterialTheme.colorScheme.primary)
            }
        }
    }
}

// Android: обычный setContent
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent { JobListScreen() }
    }
}

// iOS: через ComposeUIViewController
fun MainViewController() = ComposeUIViewController { JobListScreen() }

Когда использовать KMP vs Compose Multiplatform

  • KMP без Compose — когда нужна только общая логика (API, БД, analytics), а UI строится нативно (SwiftUI на iOS).
  • Compose Multiplatform — когда хотите и логику, и UI разделить; подходит для B2B-приложений, внутренних инструментов.
  • Только Android — Jetpack Compose без KMP, если нет iOS-требований.

Подводные камни

  • Kotlin/Native GC отличается от JVM GC — утечки памяти на iOS не диагностируются JVM-инструментами, нужны Instruments + Xcode.
  • Compose Multiplatform на iOS не поддерживает все Material 3 компоненты — DatePicker, TimePicker могут отсутствовать в конкретной версии.
  • expect/actual для классов (не только функций) ограничен до Kotlin 2.0 — до этой версии expect class не может иметь тело.
  • SQLDelight — де-факто стандарт для KMP БД, но миграции нужно писать вручную в SQL, без ORM-удобств Room.
  • iOS-фреймворк из KMP экспортируется как единый .xcframework — Objective-C interop не поддерживает Kotlin generics напрямую.
  • Hot reload (Live Preview) в Compose Multiplatform работает только для Android и Desktop; iOS требует пересборки.
  • Время сборки KMP-проекта значительно выше моноплатформенного — incremental build для iOS через Kotlin/Native медленнее JVM-таргета в 3–5 раз.
  • CocoaPods интеграция (cocoapods { } блок в Gradle) добавляет зависимость от Ruby-среды на машине разработчика.

Типичные ошибки

  • Объяснять «KMP и Compose Multiplatform» только как синтаксис и не описывать поведение runtime/compiler.
  • Игнорировать важный риск: Риск - обещать один UI без учета navigation, accessibility, lifecycle и нативных интеграций конкретной платформы.
  • Давать пример без edge case: отмены, null, recomposition, platform boundary или ошибки.

Что проверяет интервьюер

  • Формулирует суть темы «KMP и Compose Multiplatform» своими словами и связывает ее с кодом.
  • Называет механизм: KMP лучше начинать с общей бизнес-логики, моделей, networking и persistence; общий UI требует отдельной оценки platform UX и maturity.
  • Видит production-последствие: Риск - обещать один UI без учета navigation, accessibility, lifecycle и нативных интеграций конкретной платформы.

Как вы знаете этот вопрос?

Проверить себя по теме Kotlin →

Источники

  • https://kotlinlang.org/docs/multiplatform/get-started.html
  • https://kotlinlang.org/docs/multiplatform/compose-multiplatform-and-jetpack-compose.html
←Предыдущий вопросРасскажите о случае, когда особенности Kotlin повлияли на архитектурное решение, производительность или сопровождение проекта.Следующий вопрос→Какие версии, возможности или изменения экосистемы Kotlin важно учитывать на собеседованиях в 2026 году?

Связанные темы

Kotlinkmp-compose-multiplatform-reasoningkotlin-language

Вакансии с этим навыком

Kotlin вакансии
  • Tech Lead Manager, Software Engineering
  • Senior Staff Software Engineer, Mobile (Android and iOS) - Hyderabad, India
  • Senior Backend Engineer (Java/Kotlin)
  • Junior Android Developer
  • Sr iOS Developer (AI-assisted), remote

Частые вопросы на собеседовании

  • Что такое structured concurrency в Kotlin?
  • Для каких задач Kotlin является сильным выбором, а где лучше честно выбрать другой язык?
  • В чём разница между val и var в Kotlin?
  • В чём разница между List и MutableList в Kotlin?