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

+1 208новых вакансий за сутки·91 464вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 131
  • Облачные технологии14 071
  • QA вакансии3 448
  • Backend вакансии2 087
  • Инженер данных1 783
  • Продакт-менеджер1 221

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии976
  • AI вакансии943
  • Frontend вакансии738
  • Mobile вакансии44

По стеку

  • Go8 685
  • Java6 537
  • Node.js2 024
  • .NET1 723
  • Kotlin1 612
  • Rust1 462
  • C#710
  • PHP682
  • C++574

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

  • Kubernetes7 766
  • DevOps вакансии6 046
  • Linux-инфраструктура5 493
  • Terraform / IaC4 271
  • CI/CD3 241
  • Мониторинг и Observability1 790
  • SRE564
  • Кибербезопасность445

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

  • Data Scientist1 120
  • Бизнес-аналитик913
  • Аналитик данных834
  • Системный аналитик150

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

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

По регионам

  • Вакансии в США43 094
  • Вакансии в Европе23 429
  • Вакансии в Канаде4 376
  • Работа в России3 903

По формату

  • Удалённые вакансии72 764
  • Релокация в США43 097
  • Гибридная работа12 388
  • Офисная работа7 092

По уровню

  • Senior вакансии41 715
  • Middle вакансии20 188
  • Junior вакансии6 560

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 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 вакансии
  • EverPro - Android Engineer
  • Senior Software Engineer II, Mobile - On App Ads (AI Native)
  • Senior Software Engineer (Java)
  • Senior Product Engineer - Listing Quality
  • Senior Engineering Manager, Co-Intelligent Coaching

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

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