Top 53 de întrebări și răspunsuri la interviu Ruby on Rails (2025)
Iată întrebările și răspunsurile la interviu Ruby on Rails pentru cei în curs de dezvoltare, precum și pentru candidații cu experiență pentru dezvoltatori Ruby pentru a obține jobul visat.
1) Explicați ce este Ruby on Rails?
- Rubin: Este un limbaj de programare orientat pe obiecte inspirat de PERL, Smalltalk, Eiffel, Ada, Basic și Lisp.
- Șine: Este un cadru folosit pentru construirea de aplicații web
2) Explicați ce sunt bibliotecile de clasă în Ruby?
Bibliotecile de clasă din Ruby constau dintr-o varietate de domenii, cum ar fi tipuri de date, programare fir, diverse domenii etc.
Descărcare PDF gratuită: Întrebări și răspunsuri la interviu Ruby on Rails
3) Menționați care este convenția de denumire în Rails?
- Variabile: Pentru declararea variabilelor, toate literele sunt litere mici, iar cuvintele sunt separate prin litere de subliniere
- Clasa si modul: Modulele și Clasele utilizează MixedCase și nu au caracter de subliniere; fiecare cuvânt începe cu o literă mare
- Tabel baza de date: Numele tabelului bazei de date ar trebui să aibă litere mici și liniuță de subliniere între cuvinte, iar toate numele de tabel trebuie să fie la plural, de exemplu invoice_items
- Model: Este reprezentat de MixedCase neîntrerupt și are întotdeauna singular cu numele tabelului
- Controlor: Numele claselor de controler sunt reprezentate la plural, astfel încât OrdersController ar fi controlerul pentru tabelul de comenzi.
4) Explicați ce este „Randamentul” în Ruby on Rails?
O metodă Ruby care primește un bloc de cod îl invocă apelându-l cu „Randament”.
5) Explicați ce este ORM (Object-Relationship-Model) în Rails?
ORM sau Object Relationship Model în Rails indică faptul că clasele dumneavoastră sunt mapate la tabelul din baza de date, iar obiectele sunt mapate direct la rândurile din tabel.
6) Menționați care este diferența dintre fals și nul în Ruby?
În Ruby, false este un obiect din FalseClass pentru a reprezenta o valoare booleană, în timp ce Nil este un obiect al NilClass care indică absența unei valori. Are un object_id 4.
7) Menționați care sunt aspectele pozitive ale Rails?
Rails oferă multe caracteristici, cum ar fi
- Meta-programare: Rails folosește generarea de cod, dar pentru ridicarea greutății se bazează pe meta-programare. Ruby este considerat unul dintre cele mai bune limbaje pentru metaprogramare.
- Înregistrare activă: Salvează obiectul în baza de date prin Active Record Framework. Versiunea Rails a Active Record identifică coloana într-o schemă și le leagă automat la obiectele domeniului dvs. folosind metaprogramarea
- Schele: Șinele au capacitatea de a crea automat schele sau cod temporar
- Convenție asupra configurației: Spre deosebire de alte cadru de dezvoltare, Rails nu necesită multă configurare, dacă urmați cu atenție convenția de denumire
- Trei medii: Rails vine cu trei mediu implicit de testare, dezvoltare și producție.
- Testare încorporată: Acesta acceptă codul numit cablaj și dispozitive de fixare care fac ca cazuri de testare să fie scrise și executate.
8) Explicați care este rolul subdirectorului aplicație/controlere și aplicație/ajutor?
- Aplicație/controlere: o solicitare web din partea utilizatorului este gestionată de controler. Subdirectorul controler este locul în care Rails caută să găsească clase de controler
- Aplicație/ajutoare: subdirectorul ajutorului conține orice clase de ajutor utilizate pentru a asista clasele de vizualizare, model și controler.
9) Menționați care este diferența dintre String și Symbol?
Amândoi acționează în același mod, doar că diferă în comportamentele lor, care sunt opuse unul altuia. Diferența constă în object_id, memorie și tonul de proces atunci când sunt utilizate împreună. Simbolul aparține categoriei de obiecte imuabile, în timp ce șirurile sunt considerate obiecte mutabile.
10) Explicați cum este diferit simbolul de variabile?
Simbolul este diferit de variabile în următoarele aspecte
- Este mai mult ca un șir decât variabil
- În Ruby șirul este mutabil, dar un simbol este imuabil
- Trebuie creată o singură copie a simbolului
- Simbolurile sunt adesea folosite ca corespunzătoare enumărilor în Ruby
11) Explicați ce este Rails Active Record în Ruby on Rails?
Înregistrarea activă Rails este stratul Object/Relational Mapping (ORM) furnizat cu Rails. Urmează modelul standard ORM ca
- Harta tabelului la clase
- Rândurile se mapează la obiecte
- Coloanele se mapează la atributele obiectului
12) Explicați cum se implementează Rails Ajax?
Pagina web alimentată cu Ajax preia pagina web de pe server, care este nouă sau schimbată, spre deosebire de alte pagini web în care trebuie să reîmprospătați pagina pentru a obține cele mai recente informații.
Rails declanșează o operațiune Ajax în următoarele moduri
- Câteva incendii declanșatoare: Declanșatorul ar putea fi un utilizator care face clic pe un link sau pe un buton, utilizatorii inducând modificări ale datelor din câmp sau dintr-un formular
- Clientul web apelează serverul: O metodă Java-script, XMLHttpRequest, trimite date legate de declanșator către un handler de acțiuni de pe server. Datele pot fi ID-ul unei casete de selectare, întregul formular sau textul din câmpul de introducere
- Serverul procesează: Managerul de acțiuni din partea serverului face ceva cu datele și preia un HTML fragment către clientul web
- Clientul primește răspunsul: JavaScript partea client, pe care Rails îl generează automat, primește fragmentul HTML și îl folosește pentru a actualiza o anumită parte a actualului
13) Menționați cum puteți crea un controler pentru subiect?
Pentru a crea un controler pentru subiect, puteți folosi următoarea comandă
C:\ruby\library> ruby script/generate controller subject
14) Menționați ce este Rails Migration?
Rails Migration îi permite lui Ruby să facă modificări în schema bazei de date, făcând posibilă utilizarea unui sistem de control al versiunilor pentru a lăsa lucrurile sincronizate cu codul real.
15) Enumerați ce poate face Rails Migration?
Rails Migration poate face următoarele lucruri
- Creați tabel
- Aruncă masa
- Redenumiți tabelul
- Adăugați coloana
- Redenumiți coloana
- Schimbați coloana
- Eliminați coloana și așa mai departe
16) Menționați care este comanda pentru a crea o migrare?
Pentru a crea o comandă de migrare include
C:\ruby\application>ruby script/generate migration table_name
17) Explicați când se utilizează metoda self.up și self.down?
La migrarea la o versiune nouă, sine.sus metoda este folosită în timp ce sine.jos metoda este folosită pentru a anula modificările mele, dacă este necesar.
18) Menționați care este rolul Rails Controller?
Controlerul Rails este centrul logic al aplicației. Facilitează interacțiunea dintre utilizatori, vizualizări și model. Desfășoară și alte activități precum
- Este capabil să direcționeze cererile externe către acțiuni interne. Se ocupă de URL-ul extrem de bine
- Reglează modulele de ajutor, care extind capacitățile șabloanelor de vizualizare fără a-și amplifica codul
- Reglează sesiunile; care oferă utilizatorilor impresia unei interacțiuni continue cu aplicațiile noastre
19) Menționați care este diferența dintre „HashWithIndifferent” al suportului activ și „Hash” al lui Ruby?
Hașiș clasa din biblioteca de bază a lui Ruby returnează valoare folosind un standard „= =” comparație pe taste. Înseamnă că valoarea stocată pentru a simbol cheia nu poate fi preluată folosind șirul echivalent. În timp ce HashWithIndifferentAccess tratează cheile simbol și cheile șir ca echivalente.
20) Explicați ce este falsificarea cererilor încrucișate (CSRF) și cum este protejată Rails împotriva acesteia?
CSRF este o formă de atac în care hackerul trimite o solicitare de pagină în numele tău către un alt site web, provocând daune sau dezvăluind datele tale sensibile. Pentru a vă proteja de atacurile CSRF, trebuie să adăugați „protejați_de_fals” de dvs. ApplicationController. Acest lucru va face ca Rails să solicite un jeton CSRF pentru a procesa cererea. Tokenul CSRF este dat ca un câmp ascuns în fiecare formular creat folosind generatorii de formulare Rails.
21) Explicați ce este Mixin in Rails?
Mixin în Ruby oferă o alternativă la moștenirile multiple, folosind module mixin putând fi importate în altă clasă.
22) Explicați cum definiți variabila de instanță, variabila globală și variabila de clasă în Ruby?
- Variabila de instanță Ruby începe cu — @
- Variabilele clasei Ruby încep cu — @@
- Variabilele globale Ruby încep cu — $
23) Explicați cum puteți rula aplicația Rails fără a crea baze de date?
Vă puteți executa aplicația prin decomentarea liniei din environment.rb
cale => rootpath conf/environment.rb
config.frameworks = [ action_web_service, :action_mailer, :active_record]
24) Menționați care este diferența dintre observatori și apeluri în Ruby on Rails?
- Observatori de șine: Observers este același cu Callback, dar este folosit atunci când metoda nu este direct asociată cu ciclul de viață al obiectului. De asemenea, observatorul trăiește mai mult și poate fi detașat sau atașat în orice moment. De exemplu, afișarea valorilor dintr-un model în interfața de utilizare și actualizarea modelului din datele introduse de utilizator.
- Rails de apel invers: Callback-urile sunt metode, care pot fi apelate în anumite momente ale ciclului de viață al unui obiect, de exemplu, pot fi apelate atunci când un obiect este validat, creat, actualizat, șters. Un apel invers este de scurtă durată. De exemplu, rularea unui thread și oferirea unui apel invers care este apelat când firul se termină
25) Explicați ce este grebla în șine?
Rake este un Ruby Make; este un utilitar Ruby care înlocuiește utilitarul Unix „make” și folosește „Rakefile” și „.rake files” pentru a construi o listă de sarcini. În Rails, Rake este folosit pentru sarcini normale de administrare, cum ar fi migrarea bazei de date prin scripturi, încărcarea unei scheme în baza de date etc.
26) Explicați cum puteți enumera toate rutele pentru o aplicație?
Pentru a lista toate rutele pentru o aplicație, puteți scrie rute de rake în terminal.
27) Explicați ce este măturător în Rails?
Sweepers sunt responsabili pentru expirarea sau terminarea cache-urilor atunci când obiectul modelului se modifică.
28) Menționați jurnalul care trebuie văzut pentru a raporta erori în Ruby Rails?
Rails va raporta erorile de la Apache în log/Apache.log și erorile din codul Ruby în log/development.log.
29) Explicați care este diferența dintre schelele dinamice și statice?
Schele dinamice | Schele statice |
|
|
30) Menționați care este funcția colectării gunoiului în Ruby on Rails?
Funcțiile de colectare a gunoiului în Ruby on Rails includ
- Acesta permite eliminarea valorilor pointerului care sunt lăsate în urmă când execuția programului se termină
- Eliberează programatorul de urmărirea obiectului care este creat dinamic în timpul execuției
- Oferă avantajul eliminării obiectelor inaccesibile din memorie și permite altor procese să utilizeze memoria
31) Menționați care este diferența dintre redirecționare și randare în Ruby on Rails?
- Redirecționarea este o metodă care este utilizată pentru a emite mesajul de eroare în cazul în care pagina nu este emisă sau găsită în browser. Spune browserului să proceseze și să emită o nouă solicitare.
- Redarea este o metodă folosită pentru a crea conținutul. Redarea funcționează numai atunci când controlerul este configurat corespunzător cu variabilele care trebuie redate.
32) Menționați care este scopul RJ-urilor în Rails?
RJs este un șablon care produce JavaScript, care este rulat într-un bloc de evaluare de către browser ca răspuns la o solicitare AJAX. Este uneori folosit pentru a defini JavaScript, Prototype și ajutoarele furnizate de Rails.
33) Explicați ce este asocierea polimorfă în Ruby on Rails?
Asocierea polimorfă permite unui obiect ActiveRecord să fie conectat cu mai multe obiecte ActiveRecord. Un exemplu perfect de Polymorphic Association este un site social unde utilizatorii pot comenta oriunde, indiferent dacă este vorba despre videoclipuri, fotografii, linkuri, actualizări de stare etc. Nu ar fi fezabil dacă trebuie să creați un comentariu individual, cum ar fi photos_comments, videos_comment și așa mai departe. .
34) Menționați care sunt limitele Ruby on Rails?
Ruby on Rails a fost conceput pentru a crea o aplicație web CRUD folosind MVC. Acest lucru ar putea face Rails să nu fie util pentru alți programatori. Unele dintre funcțiile pe care Rails nu le acceptă includ
- Cheie străină în baze de date
- Conectarea la mai multe baze de date simultan
- Servicii web de săpun
- Conexiune la mai multe servere de baze de date simultan
35) Menționați care este diferența dintre apelarea super() și super call?
- super(): Un apel la super() invocă metoda părinte fără niciun argument, așa cum se presupune că era de așteptat. Ca întotdeauna, să fii explicit în codul tău este un lucru bun.
- super apel: Un apel la super invocă metoda părinte cu aceleași argumente care au fost transmise metodei copil. Prin urmare, va apărea o eroare dacă argumentele transmise metodei copil nu se potrivesc cu ceea ce se așteaptă părintele.
36) Explicați despre Dig, Float și Max?
- Clasa Float este folosită ori de câte ori funcția se schimbă constant.
- Dig este folosit ori de câte ori doriți să reprezentați un float în cifre zecimale.
- Max este folosit ori de câte ori există o mare nevoie de Float.
37) Explicați cum putem defini expresiile regulate Ruby?
Expresia regulată Ruby este o secvență specială de caractere care vă ajută să potriviți sau să găsiți alte șiruri. O expresie regulată literală este un model între delimitatori arbitrari sau bare oblice urmate de %r.
38) Explicați care este operatorul definit?
Operatorul Define afirmă dacă o expresie transmisă este definită sau nu. Dacă expresia este definită, returnează șirul de descriere și dacă nu este definită returnează o valoare nulă.
39) Enumerați câteva caracteristici ale Ruby?
- Format gratuit – Puteți începe să scrieți din program din orice linie și coloană
- Sensiție la majuscule – Literele mari și mici sunt distincte
- Comentarii – Orice urmat de un necotat #, până la sfârșitul rândului pe care apare, este ignorat de interpret
- Delimitatori de instrucțiuni - Mai multe instrucțiuni de pe o linie trebuie separate prin punct și virgulă, dar nu sunt necesare la sfârșitul unei linii.
40) Menționați tipurile de variabile disponibile în Ruby Class?
Tipurile de variabile disponibile în Ruby Class sunt:
- Variabile locale
- Variabile globale
- Variabile de clasă
- Variabile de instanta
41) Explicați cum puteți declara un bloc în Ruby?
În Ruby, codul din bloc este întotdeauna cuprins între acolade ({}). Puteți invoca un bloc folosind „instrucțiunea de randament”.
42) Explicați care este diferența dintre declarația put și putc?
Spre deosebire de instrucțiunea puts, care scoate întregul șir pe ecran. Instrucțiunea Putc poate fi folosită pentru a scoate câte un caracter la un moment dat.
43) Explicați ce este o bibliotecă de clasă în Ruby?
Bibliotecile de clase Ruby constau dintr-o varietate de domenii, cum ar fi programarea firelor, tipuri de date, diferite domenii etc. Aceste clase oferă capabilități flexibile la un nivel ridicat de abstractizare, oferindu-vă posibilitatea de a crea scripturi Ruby puternice utile într-o varietate de probleme. domenii. Următoarele domenii care au biblioteci de clase relevante sunt:
- Programare GUI
- Programare în rețea
- Programare CGI
- Prelucrarea textului
44) În Ruby, explică despre operatorul definit?
Operatorul definit spune dacă o expresie transmisă este definită sau nu. Dacă expresia nu este definită, dă null, iar dacă expresia este definită returnează șirul de descriere.
45) Menționați care este diferența în domeniul de aplicare pentru aceste două variabile: @@name și @name?
Diferența în domeniul de aplicare pentru aceste două variabile este aceea că:
- @@name este o variabilă de clasă
- @name este o variabilă de instanță
46) Menționați care este sintaxa pentru Ruby collect Iterator?
Sintaxa pentru Ruby collect Iterator collection = collection.collect.
47) În codul Ruby, adesea se observă că codificatorul folosește o formă scurtă de utilizare a unei expresii precum mulțime.map(&:method_name) în loc de array.map { |element| element.nume_metodă }. Cum funcționează de fapt acest truc?
Când un parametru este transmis cu „&” în fața lui. Ruby va apela to_proc pe el în încercarea de a-l face utilizabil ca bloc. Deci, simbolul to_Proc va invoca metoda numelui corespunzător pe orice i se trece. Ajutând astfel trucul nostru de stenografie să funcționeze.
48) Explicați ce este interpolarea în Ruby?
Interpolarea Ruby este procesul de inserare a unui șir într-un literal. Prin plasarea unui Hash (#) în {} paranteze deschise și închise, se poate interpola un șir în literal.
49) Menționați care este notația folosită pentru a denota variabilele de clasă în Ruby?
În Ruby,
- O constantă ar trebui să înceapă cu o literă mare și nu ar trebui să fie definită în interiorul unei metode
- Un local trebuie să înceapă cu semnul de subliniere _ sau cu o literă mică
- O variabilă globală ar trebui să înceapă cu semnul $. O globală neinițializată are valoarea „nul” și ar trebui ridica un avertisment. Poate fi referit oriunde în program.
- O variabilă de clasă ar trebui să înceapă cu dublu @@ și trebuie mai întâi inițializată înainte de a fi utilizată într-o definiție de metodă
50) Menționați care este diferența dintre Procs și Blocks?
Diferența dintre Procs și Blocks,
- Block este doar o parte din sintaxa unei metode, în timp ce proc are caracteristicile unui bloc
- Procesele sunt obiecte, blocurile nu
- Cel mult un bloc poate apărea într-o listă de argumente
- Numai blocul nu poate fi stocat într-o variabilă în timp ce Proc poate
51) Menționați care este diferența dintre ghilimele simple și ghilimele duble?
Șirurile cu ghilimele simple nu procesează codurile de escape ASCII și nu fac interpolarea șirurilor.
52) Menționați care este diferența dintre o bijuterie și un plugin în Ruby?
- Bijuterie: O bijuterie este doar un cod rubin. Este instalat pe o mașină și este disponibil pentru toate aplicațiile Ruby care rulează pe acea mașină.
- Plugin: Pluginul este, de asemenea, cod ruby, dar este instalat în folderul aplicației și este disponibil numai pentru aplicația respectivă.
53) Menționați care este diferența extinde și include?
„include” face metodele modulului disponibile pentru instanța unei clase, în timp ce „extend” face aceste metode disponibile pentru clasa în sine.
Aceste întrebări de interviu vă vor ajuta, de asemenea, în viva (orale)
Randamentul nu este funcție. Este cuvântul cheie ruby care este folosit pentru executarea blocului.
În mod specific, yield va transmite controlul firului de execuție (Main.thread cel mai probabil) blocului care a fost fie trecut în mod explicit ca parametru, adică def my_method(&my_block) Sau, alternativ, un bloc ar fi putut fi trecut implicit, cum ar fi
clasa_mea.metoda_mea face
# codul din acest bloc va fi transmis în interiorul metodei de apelare
capăt
foarte frumos... ține-o tot așa
Conținut grozav!
la întrebarea #6, în Ruby, nu există nicio clasă „Boolean”, deci nu există „Tip boolean”. Există doar TrueClass și FalseClass.
Este actualizat.
Bun
bine
de fapt Thread.main... răul meu :)
Ruby nu este inspirat de Python, a fost inspirat de următoarele (Perl, Smalltalk, Eiffel, Ada, BASIC și Lisp)
Este actualizat.
da…
O privire frumoasă de rubin și șine
6) nil.object_id este egal cu 8