Топ-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 и не имеют подчеркивания; каждое слово начинается с заглавной буквы
  • Таблица базы данных: Имя таблицы базы данных должно состоять из строчных букв и подчеркивания между словами, а все имена таблиц должны быть в форме множественного числа, например bill_items.
  • Модель: Он представлен непрерывным MixedCase и всегда имеет единственное число с именем таблицы.
  • контроллер: Имена классов контроллеров представлены во множественном числе, так что OrdersController будет контроллером таблицы заказов.

4) Объясните, что такое «Yield» в Ruby on Rails?

Метод Ruby, который получает блок кода, вызывает его, вызывая его с «Yield».


5) Объясните, что такое ORM (модель объектно-отношений) в Rails?

ORM или модель отношений объектов в 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 поставляется с тремя стандартными средами тестирования, разработки и производства.
  • Встроенное тестирование: Он поддерживает код, называемый обвязкой, и приспособления, которые позволяют писать и выполнять тестовые примеры.

8) Объясните, какова роль подкаталогов app/controllers и app/helpers?

  • Приложение/контроллеры: веб-запрос пользователя обрабатывается контроллером. Подкаталог контроллера — это место, где Rails ищет классы контроллера.
  • App/helpers: подкаталог помощника содержит все вспомогательные классы, используемые для поддержки классов представления, модели и контроллера.

9) Укажите, в чем разница между строкой и символом?

Они оба действуют одинаково, только их поведение противоположно друг другу. Разница заключается в object_id, памяти и настройке процесса, когда они используются вместе. Символ принадлежит к категории неизменяемых объектов, тогда как строки считаются изменяемыми объектами.


10) Объясните, чем символ отличается от переменных?

Символ отличается от переменных в следующих аспектах.

  • Это больше похоже на строку, чем на переменную
  • В Ruby строка изменяема, но символ неизменяем.
  • Необходимо создать только одну копию символа.
  • Символы часто используются как соответствующие перечислениям в Ruby.

11) Объясните, что такое активная запись Rails в Ruby on Rails?

Активная запись Rails — это уровень объектно-реляционного сопоставления (ORM), поставляемый с Rails. Он следует стандартной модели ORM, как

  • Карта таблицы с классами
  • Строки сопоставляются с объектами
  • Столбцы сопоставляются с атрибутами объекта.

12) Объясните, как реализуется Rails Ajax?

Веб-страница на базе Ajax извлекает веб-страницу с сервера, которая является новой или измененной, в отличие от других веб-страниц, где вам необходимо обновить страницу, чтобы получить самую свежую информацию.

Rails запускает операцию Ajax следующими способами

  • Некоторые триггеры возгорания: Триггером может быть нажатие пользователем ссылки или кнопки, пользователи, вносящие изменения в данные в поле или в форме.
  • Веб-клиент вызывает сервер: Метод Java-скрипта 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/создать имя таблицы миграции


17) Объясните, когда используется метод self.up и self.down?

При переходе на новую версию самовывоз метод используется, пока самоубийство метод используется для отката моих изменений, если это необходимо.


18) Укажите, какова роль контроллера Rails?

Контроллер Rails является логическим центром приложения. Это облегчает взаимодействие между пользователями, представлениями и моделью. Он также выполняет другие действия, такие как

  • Он способен перенаправлять внешние запросы на внутренние действия. Он очень хорошо обрабатывает URL-адреса
  • Он регулирует вспомогательные модули, которые расширяют возможности шаблонов представлений без увеличения объема их кода.
  • Он регулирует сеансы; это создает у пользователей впечатление постоянного взаимодействия с нашими приложениями.

19) Укажите, в чем разница между «HashWithIndependent» активной поддержки и «Hash» Ruby?

Территория Hash Класс в базовой библиотеке Ruby возвращает значение, используя стандартный «= =» сравнение по клавишам. Это означает, что значение, сохраненное для символ ключ не может быть получен с использованием эквивалентной строки. В то время Хэшвитиндеффенсакцесс рассматривает символьные ключи и строковые ключи как эквивалентные.


20) Объясните, что такое подделка межсайтовых запросов (CSRF) и как Rails от нее защищен?

