P
prepair.app
Пройти интервью →
EnglishУкраїнськаРусский
💎

Senior Ruby on RailsВопросы на собеседовании Ruby on Rails

Senior · 5+ лет опыта

Собеседование по Ruby идёт на двух уровнях: сам язык — блоки, модули, цепочка поиска метода — и Rails, где большинство вопросов на самом деле про ActiveRecord и базу под ним. Ниже вопросы, которые задают чаще всего, каждый с эталонным ответом. Senior: архитектуру, трейд-оффы, менторство и принятие решений.

Темы для подготовки

Ядро Ruby и блоки
ООП, модули и миксины
ActiveRecord и связи
Rails MVC, роутинг, контроллеры
N+1 и производительность
RSpec, FactoryBot, Rubocop

5 вопросов уровня Senior с ответами

1

Как выполнить миграцию на большой таблице без простоя?

Ответ

Исходить из того, что таблица заблокирована на всё время выполнения оператора, и строить изменение так, чтобы этого не случилось. Колонки добавляют nullable и без дефолта, бэкфилл гонят пачками вне миграции, индексы создают конкурентно и только потом вешают ограничение. Переименование и удаление опаснее всего, потому что во время выката ещё работает старый код: их делают в два релиза с двойной записью между ними.

2

Как разбирать разросшийся монолит на Rails?

Ответ

Границы рисуют до того, как что-то извлекать, — обычно по частям домена, которые меняются вместе. Сначала их держат внутри той же кодовой базы, модулями или движками и без обращений в чужие таблицы: именно там почти бесплатно выясняется, что граница проведена неверно. Извлечение сервиса — последний шаг, а не первый, и оправдан он только когда этого реально требует команда или нагрузка.

3

Когда метапрограммирование оправдано и чем оно платит?

Ответ

Оно окупается в небольшой библиотеке, где убирает много повторов: define_method по списку атрибутов — нормально. Платит в тот момент, когда человек грепает имя метода и не находит ничего, или когда опечатка превращается в тихий nil, потому что её проглотил method_missing. Если определили method_missing, определяйте рядом respond_to_missing?, иначе объект врёт о том, что умеет.

4

Как решать, что кэшировать?

Ответ

Кэшировать то, что дорого и стабильно, и только после того, как запрос уже настолько хорош, насколько будет: кэш не лечит N+1, он прячет его до первого промаха. Инвалидацию продумывают до кэширования — ключ с updated_at протухает сам, а ручная чистка это то, что забудут. Закэшированные неверные данные хуже медленной страницы.

5

Как подступаться к мажорному апгрейду Rails на живом продукте?

Ответ

Сначала привести тесты в честное состояние, потому что апгрейд безопасен ровно настолько, насколько они способны о нём рассказать. Дальше идти по одной минорной версии, разбирать предупреждения об устаревании до того, как они станут ошибками, и держать приложение работающим на старой и новой версии в одной ветке, пока фреймворк это позволяет. Недооценивают обычно гемы: блокирует чаще заброшенная зависимость, а не сам Rails.

🦎

Прочитать ответы недостаточно

На собеседовании ты говоришь вслух под давлением. Кем задаст эти же вопросы, оценит каждый ответ и покажет, что именно подтянуть.

Пройти интервью Senior Ruby on Rails →
Бесплатно · 3 интервью в месяц

Другие уровни — Ruby on Rails

Junior Ruby on RailsMiddle Ruby on RailsВсе вопросы Ruby on Rails

Другие специализации

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🦫Senior Go Backend🟢Senior Node.js Backend🔷Senior C++🟨Senior JavaScript⚛️Senior React Frontend