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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 108
  • Облачные технологии14 081
  • QA вакансии3 459
  • Backend вакансии2 114
  • Инженер данных1 804
  • Продакт-менеджер1 264

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии986
  • AI вакансии955
  • Frontend вакансии745
  • Mobile вакансии44

По стеку

  • Go8 652
  • Java6 545
  • Node.js2 019
  • .NET1 721
  • Kotlin1 623
  • Rust1 453
  • C#710
  • PHP683
  • C++571

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

  • Kubernetes7 766
  • DevOps вакансии6 060
  • Linux-инфраструктура5 491
  • Terraform / IaC4 262
  • CI/CD3 241
  • Мониторинг и Observability1 787
  • SRE567
  • Кибербезопасность453

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

  • Data Scientist1 140
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

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

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

По регионам

  • Вакансии в США44 321
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 479
  • Работа в России3 913

По формату

  • Удалённые вакансии75 064
  • Релокация в США44 314
  • Гибридная работа12 393
  • Офисная работа7 089

По уровню

  • Senior вакансии42 691
  • Middle вакансии20 905
  • Junior вакансии6 727

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

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

Вакансии из 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 вакансии
  • Engineering Manager, Developer Infrastructure
  • Senior Engineering Manager, Co-Intelligent Coaching
  • Intermediate Fullstack Engineer, Subscription Lifecycle
  • Full-Stack Software Engineer, Communication Tools
  • Intermediate Backend Engineer, Authorization

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

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