CSRF — это форма атаки, при которой хакер отправляет запрос страницы от вашего имени на другой веб-сайт, нанося ущерб или раскрывая ваши конфиденциальные данные. Чтобы защититься от CSRF-атак, вам необходимо добавить «защитить_от_подделки» . Контроллер приложений. Это приведет к тому, что Rails потребует токен CSRF для обработки запроса. Токен CSRF предоставляется как скрытое поле в каждой форме, созданной с помощью конструкторов форм Rails.


21) Объясните, что такое Mixin в Rails?

Миксин в Ruby предлагает альтернативу множественному наследованию: использование модулей миксина можно импортировать внутри другого класса.


22) Объясните, как вы определяете переменную экземпляра, глобальную переменную и переменную класса в Ruby?

  • Переменная экземпляра Ruby начинается с — @
  • Переменные класса Ruby начинаются с — @@
  • Глобальные переменные Ruby начинаются с — $

23) Объясните, как можно запустить приложение Rails без создания баз данных?

Вы можете выполнить свое приложение, раскомментировав строку в файле Environment.rb.

путь => корневой путь conf/environment.rb

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

24) Укажите, в чем разница между наблюдателями и обратными вызовами в Ruby on Rails?

  • Наблюдатели Rails: Наблюдатели аналогичны обратному вызову, но они используются, когда метод не связан напрямую с жизненным циклом объекта. Кроме того, наблюдатель живет дольше, и его можно отсоединить или прикрепить в любой момент. Например, отображение значений модели в пользовательском интерфейсе и обновление модели на основе ввода пользователя.
  • Обратный вызов Rails: Обратные вызовы — это методы, которые можно вызывать в определенные моменты жизненного цикла объекта, например, когда объект проверяется, создается, обновляется, удаляется. Обратный вызов недолговечен. Например, запуск потока и обратный вызов, который вызывается при завершении потока.

25) Объясните, что такое rake в Rails?

Rake — это Ruby Make; это утилита Ruby, которая заменяет утилиту Unix make и использует Rakefile и файлы .rake для создания списка задач. В Rails Rake используется для обычных задач администрирования, таких как миграция базы данных с помощью сценариев, загрузка схемы в базу данных и т. д.


26) Объясните, как можно перечислить все маршруты для приложения?

Чтобы вывести список всех маршрутов для приложения, вы можете написать rake-маршруты в терминале.


27) Объясните, что такое подметальная машина в 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 не поддерживает, включают:

  • Внешний ключ в базах данных
  • Связывание с несколькими базами данных одновременно
  • Мыльные веб-сервисы
  • Подключение к нескольким серверам баз данных одновременно

35) Укажите, в чем разница между вызовом super() и супервызовом?

  • супер(): вызов super() вызывает родительский метод без каких-либо аргументов, как и ожидалось. Как всегда, быть явным в своем коде — это хорошо.
  • супер звонок: вызов super вызывает родительский метод с теми же аргументами, которые были переданы дочернему методу. Поэтому произойдет ошибка, если аргументы, переданные дочернему методу, не будут соответствовать ожиданиям родительского метода.

36) Объясните, что такое Dig, Float и Max?

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

37) Объясните, как мы можем определить регулярные выражения Ruby?

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


38) Объясните, что такое определяемый оператор?

Оператор Define указывает, определено ли переданное выражение или нет. Если выражение определено, оно возвращает строку описания, а если оно не определено, оно возвращает нулевое значение.


39) Перечислите несколько особенностей Ruby?

  • Свободный формат – Вы можете начать писать из программы с любой строки и столбца.
  • С учетом регистра — прописные и строчные буквы различаются.
  • Комментарии – все, за чем следует некавыченный #, до конца строки, в которой он появляется, игнорируется интерпретатором
  • Разделители операторов. Несколько операторов в одной строке должны быть разделены точками с запятой, но они не обязательны в конце строки.

40) Укажите типы переменных, доступных в классе Ruby?

Типы переменных, доступных в классе Ruby:

  • Локальные переменные
  • Глобальные переменные
  • Переменные класса
  • Переменные экземпляра

41) Объясните, как можно объявить блок в Ruby?

В Ruby код в блоке всегда заключен в фигурные скобки ({}). Вы можете вызвать блок, используя «оператор Yield».


