Топ 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
  • Модел: Той е представен от непрекъснат MixedCase и винаги има единствено число с името на таблицата
  • контролер: Имената на класове на контролери са представени в множествено число, така че OrdersController ще бъде контролерът за таблицата с поръчки.

4) Обяснете какво е „доходност“ в Ruby on Rails?

Метод на Ruby, който получава кодов блок, го извиква, като го извиква с „Yield“.


5) Обяснете какво е ORM (Object-Relationship-Model) в Rails?

ORM или Object Relationship Model в Rails показват, че вашите класове са картографирани към таблицата в базата данни, а обектите са директно картографирани към редовете в таблицата.


6) Споменете каква е разликата между false и nula в Ruby?

В Ruby false е обект на FalseClass за представяне на булева стойност, докато Nil е обект на NilClass, който показва липсата на стойност. Той има object_id 4.

Въпроси за интервю с Ruby on Rails
Въпроси за интервю с Ruby on Rails


7) Споменете какви са положителните аспекти на Rails?

Rails предоставя много функции като

  • Мета-програмиране: Rails използва генериране на код, но за тежка работа разчита на мета-програмиране. Ruby се счита за един от най-добрите езици за мета-програмиране.
  • Активен запис: Той записва обект в базата данни чрез Active Record Framework. Rails версията на Active Record идентифицира колоната в схема и автоматично ги свързва към обектите на вашия домейн, използвайки метапрограмиране
  • скеле: Rails имат възможност автоматично да създават скеле или временен код
  • Конвенция за конфигурация: За разлика от друга рамка за разработка, Rails не изисква много конфигурация, ако следвате внимателно конвенцията за именуване
  • Три среди: Rails се предлага с три тестови среди по подразбиране, разработка и производство.
  • Вградено тестване: Той поддържа код, наречен harness и fixtures, които правят тестови случаи за писане и изпълнение.

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

  • Приложение/контролери: Уеб заявка от потребителя се обработва от контролера. Поддиректорията на контролера е мястото, където Rails търси да намери класове на контролер
  • Приложение/помощници: Поддиректорията на помощника съдържа всички помощни класове, използвани за подпомагане на класовете изглед, модел и контролер.

9) Споменете каква е разликата между низ и символ?

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


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

Символът е различен от променливите в следните аспекти

  • По-скоро прилича на низ, отколкото на променлива
  • В Ruby низът е променлив, но символът е неизменен
  • Трябва да се създаде само едно копие на символа
  • Символите често се използват като съответстващи на enum в Ruby

11) Обяснете какво е Rails Active Record в Ruby on Rails?

Активният запис на Rails е слой Object/Relational Mapping (ORM), доставен с Rails. Той следва стандартния ORM модел като

  • Таблица карта към класове
  • Редовете се преобразуват в обекти
  • Колоните се преобразуват в атрибутите на обекта

12) Обяснете как се прилага Rails Аякс?

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

Rails задейства Ajax операция по следните начини

  • Някои тригерни пожари: Задействането може да бъде потребител, който кликва върху връзка или бутон, като потребителите предизвикват промени в данните в полето или във формуляр
  • Уеб клиентът извиква сървъра: Java-script метод, XMLHttpRequest, изпраща данни, свързани с тригера, към манипулатор на действие на сървъра. Данните може да са ID на поле за отметка, целия формуляр или текста в полето за въвеждане
  • Сървърът обработва: Манипулаторът на действие от страна на сървъра прави нещо с данните и извлича 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 скрипт/генериране на име на таблица за миграция


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

При мигриране към нова версия, self.up методът се използва докато самостоятелно.надолу метод се използва за връщане назад на моите промени, ако е необходимо.


18) Споменете каква е ролята на Rails Controller?

Контролерът на Rails е логическият център на приложението. Той улеснява взаимодействието между потребителите, изгледите и модела. Извършва и други дейности като

  • Той е в състояние да насочва външни заявки към вътрешни действия. Той обработва URL изключително добре
  • Той регулира помощните модули, които разширяват възможностите на шаблоните за изгледи без групиране на техния код
  • Регулира сесиите; което създава у потребителите впечатлението за непрекъснато взаимодействие с нашите приложения

19) Споменете каква е разликата между „HashWithIndifferent“ на Active support и „Hash“ на Ruby?

- Хашиш клас в основната библиотека на Ruby връща стойност чрез използване на стандарт „= =“ сравнение на ключовете. Това означава, че стойността, съхранена за a символ ключът не може да бъде извлечен с помощта на еквивалентен низ. Докато на HashWithIndifferentAccess третира символните ключове и низовите ключове като еквивалентни.


20) Обяснете какво е Cross-Site Request Forgery (CSRF) и как Rails е защитен срещу него?

CSRF е форма на атака, при която хакерът изпраща заявка за страница от ваше име до различен уебсайт, причинявайки щети или разкривайки вашите чувствителни данни. За да се предпазите от CSRF атаки, трябва да добавите “protect_from_forgery” към вашия ApplicationController. Това ще накара Rails да изисква CSRF токен за обработка на заявката. CSRF токенът се дава като скрито поле във всеки формуляр, създаден с помощта на създателите на формуляри на Rails.


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

