53 nejčastějších otázek a odpovědí na rozhovor s Ruby on Rails (2025)
Zde jsou otázky a odpovědi na pohovor Ruby on Rails pro nováčky i zkušené vývojářské kandidáty Ruby, aby získali svou vysněnou práci.
1) Vysvětlete, co je Ruby on Rails?
- Ruby: Jedná se o objektově orientovaný programovací jazyk inspirovaný jazyky PERL, Smalltalk, Eiffel, Ada, Basic a Lisp.
- Kolejnice: Jedná se o framework používaný pro tvorbu webových aplikací
2) Vysvětlete, co jsou knihovny tříd v Ruby?
Knihovny tříd v Ruby se skládají z různých domén, jako jsou datové typy, programování vláken, různé domény atd.
Zdarma ke stažení PDF: Otázky a odpovědi k rozhovoru s Ruby on Rails
3) Uveďte, jaká je konvence pojmenování v Rails?
- Proměnné: Při deklaraci proměnných jsou všechna písmena malá a slova jsou oddělena podtržítky
- Třída a modul: Moduly a třídy používají MixedCase a nemají podtržítko; každé slovo začíná velkým písmenem
- Tabulka databáze: Název databázové tabulky by měl obsahovat malá písmena a podtržítko mezi slovy a všechny názvy tabulek by měly být v množném čísle, například položky faktury
- Model: Je reprezentován nepřerušeným MixedCase a má vždy jednotné číslo s názvem tabulky
- Ovladač: Názvy tříd řadičů jsou reprezentovány v množném čísle, takže OrdersController by byl řadičem pro tabulku objednávek.
4) Vysvětlete, co je „Výnos“ v Ruby on Rails?
Metoda Ruby, která přijímá blok kódu, jej vyvolá voláním s „výnosem“.
5) Vysvětlete, co je ORM (Object-Relationship-Model) v Rails?
ORM nebo Object Relationship Model v Rails označují, že vaše třídy jsou mapovány do tabulky v databázi a objekty jsou mapovány přímo do řádků v tabulce.
6) Uveďte, jaký je rozdíl mezi false a nul v Ruby?
V Ruby je false objektem třídy FalseClass, který představuje booleovskou hodnotu, zatímco Nil je objekt třídy NilClass, který označuje nepřítomnost hodnoty. Má object_id 4.
7) Uveďte, jaké jsou pozitivní aspekty Rails?
Rails poskytuje mnoho funkcí jako
- Metaprogramování: Rails používá generování kódu, ale pro těžké zvedání se spoléhá na metaprogramování. Ruby je považován za jeden z nejlepších jazyků pro Meta-programování.
- Aktivní záznam: Ukládá objekt do databáze prostřednictvím Active Record Framework. Verze Rails Active Record identifikuje sloupec ve schématu a automaticky je spojí s objekty vaší domény pomocí metaprogramování.
- Lešení: Kolejnice mají schopnost automaticky vytvářet lešení nebo dočasný kód
- Konvence nad konfigurací: Na rozdíl od jiných vývojových rámců nevyžaduje Rails mnoho konfigurace, pokud pečlivě dodržujete konvenci pojmenování
- Tři prostředí: Rails přichází se třemi výchozími testovacími, vývojovými a produkčními prostředími.
- Vestavěné testování: Podporuje kód zvaný svazek a příslušenství, které umožňují zápis a spuštění testovacích případů.
8) Vysvětlete, jaká je role podadresářů app/controllers a app/helpers?
- Aplikace/řadiče: Webový požadavek od uživatele zpracovává správce. Podadresář controlleru je místo, kde Rails hledá třídy kontrolerů
- App/helpers: Podadresář pomocníka obsahuje všechny pomocné třídy používané k podpoře tříd pohledu, modelu a řadiče.
9) Uveďte, jaký je rozdíl mezi řetězcem a symbolem?
Oba jednají stejným způsobem, pouze se liší ve svém chování, které je proti sobě. Rozdíl spočívá v object_id, paměti a ladění procesu, když jsou použity společně. Symbol patří do kategorie neměnných objektů, zatímco řetězce jsou považovány za proměnlivé objekty.
10) Vysvětlete, jak se symbol liší od proměnných?
Symbol se od proměnných liší v následujících aspektech
- Je to spíše řetězec než proměnná
- V Ruby je řetězec proměnný, ale symbol je neměnný
- Stačí vytvořit pouze jednu kopii symbolu
- Symboly se často používají jako odpovídající výčtům v Ruby
11) Vysvětlete, co je Rails Active Record v Ruby on Rails?
Aktivní záznam Rails je vrstva Object/Relational Mapping (ORM) dodávaná s Rails. Dodržuje standardní model ORM jako
- Tabulka map do tříd
- Řádky se mapují na objekty
- Sloupce mapují na atributy objektu
12) Vysvětlete, jak Rails implementuje Ajax?
Webová stránka poháněná Ajaxem získá webovou stránku ze serveru, která je nová nebo změněná na rozdíl od jiných webových stránek, kde musíte stránku obnovit, abyste získali nejnovější informace.
Rails spouští operaci Ajax následujícími způsoby
- Některé spouštěcí požáry: Spouštěčem může být uživatel klikající na odkaz nebo tlačítko, uživatelé vyvolávající změny údajů v poli nebo ve formuláři
- Webový klient volá server: Metoda Java-script, XMLHttpRequest, odesílá data spojená se spouštěčem obslužné rutině akce na serveru. Data mohou být ID zaškrtávacího políčka, celý formulář nebo text ve vstupním poli
- Server zpracovává: Obslužný program akce na straně serveru něco provede s daty a načte soubor HTML fragment do webového klienta
- Klient obdrží odpověď: JavaScript na straně klienta, který Rails generuje automaticky, obdrží fragment HTML a použije jej k aktualizaci konkrétní části aktuálního
13) Uveďte, jak můžete vytvořit ovladač pro předmět?
K vytvoření ovladače pro předmět můžete použít následující příkaz
C:\ruby\library> ruby skript/vygenerování předmětu řadiče
14) Uveďte, co je to Rails Migration?
Rails Migration umožňuje Ruby provádět změny ve schématu databáze, což umožňuje používat systém správy verzí k ponechání věcí synchronizovaných se skutečným kódem.
15) Vyjmenujte, co může Rails Migration dělat?
Rails Migration umí následující věci
- Vytvořte tabulku
- Skládací stůl
- Přejmenovat tabulku
- Přidat sloupec
- Přejmenovat sloupec
- Změnit sloupec
- Odstraňte sloupec a tak dále
16) Uveďte, jaký je příkaz k vytvoření migrace?
Chcete-li vytvořit migraci příkaz zahrnuje
C:\ruby\application>ruby script/generate migrační název_tabulky
17) Vysvětlete, kdy se používá metoda self.up a self.down?
Při migraci na novou verzi sebe.nahoru metoda se používá, zatímco sebe.dolů metoda se používá k vrácení mých změn v případě potřeby.
18) Uveďte, jakou roli hraje Rails Controller?
Ovladač Rails je logickým centrem aplikace. Usnadňuje interakci mezi uživateli, pohledy a modelem. Provádí i další činnosti jako např
- Je schopen směrovat externí požadavky na interní akce. Velmi dobře si poradí s URL
- Reguluje pomocné moduly, které rozšiřují možnosti šablon pohledů bez nahromadění jejich kódu
- Reguluje relace; což dává uživatelům dojem neustálé interakce s našimi aplikacemi
19) Uveďte, jaký je rozdíl mezi „HashWithIndifferent“ aktivní podpory a „Hash“ od Ruby?
Jedno Hash class v základní knihovně Ruby vrací hodnotu pomocí standardu "= =" srovnání na klávesách. To znamená, že hodnota uložená pro a symbol klíč nelze získat pomocí ekvivalentního řetězce. Zatímco HashWithIndifferentAccess považuje symbolové klíče a řetězcové klíče za ekvivalenty.
20) Vysvětlete, co je to Cross-Site Request Forgery (CSRF) a jak je Rails proti němu chráněn?
CSRF je forma útoku, kdy hacker odešle žádost o stránku vaším jménem na jinou webovou stránku, čímž způsobí škodu nebo odhalí vaše citlivá data. Chcete-li se chránit před útoky CSRF, musíte přidat "chránit_před_falšováním" tvému ApplicationController. To způsobí, že Rails bude ke zpracování požadavku vyžadovat token CSRF. Token CSRF je dán jako skryté pole v každém formuláři vytvořeném pomocí stavitelů formulářů Rails.
21) Vysvětlete, co je Mixin in Rails?
Mixin v Ruby nabízí alternativu k vícenásobné dědičnosti, pomocí modulů mixin lze importovat do jiné třídy.
22) Vysvětlete, jak definujete proměnnou instance, globální proměnnou a proměnnou třídy v Ruby?
- Proměnná instance Ruby začíná — @
- Proměnné třídy Ruby začínají na — @@
- Ruby Global proměnné začínají na — $
23) Vysvětlete, jak můžete spustit aplikaci Rails bez vytváření databází?
Svou aplikaci můžete spustit zrušením komentáře na řádku v environment.rb
cesta=> kořenová cesta conf/environment.rb
config.frameworks = [ action_web_service, :action_mailer, :active_record]
24) Uveďte, jaký je rozdíl mezi Observers a Callbacks v Ruby on Rails?
- Pozorovatelé kolejí: Observers je stejný jako Callback, ale používá se, když metoda není přímo spojena s životním cyklem objektu. Pozorovatel také žije déle a může být kdykoli odpojen nebo připojen. Například zobrazení hodnot z modelu v uživatelském rozhraní a aktualizace modelu z uživatelského vstupu.
- Zpětné volání Rails: Zpětná volání jsou metody, které lze volat v určitých okamžicích životního cyklu objektu, například je lze volat, když je objekt ověřován, vytvořen, aktualizován, vymazán, zpětné volání je krátkodobé. Například spuštění vlákna a poskytnutí zpětného volání, které je voláno při ukončení vlákna
25) Vysvětlete, co je to rake v Rails?
Rake je Ruby Make; je to nástroj Ruby, který nahrazuje unixový nástroj „make“ a používá soubory „Rakefile“ a „.rake“ k vytvoření seznamu úloh. V Rails se Rake používá pro běžné administrativní úkoly, jako je migrace databáze pomocí skriptů, načítání schématu do databáze atd.
26) Vysvětlete, jak můžete vypsat všechny trasy pro aplikaci?
Chcete-li vypsat všechny cesty pro aplikaci, můžete do terminálu napsat rake routes.
27) Vysvětlete, co je to sweeper v Rails?
Sweepers jsou zodpovědné za vypršení platnosti nebo ukončení mezipaměti při změně objektu modelu.
28) Uveďte log, který je třeba vidět, aby bylo možné hlásit chyby v Ruby Rails?
Rails bude hlásit chyby z Apache v log/Apache.log a chyby z Ruby kódu v log/development.log.
29) Vysvětlete, jaký je rozdíl mezi dynamickým a statickým lešením?
Dynamické lešení | Statické lešení |
|
|
30) Uveďte, jakou funkci má v Ruby on Rails sběr odpadu?
Funkce sběru odpadu v Ruby on Rails zahrnuje
- Umožňuje odstranění hodnot ukazatelů, které zůstanou po ukončení provádění programu
- Osvobozuje programátora od sledování objektu, který je dynamicky vytvářen za běhu
- Poskytuje výhodu odstranění nepřístupných objektů z paměti a umožňuje ostatním procesům používat paměť
31) Uveďte, jaký je rozdíl mezi přesměrováním a vykreslením v Ruby on Rails?
- Přesměrování je metoda, která se používá k vydání chybové zprávy v případě, že stránka není vydána nebo nalezena do prohlížeče. Řekne prohlížeči, aby zpracoval a vydal nový požadavek.
- Render je metoda používaná k vytváření obsahu. Render funguje pouze tehdy, když je ovladač správně nastaven s proměnnými, které je třeba vykreslit.
32) Uveďte, k čemu slouží RJ v Rails?
RJs je šablona, která vytváří JavaScript, který prohlížeč spouští v eval bloku v reakci na požadavek AJAX. Někdy se používá k definování JavaScriptu, Prototypu a pomocníků poskytovaných Rails.
33) Vysvětlete, co je to Polymorfní asociace v Ruby on Rails?
Polymorfní přidružení umožňuje propojení objektu ActiveRecord s více objekty ActiveRecord. Dokonalým příkladem Polymorphic Association je sociální stránka, kde mohou uživatelé komentovat kdekoli, ať už se jedná o videa, fotografie, odkaz, aktualizace stavu atd. Nebylo by možné, pokud byste museli vytvořit individuální komentář jako photos_comments, videos_comment a tak dále. .
34) Uveďte, jaké jsou limity Ruby on Rails?
Ruby on Rails byl navržen pro vytváření webové aplikace CRUD pomocí MVC. To může způsobit, že Rails nebude užitečný pro ostatní programátory. Některé z funkcí, které Rails nepodporuje, zahrnují
- Cizí klíč v databázích
- Propojení s více databázemi najednou
- Mýdlové webové služby
- Připojení k více databázovým serverům najednou
35) Uveďte, jaký je rozdíl mezi voláním super() a super volání?
- super (): Volání super() vyvolá rodičovskou metodu bez jakýchkoli argumentů, jak se pravděpodobně očekávalo. Jako vždy je dobré být ve vašem kódu explicitní.
- super volání: Volání super vyvolá rodičovskou metodu se stejnými argumenty, které byly předány podřízené metodě. Pokud argumenty předané podřízené metodě neodpovídají tomu, co očekává rodič, dojde k chybě.
36) Vysvětlete o Dig, Float a Max?
- Třída Float se používá vždy, když se funkce neustále mění.
- Dig se používá vždy, když chcete znázornit float v desetinných číslicích.
- Max se používá vždy, když existuje velká potřeba Float.
37) Vysvětlete, jak můžeme definovat regulární výrazy Ruby?
Regulární výraz Ruby je speciální posloupnost znaků, která vám pomůže najít jiné řetězce. Literál regulárního výrazu je vzor mezi libovolnými oddělovači nebo lomítky následovaný %r.
38) Vysvětlete, co je definovaný operátor?
Operátor Define uvádí, zda je předaný výraz definován nebo ne. Pokud je výraz definován, vrací popisný řetězec a pokud není definován, vrací hodnotu null.
39) Vyjmenujte několik funkcí Ruby?
- Volný formát – můžete začít psát z programu z libovolného řádku a sloupce
- Rozlišovat velká a malá písmena – Velká a malá písmena se liší
- Komentáře – Cokoli následované neuvozovkami #, do konce řádku, na kterém se objeví, je interpretem ignorován
- Oddělovače příkazů – více příkazů na jednom řádku musí být odděleno středníkem, ale na konci řádku se nevyžadují.
40) Uveďte typy proměnných dostupných v Ruby Class?
Typy proměnných dostupných v Ruby Class jsou,
- Místní proměnné
- Globální proměnné
- Třídní proměnné
- Proměnné instance
41) Vysvětlete, jak můžete deklarovat blok v Ruby?
V Ruby je kód v bloku vždy uzavřen ve složených závorkách ({}). Blok můžete vyvolat pomocí „výkazu výnosu“.
42) Vysvětlete, jaký je rozdíl mezi příkazem put a putc?
Na rozdíl od příkazu puts, který vypíše na obrazovku celý řetězec. Příkaz Putc lze použít k výstupu jednoho znaku po druhém.
43) Vysvětlete, co je knihovna tříd v Ruby?
Knihovny tříd Ruby se skládají z různých domén, jako je programování vláken, datové typy, různé domény atd. Tyto třídy poskytují flexibilní možnosti na vysoké úrovni abstrakce, což vám dává možnost vytvářet výkonné skripty Ruby užitečné v různých problémech domény. Následující domény, které mají relevantní knihovny tříd, jsou:
- Programování GUI
- Síťové programování
- Programování CGI
- Zpracování textu
44) V Ruby to vysvětluje definovaný operátor?
Definovaný operátor říká, zda je předaný výraz definován nebo ne. Pokud výraz není definován, dává hodnotu null, a pokud je výraz definován, vrací popisný řetězec.
45) Uveďte, jaký je rozdíl v rozsahu těchto dvou proměnných: @@name a @name?
Rozdíl v rozsahu těchto dvou proměnných je následující:
- @@name je proměnná třídy
- @name je proměnná instance
46) Uveďte, jaká je syntaxe pro Ruby collect Iterator?
Syntaxe pro Ruby collect Iterator collection = collection.collect.
47) V kódu Ruby je často pozorováno, že kodér používá zkratku výrazu jako řada.map(&:název_metody) místo array.map { |element| element.metoda_name }. Jak tento trik vlastně funguje?
Když je parametr předán s „&“ před ním. Ruby na něm zavolá to_proc ve snaze učinit jej použitelným jako blok. Symbol to_Proc tedy vyvolá metodu odpovídajícího jména na cokoli, co mu bude předáno. Pomáháme tak fungovat našemu těsnopisnému triku.
48) Vysvětlete, co je interpolace v Ruby?
Rubínová interpolace je proces vkládání řetězce do literálu. Umístěním hash (#) do {} otevřených a uzavřených závorek lze interpolovat řetězec do literálu.
49) Uveďte, jaká notace se používá pro označení třídních proměnných v Ruby?
V Ruby,
- Konstanta by měla začínat velkým písmenem a neměla by být definována uvnitř metody
- Místní musí začínat podtržítkem _ nebo malým písmenem
- Globální proměnná by měla začínat znakem $. Neinicializovaný globál má hodnotu „nula“ a měl by zvednout varování. Lze na něj odkazovat kdekoli v programu.
- Proměnná třídy by měla začínat dvojitým @@ a před použitím v definici metody musí být nejprve inicializována
50) Uveďte, jaký je rozdíl mezi procesy a bloky?
Rozdíl mezi procesy a bloky,
- Blok je pouze součástí syntaxe metody, zatímco proc má vlastnosti bloku
- Procesy jsou objekty, bloky nikoli
- V seznamu argumentů se může objevit maximálně jeden blok
- Pouze blok nelze uložit do proměnné, zatímco Proc ano
51) Uveďte, jaký je rozdíl mezi jednoduchou a dvojitou uvozovkou?
Řetězce v jednoduchých uvozovkách nezpracovávají kódy escape ASCII a neprovádějí interpolaci řetězců.
52) Uveďte, jaký je rozdíl mezi drahokamem a pluginem v Ruby?
- Klenot: Drahokam je jen rubínový kód. Je nainstalován na počítači a je k dispozici pro všechny aplikace ruby běžící na tomto počítači.
- Zapojit: Plugin je také rubínový kód, ale je nainstalován ve složce aplikace a je k dispozici pouze pro tuto konkrétní aplikaci.
53) Uveďte, jaký je rozdíl mezi rozšířením a zařazením?
„include“ zpřístupňuje metody modulu instanci třídy, zatímco „extend“ zpřístupňuje tyto metody samotné třídě.
Tyto otázky na pohovoru také pomohou ve vašem životě (ústních)
Výnos není funkce. Je to rubínové klíčové slovo, které se používá pro provádění bloku.
Konkrétně výnos předá řízení vlákna (pravděpodobně Main.thread) bloku, který byl buď předán explicitně jako parametr, tj. def my_method(&my_block) Nebo alternativně mohl být blok předán implicitně, např.
my_class.my_method dělat
# kód v tomto bloku bude předán uvnitř volající metody
konec
moc pěkné...jen tak dál
Skvělý obsah!
v otázce č. 6 v Ruby neexistuje žádná třída „Boolean“, tedy žádný „typ Boolean“. Existuje pouze TrueClass a FalseClass.
Je aktualizován.
dobrý
dobrý
vlastně Thread.main ... moje chyba :)
Ruby není inspirován Pythonem, byl inspirován následujícími (Perl, Smalltalk, Eiffel, Ada, BASIC a Lisp)
Je aktualizován.
to jo…
Pěkný pohled na rubín a kolejnice
6) nil.object_id se rovná 8