42) Объясните, в чем разница между операторами put и putc?

В отличие от оператора puts, который выводит на экран всю строку. Оператор Putc может использоваться для вывода одного символа за раз.


43) Объясните, что такое библиотека классов в Ruby?

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

  • GUI программирование
  • Сетевое программирование
  • CGI-программирование
  • Обработка текста

44) В Ruby объясняется определенный оператор?

Определенный оператор сообщает, определено ли переданное выражение или нет. Если выражение не определено, оно возвращает значение null, а если выражение определено, оно возвращает строку описания.


45) Укажите, в чем разница в области действия этих двух переменных: @@name и @name?

Разница в области действия этих двух переменных заключается в том, что:

  • @@name — переменная класса
  • @name — переменная экземпляра

46) Укажите, каков синтаксис Ruby Collect Iterator?

Синтаксис Ruby Collect Iterator Collection = Collection.collect.


47) В коде Ruby часто можно заметить, что программист использует сокращенную форму выражения, например массив.map(&:имя_метода) вместо array.map { |element| элемент.имя_метода }. Как на самом деле работает этот трюк?

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


48) Объясните, что такое интерполяция в Ruby?

Интерполяция Ruby — это процесс вставки строки в литерал. Поместив хеш (#) в открывающие и закрывающие скобки {}, можно интерполировать строку в литерал.


49) Укажите, какая нотация используется для обозначения переменных класса в Ruby?

В Ruby,

  • Константа должна начинаться с заглавной буквы и не должна определяться внутри метода.
  • Локальное имя должно начинаться со знака подчеркивания _ или строчной буквы.
  • Глобальная переменная должна начинаться со знака $. Неинициализированный глобальный объект имеет значение «ноль», и его следует повышение предупреждение. Его можно указать в любом месте программы.
  • Переменная класса должна начинаться с двойного @@ и должна быть сначала инициализирована, прежде чем использоваться в определении метода.

50) Укажите, в чем разница между Procs и Blocks?

Разница между процессами и блоками,

  • Блок — это всего лишь часть синтаксиса метода, тогда как proc имеет характеристики блока.
  • Процессы — это объекты, а блоки — нет.
  • В списке аргументов может присутствовать не более одного блока.
  • Только блок не может быть сохранен в переменной, а Proc может.

51) Назовите, в чем разница между одинарной и двойной кавычками?

Строки в одинарных кавычках не обрабатывают escape-коды ASCII и не выполняют интерполяцию строк.


52) Укажите, в чем разница между драгоценным камнем и плагином в Ruby?

  • Драгоценный камень: Драгоценный камень — это всего лишь рубиновый код. Он установлен на машине и доступен для всех приложений Ruby, работающих на этой машине.
  • Плагин: Плагин также представляет собой код Ruby, но он устанавливается в папку приложения и доступен только для этого конкретного приложения.

53) Назовите, в чем разница между расширением и включением?

«Include» делает методы модуля доступными для экземпляра класса, а «extend» делает эти методы доступными для самого класса.

Эти вопросы для собеседования также помогут вам в устной речи.

Поделиться

14 комментариев

  1. Аватара Хасануззаман Сумон говорит:

    Доходность не является функцией. Это ключевое слово Ruby, которое используется для выполнения блока.

    1. Аватара Терри Рэй говорит:

      В частности, выход передаст управление потоком (скорее всего, Main.thread) блоку, который был либо передан явно как параметр, т.е. def my_method(&my_block). Или, альтернативно, блок мог быть передан неявно, например

      my_class.my_method сделать
      # код в этом блоке будет передан внутри вызывающего метода
      конец

  2. Аватара Sonu говорит:

    очень приятно… продолжай в том же духе

  3. Хорхе Армандо говорит:

    по вопросу №6: в Ruby нет «логического» класса, следовательно, нет «логического типа». Есть только TrueClass и FalseClass.

  4. Аватара Терри Рэй говорит:

    на самом деле Thread.main… моя вина :)

  5. Аватара тест говорит:

    Ruby не вдохновлен Python, он был вдохновлен следующими (Perl, Smalltalk, Eiffel, Ada, BASIC и Lisp)

Оставьте комментарий

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