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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python8 728
  • Облачные технологии6 606
  • QA вакансии2 165
  • Android1 317
  • Инженер данных878
  • Продакт-менеджер314

Разработка

  • iOS1 229
  • Backend вакансии1 210
  • AI вакансии545
  • Fullstack вакансии500
  • Frontend вакансии422
  • Mobile вакансии28

По стеку

  • Go5 192
  • Java3 112
  • Kotlin1 085
  • Node.js992
  • Rust846
  • .NET660
  • PHP319
  • C++266
  • C#208

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

  • Kubernetes3 904
  • Linux-инфраструктура2 843
  • DevOps вакансии2 684
  • Terraform / IaC2 162
  • Мониторинг и Observability1 062
  • CI/CD921
  • SRE303
  • Кибербезопасность31

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

  • Аналитик данных537
  • Data Scientist445
  • Бизнес-аналитик402
  • Системный аналитик68

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

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

По регионам

  • Вакансии в США26 186
  • Вакансии в Европе10 369
  • Работа в России3 628
  • Вакансии в Канаде2 306

По формату

  • Удалённые вакансии43 484
  • Релокация в США26 186
  • Гибридная работа5 597
  • Офисная работа4 383

По уровню

  • Senior вакансии22 724
  • Middle вакансии11 726
  • Junior вакансии3 874

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

Все компании
  • Rakuten189 вакансий
  • Wise186 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify37 вакансий
  • Infobip28 вакансий
  • Adyen26 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

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

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

Представьте, сервис на Ruby стал медленнее или нестабильнее после релиза. Какие language/runtime-specific причины вы проверите?

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

Проверяю GC pressure (GC.stat, memory_profiler), утечки через ObjectSpace, thread contention при GIL, отсутствие eager_load в продакшн, сегфолты от обновлённых C-extensions и профилирую через stackprof или rbspy.

1. GC и память

Первое подозрение — утечка памяти или избыточное давление на GC. Ruby 3.x использует несколько алгоритмов: mark-and-sweep + incremental + compaction (с 3.1 включён по умолчанию). Симптом — постепенный рост RSS без плато, частые GC-паузы, high latency с пиками.

# Включить GC.stat в middleware/endpoint
GC.stat
# Ключевые поля:
# :heap_live_slots   — живые объекты
# :total_allocated_objects — всего создано
# :major_gc_count / :minor_gc_count
# :time — ms потраченных в GC (Ruby 3.1+)

Инструменты: gem memory_profiler, derailed_benchmarks (для Rails), stackprof с wall-clock профилированием.

Диагностика деградации Ruby-сервиса после релиза

Медленность или нестабильность после деплоя — сигнал для систематической диагностики. Ruby/MRI добавляет специфические причины поверх общих (DB slow queries, network latency).

2. ObjectSpace и retained objects

require 'objspace'
ObjectSpace.memsize_of_all  # байт всех живых объектов
ObjectSpace.each_object(String).count  # количество строк

# В тесте: найти что держит память
require 'memory_profiler'
report = MemoryProfiler.report do
  # ваш код
end
report.pretty_print

3. GIL и thread contention

MRI имеет GIL (Global Interpreter Lock) — только один поток выполняет Ruby-код одновременно. Если после релиза добавили многопоточность (Puma workers vs threads), высокий thread count при CPU-bound задачах только увеличит contention. Puma рекомендует: threads 5, 5 для IO-bound, меньше для CPU.

# Посмотреть текущие настройки Puma
bundle exec puma --help | grep threads
# Мониторинг через Puma control app
curl http://localhost:9293/stats

4. Frozen string literals и аллокации строк

Каждый "string" без frozen_string_literal: true — новый объект в heap. В релизе, где появился новый горячий путь с интенсивным string-building, это может дать заметный регресс. Проверка: ruby --enable-frozen-string-literal как эксперимент.

5. Require и загрузка кода

Если сервис использует code reloading (Zeitwerk в Rails development или неправильно настроенный продакшн), require на каждый запрос убьёт производительность. В Rails: config.eager_load = true в production обязателен.

6. C-extensions и native gems

После обновления gem с C-extension (например, nokogiri, msgpack, bcrypt) возможны memory leak или segfault из нативного кода. Симптом — случайные падения воркеров без Ruby backtrace. Проверить через rbtrace или системные crash-логи.

7. Инструменты профилирования

# stackprof — sampling profiler
gem install stackprof
# В коде:
StackProf.run(mode: :wall, out: 'tmp/stackprof.dump') do
  # heavy operation
end
stackprof tmp/stackprof.dump --text --limit 20

# rbspy — attach к живому процессу без изменения кода
rbspy record --pid $(pgrep -f puma) --duration 30

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

  • GC compaction (Ruby 3.1+) может вызвать нестабильность с C-extensions, не поддерживающими compact — проверить через GC.verify_compaction_references.
  • ObjectSpace сам по себе замедляет работу — включать только в профилировочном окружении, не в продакшн.
  • Puma preload_app! + fork сохраняет соединения к БД из мастер-процесса — нужно явно переоткрывать в after_fork.
  • YJIT иногда даёт регресс на коротких скриптах или при частом code invalidation (monkey patching в runtime).
  • Fiber Scheduler требует, чтобы все IO-операции шли через scheduler-aware gems; один блокирующий вызов ломает всю async-цепочку.
  • Символы до Ruby 2.2 не собирались GC — динамически создаваемые символы (to_sym) в старых версиях вызывали утечку.
  • Rack middleware с state (не thread-safe) при многопоточном Puma даёт race condition — симптом нестабильности без явных ошибок.

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

  • Сразу обвинять Ruby, не проверив соседние слои системы
  • Чинить симптом без минимального воспроизведения и evidence
  • Не учитывать версии, конфигурацию, окружение и recent changes

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

  • Умеет локализовать проблему вокруг Ruby
  • Двигается от симптома к гипотезам и проверкам
  • Отличает баг инструмента от ошибки использования или окружения

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

Проверить себя по теме Ruby →
←Предыдущий вопросКак понять, что команда использует Ruby идиоматично, а не переносит привычки из другого языка?Следующий вопрос→В чём разница между `freeze` и иммутабельными объектами в Ruby?

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

RubyDebuggingtechnical-communicationtechnology-selectiontrade-off-analysis

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

Ruby вакансии
  • Senior Software Engineer (P4 DAM)
  • Cloud Engineer
  • DevOps Engineer - Recommendation Department, AI & Data Division (AIDD)
  • Security Detection & Automation Engineer - Product Security Section, Cyber Security Defense Department (CSDD)
  • Sales Engineer

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

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