Mixin в Ruby предлага алтернатива на множество наследявания, използвайки mixin модули, които могат да бъдат импортирани в друг клас.


22) Обяснете как дефинирате променливата на екземпляра, глобалната променлива и променливата на класа в Ruby?

  • Променливата на Ruby Instance започва с - @
  • Променливите от клас 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 наблюдатели: Observers е същото като Callback, но се използва, когато методът не е пряко свързан с жизнения цикъл на обекта. Освен това наблюдателят живее по-дълго и може да бъде откачен или прикрепен по всяко време. Например показване на стойности от модел в потребителския интерфейс и актуализиране на модела от потребителски вход.
  • Обратно извикване на Rails: Обратните извиквания са методи, които могат да бъдат извикани в определени моменти от жизнения цикъл на обект, например могат да бъдат извикани, когато даден обект е валидиран, създаден, актуализиран, изтрит. Обратното извикване е краткотрайно. Например стартиране на нишка и даване на обратно извикване, което се извиква, когато нишката приключи

25) Обяснете какво е рейк в Rails?

Rake е 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?

  • Пренасочването е метод, който се използва за издаване на съобщение за грешка, в случай че страницата не е издадена или намерена в браузъра. Той казва на браузъра да обработи и издаде нова заявка.
  • Render е метод, използван за създаване на съдържание. Рендирането работи само когато контролерът е настроен правилно с променливите, които трябва да бъдат рендирани.

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 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 кодът в блока винаги е ограден в скоби ({}). Можете да извикате блок, като използвате „изявление за доходност“.


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(&:method_name) вместо array.map { |element| element.method_name }. Как всъщност работи този трик?

Когато параметър се предава с „&“ пред него. Ruby ще извика към него to_proc в опит да го направи използваем като блок. И така, символът to_Proc ще извика метода със съответното име на всичко, което му е предадено. По този начин помагаме на нашия стенографски трик да работи.


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

Ruby Interpolation е процес на вмъкване на низ в литерал. Чрез поставяне на хеш (#) в {} отварящи и затварящи скоби, човек може да интерполира низ в литерала.


49) Споменете каква е нотацията, използвана за обозначаване на класови променливи в Ruby?

В Ruby,

  • Константата трябва да започва с главна буква и не трябва да се дефинира в метод
  • Локалното трябва да започва със знака _ долна черта или малка буква
  • Глобалната променлива трябва да започва със знака $. Неинициализиран глобален има стойност „нула“ и трябва повишаване на предупреждение. Може да се посочи навсякъде в програмата.
  • Променливата на класа трябва да започва с двойно @@ и трябва първо да бъде инициализирана, преди да се използва в дефиниция на метод

50) Споменете каква е разликата между Procs и Blocks?

Разликата между Procs и Blocks,

  • Блокът е само част от синтаксиса на метод, докато proc има характеристиките на блок
  • Процесите са обекти, блоковете не са
  • Най-много един блок може да се появи в списък с аргументи
  • Само блокът не може да се съхранява в променлива, докато Proc може

51) Споменете каква е разликата между единични и двойни кавички?

Низовете с единични кавички не обработват ASCII екраниращи кодове и не извършват интерполация на низове.


52) Споменете каква е разликата между скъпоценен камък и плъгин в Ruby?

  • Скъпоценен камък: Скъпоценният камък е просто рубинен код. Той е инсталиран на машина и е достъпен за всички ruby ​​приложения, работещи на тази машина.
  • Plugin: Добавката също е ruby ​​код, но е инсталирана в папката на приложението и е достъпна само за това конкретно приложение.

53) Споменете каква е разликата разширяване и включване?

„Include“ прави методите на модула достъпни за екземпляра на клас, докато „extend“ прави тези методи достъпни за самия клас.

Тези въпроси за интервюто също ще ви помогнат във вашата viva (устна)

Сподели

14 Коментари

  1. въплъщение Хасануззаман Сумон казва:

    Добивът не е функция. Това е ключова дума ruby, която се използва за изпълнение на блок.

    1. въплъщение Тери Рей казва:

      По-конкретно yield ще прехвърли контрола на нишката (Main.thread най-вероятно) към блока, който или е бил предаден изрично като параметър, т.е.

      my_class.my_method do
      # код в този блок ще бъде преотстъпен вътре в извикващия метод
      край

  2. въплъщение край казва:

    много хубаво... продължавай все така

  3. Хорхе Армандо казва:

    на въпрос №6, в Ruby няма „булев“ клас, следователно няма „булев тип“. Има само TrueClass и FalseClass.

    1. Алекс Силвърман Алекс Силвърман казва:

      Той е актуализиран.

  4. въплъщение Тери Рей казва:

    всъщност Thread.main … лошото ми :)

  5. въплъщение тест казва:

    Ruby не е вдъхновен от Python, той е вдъхновен от следното (Perl, Smalltalk, Eiffel, Ada, BASIC и Lisp)

    1. Алекс Силвърман Алекс Силвърман казва:

      Той е актуализиран.

  6. въплъщение Муник казва:

    Хубав проблясък на рубин и релси

Оставете коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани *