40+ často kladených otázek a odpovědí na rozhovor s Ruby on Rails [2023]

Ruby on Rails je pravděpodobně nejslavnější framework Ruby. Jeho jednoduchost použití, architektura MVC, komunita a škálovatelnost jsou důvody jeho popularity.

Některá z velkých jmen, která používají Ruby on Rails, jsou GitHub, Dribble, Shopify, Airbnb, Etsy, Kickstarter, Twitch a Zendesk, abychom zmínili alespoň některé.

Pokud jste středně pokročilý nebo zkušený inženýr Ruby on Rails, pochopení povahy otázek, které pravděpodobně najdete při příštím pohovoru, je chytrým krokem.

Pohovory mohou být děsivé, pokud nejste připraveni. Pokud jste však dobře připraveni, vaše sebevědomí vystřelí nahoru a možná budete mít štěstí, že získáte novou roli ve vaší vysněné společnosti.

Toto jsou některé běžné otázky pro rozhovory Ruby on Rails a jejich odpovědi.

Table of Contents

Co je Ruby on Rails?

Ruby je objektově orientovaný programovací jazyk s jednoduchou syntaxí.

Ruby on Rails je framework Ruby, který vývojáři používají k vytváření webových aplikací.

Diskutujte o výhodách Ruby on Rails

  • Méně kódu než jiné jazyky: S několika řádky kódu s Rails můžete dosáhnout hodně.
  • Rozsáhlá knihovna a drahokamy: Existuje spousta knihoven a drahokamů ke zlepšení funkčnosti aplikace Ruby on Rails.
  • Snadné naučení: Kód Ruby on Rails vypadá jako obyčejná angličtina.
  • Velká komunita.
  Zamilujeme se do Siri a Cortany?

Diskutujte o limitech Ruby on Rails

  • Ve srovnání s Django a Node.js je rychlost běhu a výkon Rails nízká.
  • Omezená dokumentace pro některé z jejích drahokamů.
  • Ruby on Rails je přesvědčený, což omezuje flexibilitu vývojáře.

Co je ovladač Rails?

Je to logické centrum aplikace Ruby on Rails. Řadič Rails spravuje, koordinuje a monitoruje všechny interakce mezi uživateli, modely a pohledy.

Co je aktivní záznam Rails?

Aktivní záznam je technika mapování vztahu objektů (ORM). Tato vrstva kódu Ruby běží mezi logikou kódu a vaší databází. Poté, co napíšete kód Ruby, spustíte „migrace“, abyste provedli změny v databázi.

Co je MVC a jak funguje?

Architektonický vzor model-view-controller (MVC) odděluje obchodní logiku od vstupní a prezentační logiky.

  • Model: zpracovává veškerou datovou logiku v aplikaci Rails.
  • Zobrazit: toto je část aplikace, kterou si uživatelé prohlížejí.
  • Controller: je jako most nebo zprostředkovatel, který umožňuje komunikaci modelu a pohledu.

Co je akční ovladač v Ruby on Rails?

Akční ovladač je C ve vzoru MVC. Action Controller přijímá příchozí požadavky, dává smysl požadavku a vytváří příslušný výstup.

Co je to rake in Rails?

Rake je task runner pro aplikace Ruby on Rails a Ruby. Rails má předdefinované úlohy Rake pro provádění testů, spouštění migrací a vytváření databází.

Co je výnos v Ruby on Rails?

Yield je klíčové slovo používané uvnitř metod k volání bloku. Počet argumentů, které může Yield předat bloku, není nijak omezen. Bloky jsou v tomto případě metody bez jmen, které lze předat jako další argumenty pro jiné metody.

Co je Garbage Collection Ruby on Rails?

Garbage Collection je proces řízení paměti používané počítačovými programy. Ruby on Rails sleduje, jaké objekty používá program spíše než programátor. Vývojáři se tak mohou soustředit na logiku a konvence namísto starostí s alokací paměti.

Jaká je role Garbage Collection v aplikaci Rails?

Uvolní paměť na vašem počítači pro provedení jiných procesů. Garbage collection toho dosahuje odstraněním nepřístupných objektů, které program po spuštění zanechá.

Co je to potrubí aktiv?

Asset Pipeline v Ruby on Rails poskytuje rámec, který minimalizuje a spojuje aktiva CSS a JavaScript. Tento rámec umožňuje, aby se všechna aktiva ve vaší aplikaci Rails automaticky kombinovala s aktivy z jiných drahokamů.

Rozlišujte mezi dynamickým a statickým lešením

Lešení je proces generování hlavních částí aplikace Rails.

Statické lešení explicitně zadá příkaz, který vytvoří požadovaná data v příslušných polích. Chcete-li dokončit statické lešení, musíte spustit migrace.

Dynamické lešení generuje obsah a uživatelská rozhraní za běhu. Tento proces lze použít k vytváření, úpravám a odstraňování akcí v aplikaci Rails.

