Az 53 legjobb Ruby on Rails interjúkérdés és válasz (2025)
Íme a Ruby on Rails interjúk kérdései és válaszai a kezdőknek, valamint a tapasztalt Ruby fejlesztőjelölteknek, hogy megszerezzék álmaik állását.
1) Magyarázza el, mi az a Ruby on Rails?
- Rubin: Ez egy objektum-orientált programozási nyelv, amelyet a PERL, a Smalltalk, az Eiffel, az Ada, a Basic és a Lisp ihlettek.
- sínek: Ez egy keretrendszer, amelyet webes alkalmazások készítésére használnak
2) Magyarázza el, mi az osztálykönyvtár a Rubyban?
A Ruby osztálykönyvtárai számos tartományból állnak, például adattípusokból, szálprogramozásból, különféle tartományokból stb.
Ingyenes PDF letöltés: Ruby on Rails interjúkérdések és válaszok
3) Említse meg, mi az elnevezési konvenció a Railsben?
- Változók: A Változók deklarálásakor minden betű kisbetű, a szavakat aláhúzásjelek választják el
- Osztály és modul: A modulok és osztályok MixedCase-t használnak, és nincs aláhúzásuk; minden szó nagybetűvel kezdődik
- Adatbázis táblázat: Az adatbázis tábla nevének kisbetűket és aláhúzást kell tartalmaznia a szavak között, és minden táblanévnek többes számban kell lennie, például invoice_items
- Modell: Ezt a töretlen MixedCase képviseli, és mindig egyes számban szerepel a tábla nevével
- Vezérlő: A vezérlőosztályok nevei többes számban jelennek meg, így az OrdersController lenne a rendelési tábla vezérlője.
4) Magyarázza el, mi az a „hozam” a Ruby on Rails nyelven?
A kódblokkot fogadó Ruby metódus a „Hozam”-dal hívja meg.
5) Magyarázza el, mi az ORM (Object-Relationship-Model) a Railsben?
Az ORM vagy a Rails objektumkapcsolati modellje azt jelzi, hogy az osztályok az adatbázisban lévő táblához, az objektumok pedig közvetlenül a tábla soraihoz vannak leképezve.
6) Említse meg, mi a különbség a hamis és a nulla Ruby között?
A Rubyban a false a FalseClass objektuma, amely logikai értéket jelent, míg a Nil a NilClass objektuma, amely az érték hiányát jelzi. Objektumazonosítója 4.
7) Említse meg, melyek a sínek pozitív vonatkozásai?
A sínek számos funkciót kínálnak, mint pl
- Meta programozás: A Rails kódgenerálást használ, de a nehéz emeléshez meta-programozásra támaszkodik. A Rubyt az egyik legjobb metaprogramozási nyelvnek tartják.
- Aktív rekord: Objektumot ment az adatbázisba az Active Record Framework segítségével. Az Active Record Rails verziója azonosítja az oszlopot egy sémában, és metaprogramozás segítségével automatikusan hozzárendeli azokat a tartományobjektumokhoz
- Állvány: A sínek képesek automatikusan állványzatot vagy ideiglenes kódot létrehozni
- Egyezmény a konfigurációval kapcsolatban: Más fejlesztési keretekkel ellentétben a Rails nem igényel sok beállítást, ha gondosan követi az elnevezési konvenciót
- Három környezet: A Rails három alapértelmezett környezeti teszteléssel, fejlesztéssel és gyártással rendelkezik.
- Beépített tesztelés: Támogatja a kábelkötegnek nevezett kódot és a fixture-eket, amelyek teszteseteket írnak és hajtanak végre.
8) Magyarázza el, mi a szerepe az alkalmazás/vezérlők és az alkalmazás/segítők alkönyvtárának?
- Alkalmazás/vezérlők: A felhasználó webes kérését a vezérlő kezeli. A vezérlő alkönyvtár az, ahol a Rails vezérlőosztályokat keres
- Alkalmazás/segítők: A helper alkönyvtára tartalmazza a nézet, a modell és a vezérlő osztályok segítésére használt segédosztályokat.
9) Említse meg, mi a különbség a karakterlánc és a szimbólum között?
Mindketten ugyanúgy cselekszenek, csak a viselkedésükben különböznek, amelyek ellentétesek egymással. A különbség az object_id, a memória és a folyamathangolásban rejlik, ha együtt használják őket. A szimbólum a megváltoztathatatlan objektumok kategóriájába tartozik, míg a karakterláncok változtatható objektumok.
10) Magyarázza el, miben különbözik a szimbólum a változóktól?
A szimbólum a következő szempontokban különbözik a változóktól
- Inkább karakterláncra hasonlít, mint változóra
- A Rubyban a karakterlánc változtatható, de a szimbólum változatlan
- A szimbólumból csak egy példányt kell létrehozni
- A szimbólumokat gyakran használják a rubin enumjainak megfelelőjeként
11) Magyarázza el, mi az a Rails Active Record a Ruby on Rails nyelven?
A Rails aktív rekord a Railshez mellékelt objektum/relációs leképezés (ORM) réteg. A szabványos ORM modellt követi, mint
- táblázat térkép osztályokhoz
- A sorok objektumokhoz rendelhetők
- Az oszlopok az objektum attribútumaira vannak leképezve
12) Magyarázza el, hogyan valósítja meg a Rails Ajax?
Az Ajax által működtetett weboldal lekéri a weblapot a szerverről, amely új vagy megváltozott, ellentétben más weboldalakkal, ahol frissítenie kell az oldalt a legfrissebb információk eléréséhez.
A Rails a következő módokon indítja el az Ajax műveletet
- Néhány tüzet kiváltó: Az eseményindító lehet az, hogy a felhasználó rákattint egy linkre vagy gombra, és a felhasználók megváltoztatják a mezőben vagy egy űrlapon lévő adatokat.
- A webkliens hívja a szervert: A Java-script metódus, az XMLHttpRequest, az eseményindítóhoz kapcsolt adatokat küldi el a kiszolgálón lévő műveletkezelőnek. Az adat lehet egy jelölőnégyzet azonosítója, a teljes űrlap vagy a beviteli mező szövege
- A szerver feldolgozza: A szerveroldali műveletkezelő csinál valamit az adatokkal, és lekér egy HTML töredék a webkliensre
- Az ügyfél a következő választ kapja: Az ügyféloldali JavaScript, amelyet a Rails automatikusan generál, megkapja a HTML töredéket, és azt használja az aktuális
13) Említse meg, hogyan hozhat létre vezérlőt a tárgyhoz?
A tárgyhoz tartozó vezérlő létrehozásához használhatja a következő parancsot
C:\ruby\library> ruby script/vezérlő tárgy létrehozása
14) Említse meg, mi az a Rails Migration?
A Rails Migration lehetővé teszi a Ruby számára, hogy módosítsa az adatbázissémát, lehetővé téve a verziókezelő rendszer használatát, hogy a dolgokat szinkronban hagyja a tényleges kóddal.
15) Sorolja fel, mire képes a Rails Migration?
A Rails Migration a következő dolgokat teheti meg
- Táblázat létrehozása
- Drop asztal
- Táblázat átnevezése
- Oszlop hozzáadása
- Oszlop átnevezése
- Oszlop módosítása
- Távolítsa el az oszlopot és így tovább
16) Említse meg, mi a parancs az áttelepítés létrehozásához?
Az áttelepítés létrehozásához parancs tartalmazza
C:\ruby\application>ruby script/generáljon migrációs tábla_neve
17) Magyarázza el, mikor használják a self.up és self.down módszert?
Amikor áttér egy új verzióra, self.up módszert alkalmazzák, míg self.down módszert használjuk a változtatások visszaállítására, ha szükséges.
18) Említse meg, mi a Rails Controller szerepe?
A Rails vezérlő az alkalmazás logikai központja. Megkönnyíti a felhasználók, nézetek és a modell közötti interakciót. Más tevékenységeket is végez, mint pl
- Képes a külső kéréseket belső műveletekhez irányítani. Nagyon jól kezeli az URL-t
- Szabályozza a segédmodulokat, amelyek kiterjesztik a nézetsablonok képességeit anélkül, hogy a kódjukat tömegesen növelnék.
- Szabályozza a foglalkozásokat; amely azt a benyomást kelti a felhasználókban, hogy folyamatosan interakcióba lépnek alkalmazásainkkal
19) Említse meg, mi a különbség az Active Support „HashWithIndifferent” és a Ruby „Hash” között?
A Hash osztály a Ruby központi könyvtárában egy szabvány használatával ad vissza értéket "= =" összehasonlítás a kulcsokon. Ez azt jelenti, hogy a tárolt érték a szimbólum kulcs nem kérhető le az egyenértékű karakterlánc használatával. Amíg a HashIndifferentAccess a szimbólumbillentyűket és a karakterlánc-billentyűket egyenértékűként kezeli.
20) Magyarázza el, mi az a Cross-Site Request Forgery (CSRF), és hogyan védi a Rails ellene?
A CSRF a támadás egy olyan formája, amikor a hacker oldalkérést küld az Ön nevében egy másik webhelyre, ezzel kárt okozva vagy felfedve érzékeny adatait. A CSRF-támadások elleni védelem érdekében hozzá kell adnia „védelem_a hamisítástól” a ApplicationController. Ez azt eredményezi, hogy a Rails CSRF-jogkivonatot igényel a kérelem feldolgozásához. A CSRF token rejtett mezőként van megadva minden Rails űrlapkészítővel létrehozott űrlapon.
21) Magyarázza el, mi az a Mixin in Rails?
A Mixin in Ruby alternatívát kínál a többszörös öröklődés helyett, a mixin modulok más osztályba importálhatók.
22) Magyarázza el, hogyan határozza meg a példányváltozót, a globális változót és az osztályváltozót a Rubyban?
- A Ruby Instance változó a következővel kezdődik: @
- A Ruby osztály változói a következővel kezdődnek: @@
- A Ruby Global változók a következővel kezdődnek: $
23) Magyarázza el, hogyan futtathatja a Rails alkalmazást adatbázisok létrehozása nélkül?
Az alkalmazást a környezet.rb sor megjegyzésének törlésével hajthatja végre
path=> rootpath conf/environment.rb
config.frameworks = [ action_web_service, :action_mailer, :active_record]
24) Említse meg, mi a különbség a megfigyelők és a visszahívások között a Ruby on Railsben?
- A sínek megfigyelői: Az Observers ugyanaz, mint a visszahívás, de akkor használják, ha a metódus nincs közvetlenül társítva az objektum életciklusához. Ezenkívül a megfigyelő tovább él, és bármikor leválasztható vagy csatlakoztatható. Például egy modell értékeinek megjelenítése a felhasználói felületen és a modell frissítése a felhasználói bevitel alapján.
- Rails visszahívás: A visszahívások olyan metódusok, amelyek egy objektum életciklusának bizonyos pillanataiban hívhatók meg, például akkor hívható meg, amikor egy objektumot érvényesítenek, létrehoznak, frissítenek, törölnek. A visszahívás rövid életű. Például egy szál futtatása és egy visszahívás, amely a szál befejezésekor hívódik meg
25) Magyarázza el, mi az a rake a Railsben?
A rake Ruby gyártmányú; ez egy Ruby segédprogram, amely a „make” Unix segédprogramot helyettesíti, és „Rakefile” és „.rake fájlok” segítségével állítja össze a feladatok listáját. A Railsben a Rake-et olyan normál adminisztrációs feladatokhoz használják, mint az adatbázis áttelepítése parancsfájlokon keresztül, séma betöltése az adatbázisba stb.
26) Magyarázza el, hogyan listázhatja ki az összes útvonalat egy alkalmazáshoz?
Egy alkalmazás összes útvonalának listázásához írhat rake útvonalakat a terminálba.
27) Magyarázza el, mi az a seprő a Railsben?
A seprők felelősek a gyorsítótárak lejáratáért vagy megszüntetéséért, ha a modellobjektum megváltozik.
28) Említse meg a naplót, amelyet látni kell a Ruby Rails hibáinak jelentéséhez?
A Rails az Apache hibáit a log/Apache.log fájlban, a Ruby kód hibáit pedig a log/development.log fájlban jelenti.
29) Magyarázza el, mi a különbség a dinamikus és a statikus állványzat között?
Dinamikus állványzat | Statikus állványzat |
|
|
30) Említse meg, mi a funkciója a szemétgyűjtésnek a Ruby on Railsben?
A Ruby on Rails szemétgyűjtési funkciói közé tartozik
- Lehetővé teszi a programvégrehajtás végén hátramaradt mutatóértékek eltávolítását
- Megszabadítja a programozót attól, hogy futás közben dinamikusan kövesse nyomon a készülő objektumot
- Ez azt az előnyt nyújtja, hogy eltávolítja a nem elérhető objektumokat a memóriából, és lehetővé teszi más folyamatok számára a memória használatát
31) Említse meg, mi a különbség az átirányítás és a renderelés között a Ruby on Railsben?
- Az átirányítás egy módszer, amellyel hibaüzenetet küldenek, ha az oldalt nem adják ki vagy nem találják meg a böngészőnek. Azt mondja a böngészőnek, hogy dolgozzon fel és adjon ki új kérést.
- A render a tartalom létrehozására használt módszer. A renderelés csak akkor működik, ha a vezérlő megfelelően van beállítva a megjelenítendő változókkal.
32) Említse meg, mi a célja az RJ-knek a Railsben?
Az RJs egy JavaScriptet előállító sablon, amelyet egy eval blokkban futtat a böngésző válaszul egy AJAX kérésre. Néha a Rails által biztosított JavaScript, prototípus és segédprogramok meghatározására használják.
33) Magyarázza el, mi az a polimorf társulás a Ruby on Rails nyelven?
A polimorf társítás lehetővé teszi, hogy egy ActiveRecord objektumot több ActiveRecord objektumhoz kapcsolódjon. A Polymorphic Association tökéletes példája egy közösségi oldal, ahol a felhasználók bárhol hozzászólhatnak, legyen szó videókról, fényképekről, linkekről, állapotfrissítésekről stb. Nem lenne kivitelezhető, ha egyéni megjegyzést kellene létrehoznia, például photos_comments, videos_comment stb. .
34) Említse meg, mik a Ruby on Rails korlátai?
A Ruby on Rails egy CRUD webalkalmazás MVC használatával történő létrehozására készült. Emiatt előfordulhat, hogy a Rails nem használható más programozók számára. Néhány olyan szolgáltatás, amelyet a Rails nem támogat
- Idegen kulcs az adatbázisokban
- Kapcsolódás több adatbázishoz egyszerre
- Szappan webszolgáltatások
- Csatlakozás több adatbázis-kiszolgálóhoz egyszerre
35) Említse meg, mi a különbség a szuper() és a szuperhívás hívása között?
- szuper(): A super() hívása a szülő metódusát minden argumentum nélkül hívja meg, ahogyan az várható volt. Mint mindig, most is jó dolog kifejezni a kódot.
- szuper hívás: A super hívása a szülő metódusot ugyanazokkal az argumentumokkal hívja meg, mint amelyeket a gyermek metódusnak adtak át. Ezért hiba lép fel, ha a gyermek metódusnak átadott argumentumok nem egyeznek meg a szülő elvárásával.
36) Magyarázza el a Dig, Float és Max?
- A float osztályt akkor használjuk, amikor a függvény folyamatosan változik.
- A Dig akkor használatos, amikor egy lebegőpontot decimális számjegyekkel kíván ábrázolni.
- A Max-ot akkor használják, amikor nagy szükség van a Float-ra.
37) Magyarázza el, hogyan definiálhatunk Ruby reguláris kifejezéseket?
A Ruby reguláris kifejezés egy speciális karaktersorozat, amely segít más karakterláncok egyeztetésében vagy megtalálásában. A reguláris kifejezés literál egy tetszőleges határoló vagy perjel közötti minta, amelyet %r követ.
38) Magyarázza el, mi a definiált operátor?
A Define operátor megadja, hogy egy átadott kifejezés definiálva van-e vagy sem. Ha a kifejezés definiálva van, akkor a leíró karakterláncot adja vissza, és ha nincs definiálva, akkor null értéket ad vissza.
39) Sorolja fel a Ruby néhány funkcióját?
- Szabad formátum – Bármely sorból és oszlopból elkezdheti az írást a programból
- Kis- és nagybetűk megkülönböztetése – A kis- és nagybetűk különböznek egymástól
- Megjegyzések – Bármi, amit egy idézetlen jel követ #, annak a sornak a végéig, amelyen megjelenik, a tolmács figyelmen kívül hagyja
- Utasításhatárolók – Az egy sorban lévő több utasítást pontosvesszővel kell elválasztani, de nem kötelező a sor végén.
40) Említse meg a Ruby osztályban elérhető változók típusait?
A Ruby osztályban elérhető változók típusai:
- Helyi változók
- Globális változók
- Osztályváltozók
- Példányváltozók
41) Magyarázza el, hogyan deklarálhat blokkot Rubyban?
A Rubyban a blokkban lévő kód mindig kapcsos zárójelek közé ({}) kerül. A blokkot a „hozamkimutatás” használatával hívhatja meg.
42) Magyarázza el, mi a különbség a put és putc utasítás között?
Ellentétben a puts utasítással, amely a teljes karakterláncot kiírja a képernyőre. A Putc utasítással egyszerre egy karaktert lehet kiadni.
43) Magyarázza el, mi az osztálykönyvtár Rubyban?
A Ruby osztálykönyvtárak számos tartományból állnak, mint például szálprogramozás, adattípusok, különféle tartományok stb. Ezek az osztályok rugalmas képességeket biztosítanak az absztrakció magas szintjén, lehetővé téve hatékony Ruby szkriptek létrehozását, amelyek különféle problémák esetén hasznosak. domainek. A következő tartományok, amelyek releváns osztálykönyvtárakkal rendelkeznek, a következők:
- GUI programozás
- Hálózati programozás
- CGI programozás
- Szövegfeldolgozás
44) A Rubyban a definiált operátort magyarázza?
A definiált operátor megmondja, hogy egy átadott kifejezés definiálva van-e vagy sem. Ha a kifejezés nincs definiálva, nullát ad, és ha a kifejezés definiált, akkor a leírási karakterláncot adja vissza.
45) Említse meg, mi a különbség a két változó hatókörében: @@name és @name?
A két változó hatókörének különbsége a következő:
- A @@név egy osztályváltozó
- A @name egy példányváltozó
46) Említse meg, mi a Ruby collection Iterator szintaxisa?
A Ruby collection szintaxisa Iterator collection = collection.collect.
47) A Ruby kódban gyakran megfigyelhető, hogy a kódoló egy rövid kéz formát használ az olyan kifejezések használatára, mint pl sor.map(&:method_name) a tömb helyett.map { |elem| elem.method_name }. Hogyan működik ez a trükk valójában?
Amikor egy paramétert „&” jellel adunk át. A Ruby meghívja rajta a to_proc parancsot, hogy blokkként használhatóvá tegye. Tehát a to_Proc szimbólum a megfelelő név metódusát fogja hívni, bármit is, amit átadnak neki. Ezzel segítve a gyorsírási trükkünk működését.
48) Magyarázza el, mi az interpoláció rubinban?
A rubininterpoláció egy karakterlánc literálba történő beillesztésének folyamata. Ha egy Hash-t (#) teszünk a {} nyitott és záró zárójelek közé, egy karakterláncot interpolálhatunk a literálba.
49) Említse meg, mi az osztályváltozók jelölésére használt jelölés a Ruby nyelvben?
Rubyban,
- A konstansnak nagybetűvel kell kezdődnie, és nem szabad metóduson belül meghatározni
- A helyi karakternek _ aláhúzásjellel vagy kisbetűvel kell kezdődnie
- A globális változónak $ jellel kell kezdődnie. Egy inicializálatlan globális értéke „nulla”, és ennek kellene lennie emel egy figyelmeztetés. Bárhol hivatkozhat rá a programban.
- Az osztályváltozóknak dupla @@ karakterrel kell kezdődniük, és először inicializálni kell, mielőtt a metódusdefinícióban használnák
50) Említse meg, mi a különbség a Procs és a Block között?
A Procs és a Block közötti különbség,
- A blokk csak egy része a módszer szintaxisának, míg a proci a blokk jellemzőivel rendelkezik
- A procik tárgyak, a blokkok nem
- Legfeljebb egy blokk jelenhet meg egy argumentumlistában
- Csak a blokk nem tárolható változóban, míg a Proc igen
51) Említse meg, mi a különbség az egy- és a kettős idézőjel között?
Az egy idézőjeles karakterláncok nem dolgozzák fel az ASCII escape kódokat, és nem végeznek karakterlánc-interpolációt.
52) Említse meg, mi a különbség a drágakő és a Ruby beépülő modulja között?
- Drágakő: A drágakő csak egy rubin kód. Telepítve van egy gépre, és elérhető az összes azon a gépen futó ruby alkalmazáshoz.
- Plugin: A beépülő modul szintén rubinkód, de az alkalmazás mappájába van telepítve, és csak az adott alkalmazáshoz érhető el.
53) Említse meg, mi a különbség a kiterjesztése és a belefoglalása között?
Az „include” a modul metódusait elérhetővé teszi egy osztály példánya számára, míg az „extend” ezeket a metódusokat magának az osztálynak teszi elérhetővé.
Ezek az interjúkérdések a viva-ban is segítenek.
A hozam nem funkció. Ez egy rubin kulcsszó, amelyet a blokk végrehajtására használnak.
A hozam konkrétan átadja a szál vezérlését (legvalószínűbb a Main.thread) annak a blokknak, amelyet vagy kifejezetten paraméterként adtak át, pl. def my_method(&my_block), vagy pedig egy blokkot implicit módon is átadhattak volna, mint pl.
my_class.my_method do
Ebben a blokkban # kód kerül átadásra a hívó metóduson belül
végén
nagyon szép… csak így tovább
Remek tartalom!
A 6. kérdésnél a Rubyban nincs „Boole” osztály, ezért nincs „Boole-típus”. Csak a TrueClass és a FalseClass létezik.
Frissítve van.
Jó
jó
igazából Thread.main… én rossz :)
A Rubyt nem a Python ihlette, a következők ihlették (Perl, Smalltalk, Eiffel, Ada, BASIC és Lisp)
Frissítve van.
igen…
Szép pillantás a rubinra és a sínekre
6) a nil.object_id egyenlő a 8-cal