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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 105
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

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

  • Kubernetes7 763
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 240
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

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

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Какие production-риски есть у Kotlin Multiplatform: memory, lifecycle bugs, accessibility, offline mode, app size или platform-specific behavior?

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

Production-риски KMP: различия в поведении Kotlin/Native vs JVM (freeze, memory model), разный размер бинарников на платформах, ограниченный stdlib на JS/Native, сложность отладки expect/actual и проблемы с зависимостями, не имеющими KMP-артефактов.

Memory Model: Kotlin/Native vs JVM

До Kotlin 1.7.20 Kotlin/Native использовал строгую модель памяти (strict memory model): объекты, доступные из нескольких потоков, должны были быть «frozen». С 1.7.20 введена новая модель памяти (совместимая с JVM), но legacy код с freeze() ещё встречается:

// Старый код с freeze (Kotlin/Native, до 1.7.20)
@SharedImmutable
val config = AppConfig(apiUrl = "https://api.example.com").freeze()

// Новая модель (1.7.20+) — freeze не нужен
// gradle.properties:
// kotlin.native.binary.memoryModel=experimental  (было)
// Теперь это default

// Современный общий код — просто data class
data class AppConfig(val apiUrl: String)

Production-риски Kotlin Multiplatform

Kotlin Multiplatform (KMP) позволяет разделять бизнес-логику между JVM, iOS (Kotlin/Native), Web (Kotlin/JS) и другими платформами. Переход в production выявляет ряд нетривиальных рисков.

expect/actual и platform-specific баги

expect/actual механизм — основа KMP. Ошибки в actual-реализациях сложно отловить в общих тестах:

// commonMain
expect class PlatformLogger() {
    fun log(message: String)
}

// androidMain
actual class PlatformLogger actual constructor() {
    actual fun log(message: String) {
        android.util.Log.d("App", message)
    }
}

// iosMain
actual class PlatformLogger actual constructor() {
    actual fun log(message: String) {
        println(message) // NSLog в production лучше
    }
}

Риск: поведение может отличаться между платформами. Тесты в commonTest проверяют только общую логику, не actual-реализации.

Зависимости без KMP-артефактов

Популярные JVM-библиотеки часто не имеют KMP-версий. Необходимо использовать expect/actual или искать KMP-альтернативы:

// build.gradle.kts — KMP-совместимые библиотеки
kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                // KMP-совместимые альтернативы
                implementation("io.ktor:ktor-client-core:2.3.10")       // вместо OkHttp
                implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") // вместо Gson
                implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0") // вместо java.time
                implementation("io.insert-koin:koin-core:3.5.3")        // DI без Hilt
            }
        }
        val androidMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-okhttp:2.3.10")
            }
        }
        val iosMain by getting {
            dependencies {
                implementation("io.ktor:ktor-client-darwin:2.3.10")
            }
        }
    }
}

Размер iOS-бинарника

Kotlin/Native компилирует в значительно больший бинарник, чем Swift/ObjC. Типичное KMP-приложение добавляет 10–20 МБ к iOS IPA. Оптимизация через Xcode bitcode и strip symbols:

// build.gradle.kts — оптимизация Native бинарника
kotlin {
    targets.withType<KotlinNativeTarget> {
        binaries.all {
            freeCompilerArgs += "-Xdisable-phases=EscapeAnalysis"
        }
        binaries.framework("shared") {
            isStatic = true // статический фреймворк меньше динамического
            optimized = true // включает оптимизации для release
        }
    }
}

Отладка и stack traces

Kotlin/Native crash reports в iOS Crashlytics показывают mangled символы. Нужен dSYM-файл и символизация:

// Включить дебаг-символы для release
binaries.framework("shared") {
    debuggable = true // для staging
    // В production — false, но сохраняйте dSYM отдельно
}

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

  • Legacy Kotlin/Native freeze model: код, написанный до 1.7.20, может падать с InvalidMutabilityException на новой модели памяти при неправильном использовании.
  • Kotlinx.coroutines на iOS требует явного управления Main dispatcher — без импорта kotlinx-coroutines-core-iosarm64 не работает.
  • expect/actual без unit-тестов для каждой actual-реализации — платформенные баги проходят незамеченными.
  • Kotlin/JS генерирует крупные JS-бинарники без агрессивного DCE (Dead Code Elimination) — нужен явный включение.
  • SQLDelight/Room: Room не поддерживает KMP — только SQLDelight имеет commonMain API.
  • Время компиляции iOS-таргета значительно больше JVM — CI pipeline нужно оптимизировать (кэш Kotlin/Native toolchain).
  • Kotlin/Native не поддерживает reflection — любой код, зависящий от java.lang.reflect, не работает на iOS.
  • Совместимость версий компилятора и klib-артефактов: обновление kotlin_version может сломать транзитивные зависимости.

Что портит ответ

  • Говорить только о запуске Kotlin Multiplatform, но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

Что слушает интервьюер

  • Видит production-риски Kotlin Multiplatform
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

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

Проверить себя по теме Kotlin Multiplatform →
←Предыдущий вопросВ чём разница между разделением логики UI и разделением бизнес-логики в KMP?Следующий вопрос→Как KMP взаимодействует со Swift/Objective-C на iOS?

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

Kotlin Multiplatformproduction-readinesstechnical-communicationtechnology-selectiontrade-off-analysis

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

  • Что такое структура source set: commonMain, androidMain, iosMain?
  • Какой код можно разделять между платформами, а какой должен оставаться платформо-зависимым?
  • Как структурировать KMP-проект (shared module, платформо-зависимые модули)?
  • Что такое Kotlin Multiplatform (KMP) и какие платформы он поддерживает?