Топ-53 запитання та відповіді на інтерв’ю Ruby on Rails (2025)

Ось питання та відповіді на співбесіді з Ruby on Rails для новачків, а також для досвідчених кандидатів у розробники Ruby, щоб отримати роботу своєї мрії.

1) Поясніть, що таке Ruby on Rails?

  • Рубін: Це об’єктно-орієнтована мова програмування, натхненна PERL, Smalltalk, Eiffel, Ada, Basic і Lisp.
  • Рейки: Це структура, яка використовується для створення веб-додатків

2) Поясніть, що таке бібліотеки класів у Ruby?

Бібліотеки класів у Ruby складаються з різноманітних доменів, таких як типи даних, програмування потоків, різні домени тощо.

Безкоштовне завантаження PDF-файлу: питання та відповіді на інтерв’ю Ruby on Rails


3) Згадайте, що таке угода про імена в Rails?

  • Змінні: Для оголошення змінних усі літери малі, а слова розділяються підкресленням
  • Клас і модуль: Модулі та класи використовують MixedCase і не мають підкреслення; кожне слово починається з великої літери
  • Таблиця бази даних: Назва таблиці бази даних має містити малі літери та підкреслення між словами, а всі назви таблиць мають бути у формі множини, наприклад invoice_items
  • Model: Він представлений безперервним MixedCase і завжди має однину з назвою таблиці
  • Контролер: Імена класів контролерів представлені у формі множини, так що OrdersController буде контролером для таблиці замовлень.

4) Поясніть, що таке «Yield» у Ruby on Rails?

Метод Ruby, який отримує блок коду, викликає його, викликаючи його з «Yield».


5) Поясніть, що таке ORM (Object-Relationship-Model) у Rails?

ORM або Object Relationship Model у Rails вказують на те, що ваші класи зіставлені з таблицею в базі даних, а об’єкти зіставлені безпосередньо з рядками в таблиці.


6) Згадайте, яка різниця між false і nil у Ruby?

У Ruby false є об’єктом FalseClass для представлення логічного значення, тоді як Nil є об’єктом NilClass, який вказує на відсутність значення. Він має object_id 4.

Запитання для співбесіди Ruby on Rails
Запитання для співбесіди Ruby on Rails


7) Згадайте, які позитивні сторони Rails?

Rails надає багато функцій, таких як

  • Метапрограмування: Rails використовує генерацію коду, але для важкої роботи покладається на метапрограмування. Ruby вважається однією з найкращих мов для мета-програмування.
  • Активний запис: Він зберігає об’єкт до бази даних через Active Record Framework. Версія Active Record для Rails визначає стовпець у схемі та автоматично прив’язує його до об’єктів домену за допомогою метапрограмування.
  • Риштування: Rails має можливість автоматично створювати риштування або тимчасовий код
  • Конвенція щодо конфігурації: На відміну від інших фреймворків розробки, Rails не потребує великої конфігурації, якщо ви уважно дотримуєтеся правил іменування
  • Три середовища: Rails поставляється з трьома типовими тестами середовища, розробкою та виробництвом.
  • Вбудоване тестування: Він підтримує код під назвою harness і фікстури, які створюють і виконують тестові випадки.

8) Поясніть, яка роль підкаталогів app/controllers і app/helpers?

  • Програма/контролери: веб-запит від користувача обробляється контролером. У підкаталозі контролера Rails шукає класи контролерів
  • App/helpers: підкаталог helper містить будь-які допоміжні класи, які використовуються для допомоги класам перегляду, моделі та контролера.

9) Згадайте, яка різниця між String і Symbol?

Вони обидва діють однаково, тільки вони відрізняються своєю поведінкою, яка протилежна одна одній. Різниця полягає в object_id, пам’яті та налаштуваннях процесу, коли вони використовуються разом. Символ належить до категорії незмінних об’єктів, тоді як рядки вважаються змінними об’єктами.


10) Поясніть, чим Symbol відрізняється від змінних?