Co je třídní knihovna?

Knihovna tříd obsahuje domény v Ruby on Rails a příklady takových domén jsou programování vláken a datové typy. Knihovna tříd umožňuje vývojáři vytvářet abstrakci kódu a používat tak stejnou logiku v různých prvcích v aplikaci.

  Sestavte si svou další aplikaci s platformou Low-Code – Zoho Creator

Popište polymorfní asociaci v kolejích

Polymorfní asociace je typ asociace aktivních záznamů. Polymorfismus znamená, že objekt může mít mnoho podob. V kontextu Rails vám Polymorphic Association umožňuje definovat jeden model, který může být spojen s jinými modely nebo k nim patřit, aniž byste museli psát opakovací kód.

Co je řetězcová interpolace v Ruby?

Řetězcová interpolace přidává zástupné symboly odkazující na jiné hodnoty v řetězcovém objektu. Použití operátoru sčítání je nejjednodušší způsob interpolace hodnot.

Zvažte tento příklad:

name = "Titus"

puts "Hello " + name

Výstupem bude;

Ahoj Titusi

Co je Object Relationship Model (ORM)?

ORM je mostem mezi databázemi a objektově orientovanými programy. Vztah objektů v Rails označuje, kdy jsou třídy mapovány na tabulku ve vaší databázi.

Vysvětlete migraci po kolejích

Migrace pomáhají vývojářům pohodlně provádět změny schématu databáze. Vývojáři tak mohou řídit zavádění a vrácení zpět v databázovém schématu v kontrolovaném prostředí. Tento přístup vám brání ve správě jednotlivých skriptů SQL k definování změn.

Vysvětlete konvenci pojmenování v Rails

  • Třída a modul: použijte MixedCase, ale bez podtržítka. Názvy ve třídách a modulech začínají velkým písmenem.
  • Databázová tabulka: název databázové tabulky by měl být uveden v množném čísle a velikosti písmen.
  • Proměnné: písmena deklarující proměnné by měla být malá a snake_case s podtržením, které je odděluje.
  • Model: použijte MixedCase k určení modelu a ujistěte se, že název je v jednotném čísle.
  • Kontroléry: názvy kontrolérů jsou množné.

Jaký je rozdíl mezi řetězcem a textem v Rails?

:string je vhodný, když chcete uložit krátký text do 255 znaků. Můžete jej použít se jmény, uživatelskými jmény, e-maily, hesly a tituly.

:text se hodí k dlouhým popisům. Perfektní příklady komentářů k příspěvku na blogu nebo popisu obchodu.

class CreatePosts < ActiveRecord::Migration

   def self.up

      create_table:posts do |t|

         t.string:description

         t.text :content 

      end

   end

Explain Cross-Site Request Forgery (CSRF)

Cross-Site Request Forgery (CSRF) je online útok, při kterém útočník chytí ověřené uživatele, aby jejich jménem provedli určité akce.

Rails vyžadují, aby vývojáři přidali „protect_from_forgery“ do ApplicationController, aby se vyhnuli útokům CSRF. Aplikace bude vždy vyžadovat token CSRF k ověření uživatele.

Vysvětlete, co je mixin v Rails

Mixin nabízí kontrolovaný způsob přidávání funkcí do třídy. Mnoho různých mixinů tvoří třídu. Mixiny vymýtí potřebu mít vícenásobné dědictví.

Jaké je použití zatížení a požadavků v Ruby?

require() se používá k importu knihoven/drahokamů

load() se používá k provedení bloku kódu

Jaký je rozdíl mezi zpětnými voláními a pozorovateli v Ruby on Rails

Rails pozorovatelé se používají, když metoda přímo nesouvisí s životním cyklem objektu. Jejich životní cykly jsou velké a lze je kdykoli připojit nebo odpojit.

Zpětná volání lze volat pouze v určitých instancích v životním cyklu objektu. Příklady takových instancí jsou aktualizace, vytváření a ověřování. Zpětná volání jsou aktivní pouze po krátkou dobu.

Co jsou to postroje a příslušenství v Ruby?

Svítidla odkazují na způsob organizace dat, která chcete testovat. Mohou být vytvořeny v souborech, které končí příponou .yml.

  Klepnutím na upuštěný poke míček nastavíte další hod rychleji

Harnesses je prostředí nebo testovací běh pro provádění testů Rails. Svítidla jsou nastavena v postrojích.

Jaký je rozdíl mezi rozšířením a zahrnutím?

„Zahrnout“ přidá do třídy metodu instance. Kód tak bude přístupný prostřednictvím metod tříd.

„Extend“ přidá metody instance definované v modulu do rozšířené třídy.

Jsou drahokamy a pluginy stejné v Ruby?

Drahokamy jsou zabalené aplikace Ruby, které je třeba nainstalovat. Jsou univerzální a jejich funkčnost nezávisí na Rails.

