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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python16 842
  • Облачные технологии13 724
  • QA вакансии3 439
  • Backend вакансии2 083
  • Инженер данных1 763
  • Продакт-менеджер1 196

Разработка

  • Android1 842
  • iOS1 687
  • Fullstack вакансии958
  • AI вакансии949
  • Frontend вакансии735
  • Mobile вакансии44

По стеку

  • Go8 619
  • Java6 377
  • Node.js1 968
  • .NET1 639
  • Kotlin1 597
  • Rust1 444
  • PHP670
  • C#650
  • C++538

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

  • Kubernetes7 591
  • DevOps вакансии5 863
  • Linux-инфраструктура5 413
  • Terraform / IaC4 162
  • CI/CD2 997
  • Мониторинг и Observability1 752
  • SRE558
  • Кибербезопасность424

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

  • Data Scientist1 087
  • Бизнес-аналитик910
  • Аналитик данных849
  • Системный аналитик148

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

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

По регионам

  • Вакансии в США45 355
  • Вакансии в Европе22 646
  • Вакансии в Канаде4 483
  • Работа в России3 902

По формату

  • Удалённые вакансии75 369
  • Релокация в США45 353
  • Гибридная работа12 002
  • Офисная работа7 033

По уровню

  • Senior вакансии42 326
  • Middle вакансии20 996
  • Junior вакансии6 757

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

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

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

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

Какие ошибки делают разработчики, переходящие на Ruby с другого языка или стека?

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

Переходящие на Ruby чаще всего переносят паттерны Java/PHP (процедурный стиль, ранние return-guards, статическую типизацию), недооценивают GVL и пишут Rails-код без понимания, когда выполняются callbacks.

1. Перенос стиля из Java или PHP

Разработчик с Java-бэкграундом пишет:

# Java-style Ruby (плохо):
class UserService
  def self.create_user(name, email)
    user = User.new
    user.name = name
    user.email = email
    if user.valid?
      user.save
      return user
    else
      return nil
    end
  end
end
# Идиоматичный Ruby:
class UserService
  def self.create_user(attrs)
    User.create(attrs)  # ActiveRecord уже делает valid? + save
  end
end

# Или с явной обработкой ошибок:
User.create!(name: name, email: email)  # бросает если invalid

2. Непонимание, когда выполняются Rails-callbacks

Часто переходящие думают, что before_save выполняется при любом обращении к объекту:

class Order < ApplicationRecord
  before_save :calculate_total

  private

  def calculate_total
    self.total = line_items.sum(&:price)
  end
end

# Проблема: update_column обходит callbacks!
order.update_column(:status, 'shipped')  # calculate_total НЕ вызовется
order.update(status: 'shipped')          # calculate_total вызовется

3. Игнорирование GVL при работе с потоками

# Ошибка: ожидание параллельного CPU-bound выполнения
results = data_chunks.map do |chunk|
  Thread.new { expensive_cpu_computation(chunk) }
end.map(&:value)
# Потоки не ускоряют CPU-bound задачи в MRI!

# Правильно для CPU-bound:
results = data_chunks.map do |chunk|
  fork { expensive_cpu_computation(chunk) }
end
# или используйте Ractor (Ruby 3+)

4. Monkey-patching стандартных классов в неправильном месте

# Опасно: добавление метода к String глобально
class String
  def to_slug
    downcase.gsub(/\s+/, '-')
  end
end

# Лучше: refinements — ограниченный scope
module SlugRefinement
  refine String do
    def to_slug
      downcase.gsub(/\s+/, '-')
    end
  end
end

class Article
  using SlugRefinement  # активно только в этом классе
end

5. Использование символов и строк непоследовательно

# Часто от PHP/Python — перемешивание:
params = { 'name' => 'Alice', 'role' => 'admin' }

# В Rails params — HashWithIndifferentAccess, в чистом Ruby — нет:
params[:name]    # => nil (если обычный Hash со строками-ключами)
params['name']   # => 'Alice'

# Договоритесь о стандарте:
config = { host: 'localhost', port: 5432 }  # символы для внутренних Hash

6. Игнорирование идиом Enumerable

# Императивно (из PHP/Java):
result = []
users.each do |u|
  result << u.name if u.active?
end

# Идиоматично:
result = users.select(&:active?).map(&:name)

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

  • rescue Exception вместо rescue StandardError — перехватывает SystemExit и Interrupt. Типичная ошибка из PHP/Python-привычки писать catch(Exception).
  • Неиспользование Bundler — разработчики из Python иногда ставят gems глобально. Всегда работайте через Gemfile + bundle exec.
  • attr_accessor для всего — Java-разработчики открывают все поля через accessor. В Ruby инкапсуляция через attr_reader + приватные setters.
  • Забытый frozen_string_literal — в production Rails-приложениях добавьте magic comment в Gemfile или через initializer для снижения аллокаций строк.
  • Отсутствие тестов на поведение callbacks — callbacks тестируйте интеграционно, а не только unit; иначе пропускаете edge cases с update_column, touch, import.

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

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

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

  • Перечислять ошибки без объяснения причин
  • Не отличать beginner mistakes от production failure modes
  • Не предлагать процесс, который предотвращает повторение ошибок

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

  • Знает типичные ошибки при работе с Ruby
  • Понимает причины ошибок
  • Предлагает практики prevention и early detection

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

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

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

Rubytechnical-communicationtechnology-selectiontrade-off-analysis

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

Ruby вакансии
  • Intermediate Backend Engineer, Authorization
  • Lead System Engineer
  • Backend Software Engineer
  • Senior Software Engineer, Developer Enablement
  • Senior .NET Developer