Символ відрізняється від змінних наступними аспектами

  • Це більше схоже на рядок, ніж на змінну
  • У Ruby рядок змінний, але символ незмінний
  • Необхідно створити лише одну копію символу
  • Символи часто використовуються як відповідники для переліків у Ruby

11) Поясніть, що таке Rails Active Record у Ruby on Rails?

Активний запис Rails — це рівень об’єктного/реляційного відображення (ORM), який постачається з Rails. Він дотримується стандартної моделі ORM як

  • Таблиця карти до класів
  • Рядки відображаються на об’єкти
  • Стовпці відображаються в атрибутах об’єктів

12) Поясніть, як Rails реалізує Ajax?

Веб-сторінка на базі Ajax отримує із сервера нову або змінену веб-сторінку, на відміну від інших веб-сторінок, де вам потрібно оновити сторінку, щоб отримати останню інформацію.

Rails запускає операцію Ajax наступними способами

  • Деякі тригерні пожежі: Тригером може бути користувач, який натискає посилання чи кнопку, користувачі вносять зміни в дані в полі або у формі
  • Веб-клієнт викликає сервер: Метод Java-script, XMLHttpRequest, надсилає дані, пов’язані з тригером, до обробника дій на сервері. Дані можуть бути ідентифікатором прапорця, цілою формою або текстом у полі введення
  • Сервер обробляє: Обробник дій на стороні сервера щось робить із даними та отримує HTML фрагмент до веб-клієнта
  • Клієнт отримує відповідь: JavaScript на стороні клієнта, який Rails генерує автоматично, отримує фрагмент HTML і використовує його для оновлення певної частини поточного

13) Згадайте, як ви можете створити контролер для предмета?

Щоб створити контролер для предмета, ви можете використати таку команду

C:\ruby\library> сценарій ruby/згенерувати тему контролера


14) Згадайте, що таке Rails Migration?

Rails Migration дозволяє Ruby вносити зміни в схему бази даних, що дозволяє використовувати систему контролю версій, щоб синхронізувати речі з фактичним кодом.


15) Перелічіть, що може зробити Rails Migration?

Rails Migration може виконувати такі дії

  • Створити таблицю
  • Скинути стіл
  • Перейменувати таблицю
  • Додати стовпець
  • Перейменувати стовпець
  • Змінити колонку
  • Видалити стовпець і так далі

16) Згадайте, що таке команда для створення міграції?

Для створення команди міграції включається

C:\ruby\application>ruby script/generate migration table_name


17) Поясніть, коли використовується метод self.up і self.down?

Під час переходу на нову версію self.up метод використовується поки self.down Метод використовується для відкату моїх змін, якщо це необхідно.


18) Згадайте, яка роль Rails Controller?

Контролер Rails є логічним центром програми. Це полегшує взаємодію між користувачами, видами та моделлю. Він також виконує інші види діяльності

  • Він здатний направляти зовнішні запити на внутрішні дії. Він надзвичайно добре обробляє URL
  • Він регулює допоміжні модулі, які розширюють можливості шаблонів перегляду без збільшення їхнього коду
  • Він регулює сесії; що створює у користувачів враження постійної взаємодії з нашими програмами

19) Згадайте, яка різниця між «HashWithIndifferent» Active Support і «Hash» Ruby?

Команда Мішанина клас у бібліотеці ядра Ruby повертає значення за допомогою стандарту “= =” порівняння по ключ. Це означає, що значення, збережене для a символ ключ не можна отримати за допомогою еквівалентного рядка. У той час як HashWithIndifferentAccess розглядає ключі Symbol і String як еквівалентні.


20) Поясніть, що таке Cross-Site Request Forgery (CSRF) і як Rails захищено від нього?

CSRF — це форма атаки, коли хакер надсилає запит сторінки від вашого імені на інший веб-сайт, завдаючи шкоди або розкриваючи ваші конфіденційні дані. Для захисту від атак CSRF необхідно додати “захистити_від_підробки” to your ApplicationController. Це змусить Rails вимагати маркер CSRF для обробки запиту. Маркер CSRF надається як приховане поле в кожній формі, створеній за допомогою конструкторів форм Rails.


