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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 095
  • Облачные технологии14 031
  • QA вакансии3 458
  • Backend вакансии2 068
  • Инженер данных1 772
  • Продакт-менеджер1 238

Разработка

  • Android1 861
  • iOS1 696
  • Fullstack вакансии965
  • AI вакансии945
  • Frontend вакансии734
  • Mobile вакансии44

По стеку

  • Go8 640
  • Java6 537
  • Node.js2 013
  • .NET1 704
  • Kotlin1 619
  • Rust1 456
  • C#703
  • PHP680
  • C++566

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

  • Kubernetes7 748
  • DevOps вакансии6 038
  • Linux-инфраструктура5 485
  • Terraform / IaC4 252
  • CI/CD3 214
  • Мониторинг и Observability1 781
  • SRE560
  • Кибербезопасность446

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

  • Data Scientist1 114
  • Бизнес-аналитик915
  • Аналитик данных828
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 023
  • Вакансии в Европе23 282
  • Вакансии в Канаде4 294
  • Работа в России3 910

По формату

  • Удалённые вакансии72 436
  • Релокация в США43 022
  • Гибридная работа12 399
  • Офисная работа7 085

По уровню

  • Senior вакансии41 615
  • Middle вакансии20 102
  • Junior вакансии6 553

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

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML165 вакансий
  • Grab139 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

В чём разница между == и === в Kotlin?

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

== вызывает equals() (структурное сравнение), === сравнивает ссылки (идентичность объектов). Для data class == сравнивает поля; для обычного класса без переопределения equals — эквивалентно ===.

== — структурное равенство

Оператор == в Kotlin транслируется в вызов a?.equals(b) ?: (b === null). То есть это безопасный вызов equals() с null-обработкой. Для data class компилятор генерирует equals(), сравнивающий все свойства из primary constructor.

data class Point(val x: Int, val y: Int)

val p1 = Point(1, 2)
val p2 = Point(1, 2)
val p3 = p1

println(p1 == p2)   // true  — equals() по полям
println(p1 === p2)  // false — разные объекты в памяти
println(p1 === p3)  // true  — одна и та же ссылка
println(p1 == p3)   // true  — equals() тоже true

=== — референциальное равенство

Оператор === проверяет, что два операнда указывают на один и тот же объект в памяти (аналог == в Java для объектов). Для примитивных типов (Int, Long, …) при значениях в диапазоне JVM-кэша результат может быть неожиданным.

// Обычный класс — equals не переопределён
class Box(val value: Int)

val b1 = Box(5)
val b2 = Box(5)
println(b1 == b2)   // false — equals по умолчанию == ===
println(b1 === b2)  // false

// Null-безопасность ==
val s: String? = null
println(s == null)  // true — безопасно
// s.equals(null)   // NullPointerException в Java, в Kotlin — ошибка компиляции без ?

Числовые типы и boxing

val a: Int = 1000
val b: Int = 1000
println(a === b)  // true для примитивных Int (unboxed)

val x: Int? = 1000
val y: Int? = 1000
println(x === y)  // false! nullable Int — boxed объекты на куче

Строки

val s1 = "hello"
val s2 = "hello"
println(s1 == s2)   // true — equals
println(s1 === s2)  // true — JVM intern pool: литералы интернируются

val s3 = String(charArrayOf('h','e','l','l','o'))
println(s1 == s3)   // true  — equals
println(s1 === s3)  // false — новый объект

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

  • Для Int? и других nullable-примитивов === сравнивает boxed-объекты — результат зависит от JVM-кэша (-128..127 для Integer).
  • Если не переопределить equals() в обычном классе, == работает как === — это частая ошибка при сравнении объектов.
  • data class учитывает только свойства из primary constructor — свойства в теле класса игнорируются в equals/hashCode.
  • При использовании в Set или Map нарушение контракта equals/hashCode приводит к непредсказуемому поведению.
  • Kotlin/JS: === транслируется в === JavaScript, где семантика отличается от JVM.
  • compareBy и Comparator используют compareTo, а не equals — важно не путать равенство и порядок.

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

  • Объяснять «== и ===» только как синтаксис и не описывать поведение runtime/compiler.
  • Игнорировать важный риск: Сравнение доменных объектов через === почти всегда ломает бизнес-логику, если нужен value comparison.
  • Давать пример без edge case: отмены, null, recomposition, platform boundary или ошибки.

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

  • Формулирует суть темы «== и ===» своими словами и связывает ее с кодом.
  • Называет механизм: Для nullable значений == безопасно раскладывается в equals с null-check, поэтому выражение не падает на null.
  • Видит production-последствие: Сравнение доменных объектов через === почти всегда ломает бизнес-логику, если нужен value comparison.

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

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

Источники

  • https://kotlinlang.org/docs/equality.html
←Предыдущий вопросВ чём разница между `StateFlow` и `SharedFlow`?Следующий вопрос→Что такое выражение `when` и чем оно отличается от `switch` в Java?

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

Kotlinkotlin-languagestructural-referential-equality-reasoning

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

Kotlin вакансии
  • Software Engineer II
  • Senior Software Engineer – Web & Desktop Applications
  • Senior Android Developer - Logistics & Digital Services (f/m/x)
  • Senior Android Developer with Kotlin Multiplatform (f/m/x)
  • Engineering Lead - Send for Partners

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

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