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

+661новая вакансия за сутки·58 731вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python11 079
  • Облачные технологии8 824
  • QA вакансии2 977
  • Android1 395
  • Инженер данных1 032
  • Продакт-менеджер351

Разработка

  • Backend вакансии1 342
  • iOS1 307
  • AI вакансии660
  • Fullstack вакансии524
  • Frontend вакансии465
  • Mobile вакансии28

По стеку

  • Go6 622
  • Java3 670
  • Kotlin1 199
  • Node.js1 190
  • Rust1 181
  • .NET780
  • PHP329
  • C++301
  • C#211

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

  • Kubernetes5 251
  • Linux-инфраструктура4 138
  • DevOps вакансии3 024
  • Terraform / IaC2 834
  • Мониторинг и Observability1 406
  • CI/CD917
  • SRE389
  • Кибербезопасность40

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

  • Аналитик данных586
  • Бизнес-аналитик487
  • Data Scientist458
  • Системный аналитик75

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

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

По регионам

  • Вакансии в США31 201
  • Вакансии в Европе11 507
  • Работа в России3 630
  • Вакансии в Канаде2 546

По формату

  • Удалённые вакансии47 761
  • Релокация в США31 201
  • Гибридная работа7 699
  • Офисная работа6 071

По уровню

  • Senior вакансии27 027
  • Middle вакансии12 284
  • Junior вакансии4 495

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

Все компании
  • Wise196 вакансий
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify38 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

В чём разница между nil, false и другими ложными значениями (falsy values) в Ruby?

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

В Ruby falsy только nil и false; 0, "", [] — truthy. nil означает отсутствие значения (NilClass), false — явный булев отказ (FalseClass); nil == false возвращает false.

nil vs false: в чём разница

nil — это объект класса NilClass, означающий отсутствие значения. false — объект класса FalseClass, явный булев отрицательный результат. В условном выражении оба ведут себя одинаково, но семантически различны.

puts nil.class    # NilClass
puts false.class  # FalseClass

# Оба falsy:
puts "nil is falsy"   if !nil    # выводит
puts "false is falsy" if !false  # выводит

# 0, "", [] — truthy в Ruby!
puts "0 is truthy"  if 0    # выводит
puts "[] is truthy" if []   # выводит
puts "'' is truthy" if ""   # выводит

Falsy-значения в Ruby: только nil и false

В Ruby ложными (falsy) являются ровно два значения: nil и false. Всё остальное — истинно (truthy), включая 0, пустую строку "", пустой массив [] и пустой хэш {}. Это принципиально отличает Ruby от JavaScript, Python и многих других языков.

Проверка на nil и на false

Для явного различения используйте методы nil? и операторы ==.

value = nil

value.nil?       # true  — только для nil
value == false   # false — nil не равен false
value == nil     # true

# Безопасный оператор &. — работает только с nil, не с false:
user = nil
user&.name       # nil, без NoMethodError

result = false
result&.to_s     # false — оператор &. пропускает false!
# false не nil, поэтому &. вызовет метод и получим NoMethodError
# для false.to_s это не проблема, но для несуществующего метода будет ошибка

Оператор || и его тонкости

Оператор || и метод ||= реагируют на оба falsy-значения. Это частая ловушка: если переменная может содержать false как валидное значение, ||= перезапишет его.

# Безопасно, если nil — единственное «нет значения»:
@cache ||= compute_value

# Опасно, если false — валидный результат:
enabled = false
enabled ||= true   # Теперь enabled = true! Это баг.

# Правильно:
enabled = false
enabled = compute_enabled if enabled.nil?

Метод fetch и значения по умолчанию

hash = { debug: false, verbose: nil }

# hash[:debug] || true — вернёт true, хотя ключ существует!
hash.fetch(:debug, true)    # false — правильно
hash.fetch(:missing, true)  # true  — ключа нет

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

  • 0, "", [] — truthy: в отличие от Python/JS, пустые коллекции и ноль не ложны. Условие if array.length всегда истинно — используйте array.empty?.
  • ||= затирает false: flag ||= default перезапишет false. Если false — валидное значение, используйте defined?(flag) ? flag : default или явную проверку nil?.
  • &. не защищает от false: safe navigation operator пропускает только nil. На false он попытается вызвать метод и получит NoMethodError, если метод не существует у FalseClass.
  • nil != false: nil == false возвращает false. Не путайте семантику «нет значения» (nil) и «явное отрицание» (false).
  • Hash#[] vs Hash#fetch: hash[:key] вернёт nil для отсутствующего ключа И для ключа со значением nil. fetch различает эти случаи.
  • Array#compact удаляет только nil: [nil, false, 0].compact вернёт [false, 0] — false не удаляется.
  • respond_to? на nil: nil.respond_to?(:to_s) — true, у NilClass есть методы. Не считайте nil «пустым объектом без методов».

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

  • Сводить nil false falsy к названию метода без lifecycle и failure path.
  • Игнорировать модель runtime: объектная динамическая модель Ruby, где почти всё является объектом, а методы ищутся через ancestor chain.
  • Не отделять validation, authorization, transaction boundary и business logic.
  • Менять похожие API местами без учёта семантики ошибок и ownership.

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

  • Объясняет nil false falsy через конкретную точку lifecycle в Ruby.
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.

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

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

Источники

  • https://docs.ruby-lang.org/en/master/syntax/control_expressions_rdoc.html
  • https://docs.ruby-lang.org/en/master/
←Предыдущий вопросВ чём разница между symbols и strings в Ruby и когда использовать каждый?Следующий вопрос→В чём разница между `proc` и `lambda` с точки зрения поведения return и арности (arity)?

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

RubyBackend-Engineeringruby-ecosystem

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

  • В чём разница между symbols и strings в Ruby и когда использовать каждый?
  • В чём разница между proc и lambda с точки зрения поведения return и арности (arity)?
  • Что такое модули Ruby и чем они отличаются от классов?
  • Что такое Ruby и каковы его основные характеристики как языка?