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