21) Поясніть, що таке Mixin у Rails?

Mixin у Ruby пропонує альтернативу багаторазовому успадкуванню, використовуючи модулі mixin, які можна імпортувати в інший клас.


22) Поясніть, як ви визначаєте змінну екземпляра, глобальну змінну та змінну класу в Ruby?

  • Змінна екземпляра Ruby починається з — @
  • Змінні класу Ruby починаються з — @@
  • Глобальні змінні Ruby починаються з — $

23) Поясніть, як можна запустити додаток Rails без створення баз даних?

Ви можете виконати свою програму, розкоментувавши рядок у environment.rb

path=> rootpath conf/environment.rb

config.frameworks = [ action_web_service, :action_mailer, :active_record]

24) Згадайте, яка різниця між спостерігачами та зворотними викликами в Ruby on Rails?

  • Спостерігачі Rails: Спостерігачі — це те ж саме, що й зворотний виклик, але використовується, коли метод безпосередньо не пов’язаний із життєвим циклом об’єкта. Крім того, спостерігач живе довше, і його можна будь-коли від'єднати або прикріпити. Наприклад, відображення значень із моделі в інтерфейсі користувача та оновлення моделі за введенням користувача.
  • Зворотний виклик Rails: Зворотні виклики – це методи, які можна викликати в певні моменти життєвого циклу об’єкта, наприклад, їх можна викликати, коли об’єкт перевіряється, створюється, оновлюється, видаляється. Зворотний виклик є короткочасним. Наприклад, запуск потоку та надання зворотного виклику, який викликається, коли потік завершується

25) Поясніть, що таке rake в Rails?

Граблі - це Ruby Make; це утиліта Ruby, яка замінює утиліту Unix 'make' і використовує 'Rakefile' і '.rake-файли' для створення списку завдань. У Rails Rake використовується для звичайних завдань адміністрування, таких як міграція бази даних за допомогою сценаріїв, завантаження схеми в базу даних тощо.


26) Поясніть, як ви можете вивести список усіх маршрутів для програми?

Щоб вивести список усіх маршрутів для програми, ви можете написати рейк-маршрути в терміналі.


27) Поясніть, що таке sweeper у Rails?

Прибиральники відповідають за закінчення терміну дії або припинення кешу під час зміни об’єкта моделі.


28) Згадайте журнал, який потрібно переглянути, щоб повідомити про помилки в Ruby Rails?

Rails повідомлятиме про помилки з Apache у log/Apache.log і помилки з коду Ruby у log/development.log.


29) Поясніть, у чому різниця між динамічним і статичним риштуванням?

Динамічні риштування Статичні риштування
  • Він автоматично створює весь вміст і інтерфейс користувача під час виконання
  • Це дозволяє генерувати нові, видаляти, редагувати методи для використання в програмі
  • Для синхронізації не потрібна база даних
  • Це вимагає ручного введення команди, щоб створити дані з їхніми полями
  • Для цього не потрібно жодного такого покоління
  • Для цього потрібно перенести базу даних

30) Згадайте, яка функція збирання сміття в Ruby on Rails?

Функції збирання сміття в Ruby on Rails включають

  • Це дозволяє видаляти значення вказівників, які залишаються після завершення виконання програми
  • Це звільняє програміста від відстеження об’єкта, який динамічно створюється під час виконання
  • Це дає перевагу видалення недоступних об’єктів із пам’яті та дозволяє іншим процесам використовувати пам’ять

31) Згадайте, яка різниця між перенаправленням і рендерингом у Ruby on Rails?

  • Перенаправлення – це метод, який використовується для видачі повідомлення про помилку, якщо сторінка не видається або не знайдена браузером. Він повідомляє браузеру обробити та надіслати новий запит.
  • Відтворення — це метод, який використовується для створення вмісту. Візуалізація працює лише тоді, коли контролер правильно налаштовано зі змінними, які потрібно відобразити.