Pluginy v Ruby on Rails se nasazují společně s vaší aplikací Rails. Upravují nebo rozšiřují základní funkce Rails.

Co jsou železniční pozorovatelé?

Rails pozorovatel nabízí mechanismus, kdy jeden objekt informuje ostatní, když se jeho stav změní. Je použitelný ve vztahu jeden k mnoha, takže když se změní jeden objekt, všechny závislé objekty jsou informovány a automaticky změněny.

Jaký příkaz se používá k vytvoření migrace?

bin/rails db:migrate

Ukažte, jak definovat třídy, instance a globální proměnné v Ruby

  • Proměnné třídy: Lze je použít kdekoli v rámci jejich třídy. K nim mají přístup i potomci třídy. Začínají na @@.
  • Proměnné instance: Používají se v místním rozsahu, který je specifický pro instance vytvořeného objektu. Mohou se lišit od jednoho objektu k druhému. Začínají na @.
  • Globální proměnné: Přístupné kdekoli v programu. Začíná na $.

Jakou roli hraje rakefile dostupný v demo adresáři v Ruby?

Rakefile pomáhá s testováním a balením kódu Rails. Soubor definuje úlohy, které provádějí testy nebo demonstrují funkce aplikace.

Co je to zametací stroj v Rails?

Sweepery fungují jako terminátory při ukládání do mezipaměti. Fungují jako poloviční filtry a poloviční pozorovatelé a implementují zpětná volání pro tyto dvě role. ‚expire_cache‘ najde všechny fragmenty mezipaměti, kterým musí vypršet platnost, a vymaže je,

Co jsou to filtry?

Jedná se o metody „před“ nebo „po“ provedení akce ovladače. Takové metody se dědí a budou se spouštět s každým požadavkem, který vaše aplikace obdrží, pokud jste je nastavili v ApplicationController.

Rozlišujte mezi přesměrováním a vykreslením v Rails

Render: používá se k vykreslení šablony a jejímu odeslání klientovi jako odpověď na požadavek. Tato šablona pak vygeneruje stránku, kterou prohlížeč zobrazí.

Přesměrování: odešle nový požadavek HTTP na jinou adresu URL. Tato akce přesměruje klienta na jiný řadič nebo akci. Tato metoda se hodí, když chcete změnit adresy URL, které klienti vidí v prohlížeči.

Rozlišujte mezi voláním super() a super voláním

  • Super: pošle zprávu rodiči aktuálního objektu, aby vyvolal všechny argumenty vyvolané metody.
  • super(): neposílá žádné argumenty nadřazenému.

Jaký je rozdíl mezi procesy a bloky?

  • Bloky: Část kódu obklopená příkazy do/end nebo složenými závorkami. Jsou vytvořeny a provedeny při každém volání metody.
  • Procesy: Bloky kódu spojené dohromady se sadou lokálních proměnných. Tento kód lze volat v různých kontextech a stále přistupuje k proměnným.

Jaký je rozdíl mezi puts a print statement?

Puts používáme, když chceme něco vytisknout na obrazovku. Například,

puts “Hello World!!!”

Tisky Ahoj světe!!! na obrazovce

Tisk používáme, když nechceme přidat nový řádek na konzoli.

print “Hello World!!!” 

Výstupy Hello World!!!, ale nový řádek do konzole přidán nebude.

Co jsou dynamické vyhledávače?

Dynamické vyhledávače umožňují vývojářům vyhledávat záznamy v jejich databázi bez použití nezpracovaných SQL dotazů. Používají klíčové slovo find_by_, po kterém následuje atribut pro vyhledávání.

Vysvětlete, jak Rail implementuje ajax

  • Spustí se spouštěč, jako je odeslání formuláře nebo kliknutí na tlačítko.
  • Metoda JavaScriptu odešle spouštěcí data obslužné rutině na serveru.
  • Obslužná rutina na straně serveru pracuje s daty a odesílá HTML webovému klientovi.
  • Obslužný program JavaScript na straně klienta přijímá obsah HTML a aktualizuje aktuální stránku.

Vysvětlete Dig, Float a Max

  • Pomocí metody Dig můžete extrahovat hodnoty z vnořených hashů nebo polí.
  • Float je datový typ Ruby představující reálná čísla s přesností s plovoucí desetinnou čárkou.
  • Max je metoda, kterou lze použít s poli a hashe. Vrací maximální hodnotu v kolekci položek/hodnot.
array = [2, 9, 4, 7, 3]

maximum = array.max

Konzole vydá 9, protože je to největší číslo.

Závěr

Výše jsou některé otázky, které pravděpodobně najdete ve svém příštím Ruby on Rails. Pokud jste všestranným softwarovým inženýrem, podívejte se na tyto otázky k rozhovoru s Node.js. Než se zúčastníte dalšího pohovoru, ujistěte se, že rozumíte popisu práce inženýra Rails.