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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python14 550
  • Облачные технологии10 965
  • QA вакансии3 255
  • Android1 702
  • Инженер данных1 270
  • Продакт-менеджер586

Разработка

  • Backend вакансии1 657
  • iOS1 575
  • AI вакансии798
  • Fullstack вакансии672
  • Frontend вакансии578
  • Mobile вакансии30

По стеку

  • Go7 978
  • Java5 162
  • Node.js1 622
  • Kotlin1 384
  • Rust1 326
  • .NET1 258
  • PHP538
  • C++386
  • C#356

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

  • Kubernetes6 272
  • Linux-инфраструктура4 763
  • DevOps вакансии4 488
  • Terraform / IaC3 459
  • Мониторинг и Observability1 587
  • CI/CD1 482
  • SRE458
  • Кибербезопасность127

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

  • Аналитик данных683
  • Бизнес-аналитик638
  • Data Scientist622
  • Системный аналитик92

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

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

По регионам

  • Вакансии в США32 905
  • Вакансии в Европе14 637
  • Работа в России3 880
  • Вакансии в Канаде3 170

По формату

  • Удалённые вакансии51 011
  • Релокация в США32 905
  • Гибридная работа9 286
  • Офисная работа6 546

По уровню

  • Senior вакансии31 197
  • Middle вакансии14 037
  • Junior вакансии5 059

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

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • 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

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

Ruby вакансии
  • Senior Software Engineer
  • Senior DevOps Engineer
  • Senior Software Engineer (P4 DAM)
  • Cloud Engineer
  • DevOps Engineer - Recommendation Department, AI & Data Division (AIDD)

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

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