32) Згадайте, яка мета RJ в Rails?

RJs — це шаблон, який створює JavaScript, який запускається в блоці eval браузером у відповідь на запит AJAX. Він іноді використовується для визначення JavaScript, прототипу та помічників, наданих Rails.


33) Поясніть, що таке поліморфна асоціація в Ruby on Rails?

Поліморфна асоціація дозволяє з’єднувати об’єкт ActiveRecord із кількома об’єктами ActiveRecord. Прекрасним прикладом поліморфної асоціації є соціальний сайт, де користувачі можуть коментувати будь-де, будь то відео, фотографії, посилання, оновлення статусу тощо. Це було б неможливим, якщо вам потрібно створити окремий коментар, наприклад photos_comments, videos_comment тощо. .


34) Згадайте, які обмеження Ruby on Rails?

Ruby on Rails розроблено для створення веб-програми CRUD за допомогою MVC. Це може зробити Rails не корисним для інших програмістів. Деякі функції, які Rails не підтримує, включають

  • Зовнішній ключ у базах даних
  • Посилання на декілька баз даних одночасно
  • Веб-сервіси Soap
  • Підключення до кількох серверів баз даних одночасно

35) Згадайте, яка різниця між викликом super() і super call?

  • супер (): Виклик super() викликає батьківський метод без будь-яких аргументів, як імовірно очікувалося. Як завжди, бути явним у своєму коді – це добре.
  • супер дзвінок: виклик super викликає батьківський метод з тими самими аргументами, що були передані дочірньому методу. Тому виникне помилка, якщо аргументи, передані дочірньому методу, не збігаються з тим, що очікує батьківський метод.

36) Поясніть про Dig, Float і Max?

  • Клас Float використовується, коли функція постійно змінюється.
  • Dig використовується щоразу, коли потрібно представити число з плаваючою точкою десятковими цифрами.
  • Max використовується, коли є величезна потреба у Float.

37) Поясніть, як ми можемо визначити регулярні вирази Ruby?

Регулярний вираз Ruby — це спеціальна послідовність символів, яка допомагає зіставляти або знаходити інші рядки. Літерал регулярного виразу — це шаблон між довільними роздільниками або косими рисками, за якими йде %r.


38) Поясніть, що таке визначений оператор?

Оператор визначення визначає, чи визначений переданий вираз чи ні. Якщо вираз визначено, він повертає рядок опису, а якщо він не визначений, повертає нульове значення.


39) Перелічіть декілька функцій Ruby?

  • Вільний формат – Ви можете почати писати з програми з будь-якого рядка та стовпця
  • З урахуванням регістру – великі та малі літери розрізняються
  • Коментарі – усе, за чим стоїть нев лапках #, до кінця рядка, у якому він з’являється, ігнорується інтерпретатором
  • Роздільники операторів – кілька операторів в одному рядку мають бути розділені крапкою з комою, але вони не обов’язкові в кінці рядка.

40) Згадайте типи змінних, доступних у Ruby Class?

Типи змінних, доступних у Ruby Class:

  • Місцеві змінні
  • Глобальні змінні
  • Змінні класу
  • Змінні екземпляра

41) Поясніть, як можна оголосити блок у Ruby?

У Ruby код у блоці завжди береться в дужки ({}). Ви можете викликати блок за допомогою «інструкції yield».


42) Поясніть, у чому різниця між інструкціями put і putc?

На відміну від оператора puts, який виводить весь рядок на екран. Оператор Putc можна використовувати для виведення одного символу за раз.


43) Поясніть, що таке бібліотека класів у Ruby?

Бібліотеки класів Ruby складаються з різноманітних доменів, таких як програмування потоків, типи даних, різні домени тощо. Ці класи надають гнучкі можливості на високому рівні абстракції, надаючи вам можливість створювати потужні сценарії Ruby, корисні для вирішення різноманітних проблем домени. Наступні домени мають відповідні бібліотеки класів:

  • Програмування графічного інтерфейсу
  • Мережеве програмування
  • CGI програмування
  • Обробка тексту

44) У Ruby пояснюється визначений оператор?

Визначений оператор повідомляє, чи визначений переданий вираз чи ні. Якщо вираз не визначено, він дає значення null, а якщо вираз визначено, повертає рядок опису.


45) Згадайте, яка різниця в області видимості для цих двох змінних: @@name і @name?

Різниця в області дії для цих двох змінних полягає в тому, що:

  • @@name є змінною класу
  • @name є змінною екземпляра

46) Згадайте, який синтаксис для Ruby collect Iterator?

Синтаксис Ruby collect Ітератор collection = collection.collect.


47) У коді Ruby часто можна помітити, що кодер використовує коротку форму використання виразу як масив.map(&:method_name) замість array.map { |element| element.method_name }. Як насправді працює цей трюк?

Коли параметр передається з «&» перед ним. Ruby викличе для нього to_proc, намагаючись зробити його придатним для використання як блок. Таким чином, символ to_Proc викличе метод із відповідним іменем для того, що йому передано. Таким чином, наш скорописний трюк спрацює.


48) Поясніть, що таке інтерполяція в Ruby?

Інтерполяція Ruby — це процес вставки рядка в літерал. Розмістивши хеш (#) у відкритих і закритих дужках {}, можна інтерполювати рядок у літерал.


49) Згадайте, яка нотація використовується для позначення змінних класу в Ruby?

У Ruby,

  • Константа має починатися з великої літери, і її не слід визначати всередині методу
  • Локальне слово має починатися зі знака підкреслення _ або малої літери
  • Глобальна змінна має починатися зі знака $. Неініціалізований глобал має значення «nil», і це повинно бути підвищення попередження. Його можна посилати будь-де в програмі.
  • Змінна класу має починатися з подвійного @@ і повинна бути спочатку ініціалізована перед використанням у визначенні методу

50) Згадайте, яка різниця між Procs і Blocks?

Різниця між процесами та блоками,

  • Блок — це лише частина синтаксису методу, тоді як proc має характеристики блоку
  • Процеси є об’єктами, а блоки – ні
  • У списку аргументів може бути щонайбільше один блок
  • Тільки блок не можна зберігати в змінній, тоді як Proc може

51) Згадайте, яка різниця між одинарними та подвійними лапками?

Рядки в одинарних лапках не обробляють escape-коди ASCII і не виконують інтерполяцію рядків.


52) Згадайте, яка різниця між gem і плагіном у Ruby?

  • Самоцвіт: Дорогоцінний камінь - це просто рубіновий код. Його інстальовано на машині та доступно для всіх додатків Ruby, які працюють на цій машині.
  • Плагін: Плагін також є рубіновим кодом, але він інсталюється в папці програми та доступний лише для конкретної програми.

53) Згадайте, яка різниця extend і include?

«Include» робить методи модуля доступними для екземпляра класу, тоді як «extend» робить ці методи доступними для самого класу.

Ці запитання для співбесіди також допоможуть вам у життєдіяльності (усному)

Поділитись

14 Коментарі

  1. Аватара Хасануззаман Сумон каже:

    Дохідність не є функцією. Це ключове слово ruby, яке використовується для виконання блоку.

    1. Аватара Террі Рей каже:

      Зокрема, yield передасть керування потоком (швидше за все Main.thread) до блоку, який або було передано явно як параметр, тобто def my_method(&my_block), або ж блок міг бути переданий неявно, наприклад

      my_class.my_method do
      # код у цьому блоці буде передано всередину методу виклику
      кінець

  2. Jorge Armando каже:

    у питанні №6, у Ruby немає «Boolean» класу, отже, немає «Boolean типу». Є лише TrueClass і FalseClass.

  3. Аватара тест каже:

    Ruby не натхненний Python, він був натхненний такими (Perl, Smalltalk, Eiffel, Ada, BASIC і Lisp)

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *