53 parasta Ruby on Rails -haastattelun kysymystä ja vastausta (2025)

Tässä Ruby on Rails -haastattelukysymyksiä ja vastauksia fuksilaisille sekä kokeneille Ruby-kehittäjäehdokkaille saadakseen unelmatyönsä.

1) Selitä mikä on Ruby on Rails?

  • Ruby: Se on olio-ohjelmointikieli, joka on saanut inspiraationsa PERListä, Smalltalkista, Eiffelistä, Adalta, Basicista ja Lispistä.
  • kiskot: Se on kehys, jota käytetään verkkosovellusten rakentamiseen

2) Selitä, mitä ovat Rubyn luokkakirjastot?

Rubyn luokkakirjastot koostuvat useista verkkotunnuksista, kuten tietotyypeistä, säikeiden ohjelmoinnista, erilaisista toimialueista jne.

Ilmainen PDF-lataus: Ruby on Rails -haastattelun kysymyksiä ja vastauksia


3) Mainitse mikä on nimeämiskäytäntö Railsissa?

  • Muuttujat: Muuttujien ilmoittamisessa kaikki kirjaimet ovat pieniä ja sanat erotetaan alaviivoilla
  • Luokka ja moduuli: Moduulit ja luokat käyttävät MixedCasea, eikä niissä ole alaviivaa; jokainen sana alkaa isolla kirjaimella
  • Tietokantataulukko: Tietokantataulukon nimessä tulee olla pieniä kirjaimia ja alaviiva sanojen välissä, ja kaikkien taulukoiden nimien tulee olla monikkomuodossa, esimerkiksi laskun_nimikkeet
  • Malli: Sitä edustaa katkeamaton MixedCase ja se on aina yksikkö taulukon nimen kanssa
  • ohjain: Ohjainluokkien nimet esitetään monikkomuodossa siten, että OrdersController olisi tilaustaulukon ohjain.

4) Selitä, mikä on "tuotto" Ruby on Railsissa?

Ruby-metodi, joka vastaanottaa koodilohkon, kutsuu sitä kutsumalla sitä "tuotto".


5) Selitä mikä on ORM (Object-Relationship-Model) kiskoissa?

ORM tai Object Relationship Model in Rails osoittavat, että luokat on kartoitettu tietokannan taulukkoon ja objektit on kartoitettu suoraan taulukon riveihin.


6) Mainitse mitä eroa on rubyn false ja nollan välillä?

Rubyssa false on FalseClassin objekti edustamaan loogista arvoa, kun taas Nil on NilClassin objekti, joka ilmaisee arvon puuttumisen. Sillä on objektitunnus 4.

Ruby on Rails -haastattelukysymykset
Ruby on Rails -haastattelukysymykset


7) Mainitse mitkä ovat kiskojen positiiviset puolet?

Rails tarjoaa monia ominaisuuksia, kuten

  • Meta-ohjelmointi: Rails käyttää koodin generointia, mutta raskaan noston se luottaa meta-ohjelmointiin. Rubya pidetään yhtenä parhaista meta-ohjelmoinnin kielistä.
  • Aktiivinen tietue: Se tallentaa objektin tietokantaan Active Record Frameworkin kautta. Active Recordin Rails-versio tunnistaa sarakkeen skeemassa ja sitoo ne automaattisesti verkkotunnuksesi objekteihin metaohjelmoinnin avulla
  • Rakennustelineet: Kisoilla on kyky luoda telineitä tai väliaikaista koodia automaattisesti
  • Konfigurointisopimus: Toisin kuin muut kehityskehykset, Rails ei vaadi paljon konfigurointia, jos noudatat nimeämiskäytäntöä tarkasti
  • Kolme ympäristöä: Railsissa on kolme oletusympäristön testausta, kehitystä ja tuotantoa.
  • Sisäänrakennettu testaus: Se tukee koodia, jota kutsutaan valjaiksi ja kiinnikkeitä, jotka tekevät testitapauksista kirjoitettavaksi ja suoritettavaksi.

8) Selitä, mikä on alihakemiston sovellus/ohjaimet ja sovellus/auttajat rooli?

  • Sovellus/ohjaimet: Ohjain käsittelee käyttäjän verkkopyynnön. Ohjaimen alihakemistosta Rails etsii ohjainluokkia
  • Sovellus/apuohjelmat: Avustajan alihakemistossa on kaikki auttajaluokat, joita käytetään näkymän, mallin ja ohjainluokkien apuna.

9) Mainitse mikä ero on merkkijonon ja symbolin välillä?

He molemmat toimivat samalla tavalla, mutta eroavat toisistaan ​​​​vastaavissa käytöksissään. Ero piilee objektitunnuksessa, muistissa ja prosessivirityksessä, kun niitä käytetään yhdessä. Symboli kuuluu muuttumattomien objektien luokkaan, kun taas merkkijonoja pidetään muuttuvina objekteina.


10) Selitä, miten symboli eroaa muuttujista?

Symboli eroaa muuttujista seuraavilta osin

  • Se on enemmän kuin merkkijono kuin muuttuja
  • Rubyssa merkkijono on muuttuva, mutta symboli on muuttumaton
  • Vain yksi kopio symbolista on luotava
  • Symboleja käytetään usein vastaavina rubiinin enumeina

11) Selitä mikä on Rails Active Record Ruby on Railsissa?

Rails aktiivinen tietue on Object/Relational Mapping (ORM) -kerros, joka toimitetaan kiskojen mukana. Se noudattaa standardia ORM-mallia as

  • Taulukkokartta luokkiin
  • Rivit kartoitetaan objekteihin
  • Sarakkeet kartoitetaan objektin ominaisuuksiin

12) Selitä kuinka Rails toteuttaa Ajax?

Ajax-käyttöinen web-sivu hakee web-sivun palvelimelta, joka on uusi tai muutettu toisin kuin muilla verkkosivuilla, joilla sinun on päivitettävä sivu saadaksesi uusimmat tiedot.

Rails laukaisee Ajax-toiminnon seuraavilla tavoilla

  • Jotkut laukaisevat tulipalot: Liipaisin voi olla käyttäjä, joka napsauttaa linkkiä tai painiketta, käyttäjät saavat aikaan muutoksia kentän tai lomakkeen tietoihin.
  • Web-asiakas kutsuu palvelinta: Java-skriptimenetelmä, XMLHttpRequest, lähettää triggeriin linkitetyt tiedot palvelimen toimintokäsittelijälle. Tiedot voivat olla valintaruudun tunnus, koko lomake tai teksti syöttökentässä
  • Palvelin käsittelee: Palvelinpuolen toimintokäsittelijä tekee jotain tiedoilla ja hakee HTML fragmentti verkkoasiakkaalle
  • Asiakas saa vastauksen: Asiakaspuolen JavaScript, jonka Rails luo automaattisesti, vastaanottaa HTML-fragmentin ja käyttää sitä päivittääkseen tietyn osan nykyisestä

13) Mainitse kuinka voit luoda ohjaimen aiheelle?

Voit luoda ohjaimen aiheelle käyttämällä seuraavaa komentoa

C:\ruby\library> ruby-skripti/luo ohjaimen aihe


14) Mainitse mikä on Rails Migration?

Rails Migrationin avulla Ruby voi tehdä muutoksia tietokantaskeemaan, mikä mahdollistaa versionhallintajärjestelmän avulla asiat synkronoituiksi todellisen koodin kanssa.


15) Luettele mitä Rails Migration voi tehdä?

Rails Migration voi tehdä seuraavia asioita

  • Luo taulukko
  • Pudota pöytä
  • Nimeä taulukko uudelleen
  • Lisää sarake
  • Nimeä sarake uudelleen
  • Vaihda saraketta
  • Poista sarake ja niin edelleen

16) Mainitse mikä on komento siirron luomiseksi?

Siirron luomiseen komento sisältää

C:\ruby\application>ruby-skripti/luo siirtotaulukon_nimi


17) Selitä milloin self.up ja self.down menetelmää käytetään?

Kun siirryt uuteen versioon, itse ylös menetelmää käytetään samalla itse.alas -menetelmää käytetään muutosten peruuttamiseen tarvittaessa.


18) Mainitse mikä on Rails Controllerin rooli?

Rails-ohjain on sovelluksen looginen keskus. Se helpottaa vuorovaikutusta käyttäjien, näkemysten ja mallin välillä. Se suorittaa myös muita toimintoja, kuten

  • Se pystyy reitittämään ulkoiset pyynnöt sisäisiin toimiin. Se käsittelee URL-osoitetta erittäin hyvin
  • Se säätelee apumoduuleja, jotka laajentavat näkymämallien ominaisuuksia ilman, että niiden koodia täytetään.
  • Se säätelee istuntoja; joka antaa käyttäjille vaikutelman jatkuvasta vuorovaikutuksesta sovelluksiemme kanssa

19) Mainitse mitä eroa on aktiivisen tuen "HashWithIndifferent" ja Rubyn "Hash" välillä?

- Hasis luokka Rubyn ydinkirjastossa palauttaa arvon käyttämällä standardia "= =" vertailu avaimissa. Se tarkoittaa, että a:lle tallennettu arvo symboli avainta ei voi noutaa käyttämällä vastaavaa merkkijonoa. Vaikka HashIndifferentAccess kohtelee symbolinäppäimiä ja merkkijononäppäimiä vastaavina.


20) Selitä, mikä on Cross-Site Request Forgery (CSRF) ja kuinka Rails on suojattu sitä vastaan?

CSRF on hyökkäysmuoto, jossa hakkeri lähettää sivupyynnön puolestasi toiselle verkkosivustolle aiheuttaen vahinkoa tai paljastaen arkaluonteisia tietojasi. Sinun on lisättävä suojautuaksesi CSRF-hyökkäyksiltä "suojaa_väärennöksiltä" oman ApplicationController. Tämä saa Railsin vaatimaan CSRF-tunnuksen pyynnön käsittelemiseksi. CSRF-tunnus annetaan piilotettuna kenttänä jokaisessa Rails-lomakemuodossa luodussa lomakkeessa.


21) Selitä mikä on Mixin in Rails?

Mixin in Ruby tarjoaa vaihtoehdon useille perinnöille, käyttämällä mixin-moduuleja voidaan tuoda toiseen luokkaan.


22) Selitä, kuinka määrität ilmentymämuuttujan, globaalin muuttujan ja luokkamuuttujan Rubyssa?

  • Ruby Instance -muuttuja alkaa - @
  • Rubiiniluokan muuttujat alkavat - @@
  • Ruby Global muuttujat alkavat - $

23) Selitä, kuinka voit käyttää Rails-sovellusta luomatta tietokantoja?

Voit suorittaa sovelluksesi poistamalla kommentin ympäristö.rb:n riviltä

polku=> rootpath conf/environment.rb

config.frameworks = [ action_web_service, :action_mailer, :active_record]

24) Mainitse mitä eroa on Ruby on Railsin tarkkailijoiden ja takaisinsoittojen välillä?

  • Kiskojen tarkkailijat: Observers on sama kuin takaisinsoitto, mutta sitä käytetään, kun menetelmää ei ole suoraan liitetty objektin elinkaareen. Lisäksi tarkkailija elää pidempään, ja se voidaan irrottaa tai kiinnittää milloin tahansa. Esimerkiksi mallin arvojen näyttäminen käyttöliittymässä ja mallin päivittäminen käyttäjän syötteestä.
  • Rails takaisinsoitto: Takaisinkutsut ovat menetelmiä, joita voidaan kutsua kohteen elinkaaren tietyillä hetkillä, esimerkiksi kun objekti validoidaan, luodaan, päivitetään, poistetaan, Takaisinkutsu on lyhytikäinen. Esimerkiksi säikeen ajaminen ja takaisinkutsu, joka kutsutaan säikeen päättyessä

25) Selitä mikä on rake in Rails?

Rake on Ruby Make; se on Ruby-apuohjelma, joka korvaa Unix-apuohjelman "make" ja käyttää "Rakefile"- ja ".rake-tiedostoja" tehtäviä luettelon muodostamiseen. Railsissa Rakea käytetään normaaleihin hallintatehtäviin, kuten tietokannan siirtämiseen komentosarjojen kautta, skeeman lataamiseen tietokantaan jne.


26) Selitä, kuinka voit luetella kaikki sovelluksen reitit?

Voit listata kaikki sovelluksen reitit kirjoittamalla haravareitit terminaaliin.


27) Selitä mikä on sweeper Railsissa?

Lakaisijat ovat vastuussa välimuistien vanhenemisesta tai lopettamisesta, kun malliobjekti muuttuu.


28) Mainitse loki, joka on nähtävä Ruby Railsin virheiden raportoimiseksi?

Rails raportoi Apachen virheistä log/Apache.logissa ja Ruby-koodin virheistä log/development.logissa.


29) Selitä, mitä eroa on dynaamisilla ja staattisilla telineillä?

Dynaaminen rakennusteline Staattiset rakennustelineet
  • Se luo automaattisesti koko sisällön ja käyttöliittymän ajon aikana
  • Sen avulla voidaan luoda uusia, poistaa ja muokata menetelmiä käytettäväksi sovelluksessa
  • Se ei tarvitse tietokantaa synkronoidakseen
  • Se vaatii manuaalisen syöttämisen komentoon tietojen luomiseksi kenttien kanssa
  • Se ei edellytä tällaista synnytystä
  • Se vaatii tietokannan siirtämistä

30) Mainitse mikä on jätteenkeräyksen tehtävä Ruby on Railsissa?

Ruby on Railsin roskatkeräystoiminnot sisältävät

  • Se mahdollistaa osoitinarvojen poistamisen, jotka jäävät jäljelle ohjelman suorituksen päättyessä
  • Se vapauttaa ohjelmoijan jäljittämästä objektia, joka luodaan dynaamisesti ajon aikana
  • Sen etuna on, että muistista poistetaan kohteet, joihin ei ole pääsyä, ja sallii muiden prosessien käyttää muistia

31) Mainitse mitä eroa on uudelleenohjauksella ja renderöinnillä Ruby on Railsissa?

  • Uudelleenohjaus on menetelmä, jota käytetään antamaan virheilmoitus, jos sivua ei lähetetä tai se ei löydy. Se käskee selaimen käsittelemään ja lähettämään uuden pyynnön.
  • Renderöinti on menetelmä, jota käytetään sisällön tekemiseen. Renderöinti toimii vain, kun ohjain on asetettu oikein hahmonnettavien muuttujien kanssa.

32) Mainitse mikä on RJ:n tarkoitus Railsissa?

RJs on malli, joka tuottaa JavaScriptin, jonka selain ajaa eval-lohkossa vastauksena AJAX-pyyntöön. Sitä käytetään joskus määrittämään Railsin tarjoama JavaScript, prototyyppi ja apuohjelmat.


33) Selitä mikä on polymorfinen yhdistys Ruby on Railsissa?

Polymorfinen yhdistys mahdollistaa ActiveRecord-objektin yhdistämisen useisiin ActiveRecord-objekteihin. Täydellinen esimerkki Polymorphic Associationista on sosiaalinen sivusto, jossa käyttäjät voivat kommentoida missä tahansa, oli se sitten videoita, valokuvia, linkkiä, tilapäivityksiä jne. Ei olisi mahdollista, jos sinun on luotava yksittäinen kommentti, kuten photos_comments, videos_comment ja niin edelleen. .


34) Mainitse mitkä ovat Ruby on Railsin rajat?

Ruby on Rails on suunniteltu CRUD-verkkosovelluksen luomiseen MVC:tä käyttämällä. Tämän vuoksi Rails ei ehkä ole hyödyllinen muille ohjelmoijille. Jotkut ominaisuudet, joita Rails ei tue, sisältävät

  • Vieras avain tietokantoissa
  • Linkittäminen useaan tietokantaan kerralla
  • Saippuan verkkopalvelut
  • Yhteys useisiin tietokantapalvelimiin kerralla

35) Mainitse mitä eroa on super()- ja superkutsun kutsumisen välillä?

  • super (): Super()-kutsu kutsuu päämetodin ilman argumentteja, kuten oletettavasti odotettiin. Kuten aina, on hyvä asia olla selkeästi koodissasi.
  • super puhelu: Super-kutsu kutsuu päämenetelmän samoilla argumenteilla, jotka välitettiin alimetodille. Tästä syystä tapahtuu virhe, jos lapsimetodille välitetyt argumentit eivät vastaa sitä, mitä vanhempi odottaa.

36) Selitä Dig, Float ja Max?

  • Float-luokkaa käytetään aina, kun funktio muuttuu jatkuvasti.
  • Dig-komentoa käytetään aina, kun haluat esittää floatin desimaalilukuina.
  • Maxia käytetään aina, kun Floatia tarvitaan valtavasti.

37) Selitä, kuinka voimme määritellä Rubyn säännöllisiä lausekkeita?

Rubiinin säännöllinen lauseke on erityinen merkkijono, joka auttaa sinua yhdistämään tai löytämään muita merkkijonoja. Säännöllinen lauseke literaali on kuvio mielivaltaisten erottimien tai vinoviivojen välillä, joita seuraa %r.


38) Selitä mikä on määritelty operaattori?

Define-operaattori ilmoittaa, onko hyväksytty lauseke määritetty vai ei. Jos lauseke on määritelty, se palauttaa kuvausmerkkijonon ja jos sitä ei ole määritetty, se palauttaa nolla-arvon.


39) Luettele Rubyn muutamat ominaisuudet?

  • Vapaa muoto – Voit aloittaa kirjoittamisen ohjelmasta mistä tahansa rivistä ja sarakkeesta
  • Kirjainkoon erottelu – Isot ja pienet kirjaimet eroavat toisistaan
  • Kommentit – Kaikki, jota seuraa lainaamaton #, sen rivin loppuun, jolla se esiintyy, tulkki jättää huomiotta
  • Lausekkeiden erottimet – Useat lausekkeet yhdellä rivillä on erotettava puolipisteillä, mutta niitä ei vaadita rivin lopussa.

40) Mainitse Ruby Classissa käytettävissä olevat muuttujatyypit?

Ruby Classissa saatavilla olevat muuttujatyypit ovat

  • Paikalliset muuttujat
  • Globaalit muuttujat
  • Luokkamuuttujat
  • Instanssimuuttujat

41) Selitä, kuinka voit ilmoittaa lohkon Rubyssa?

Rubyssa lohkon koodi on aina suljettu aaltosulkeiden sisällä ({}). Voit kutsua lohkon käyttämällä "tuottolauseketta".


42) Selitä mikä ero on put- ja putc-lauseen välillä?

Toisin kuin puts-lause, joka tulostaa koko merkkijonon näytölle. Putc-käskyä voidaan käyttää tulostamaan yksi merkki kerrallaan.


43) Selitä mikä on Rubyn luokkakirjasto?

Ruby-luokan kirjastot koostuvat useista toimialueista, kuten säieohjelmointi, tietotyypit, erilaiset alueet jne. Nämä luokat tarjoavat joustavia ominaisuuksia korkealla abstraktiotasolla, mikä antaa sinulle mahdollisuuden luoda tehokkaita Ruby-skriptejä, jotka ovat hyödyllisiä monissa ongelmissa. verkkotunnuksia. Seuraavat verkkotunnukset, joilla on asiaankuuluvat luokkakirjastot, ovat,

  • GUI-ohjelmointi
  • Verkko-ohjelmointi
  • CGI ohjelmointi
  • Tekstinkäsittely

44) Rubyssa se selittää määritetyn operaattorin?

Määritetty operaattori kertoo, onko hyväksytty lauseke määritelty vai ei. Jos lauseketta ei ole määritelty, se antaa nollan, ja jos lauseke on määritelty, se palauttaa kuvausmerkkijonon.


45) Mainitse mitä eroa on näiden kahden muuttujan: @@nimi ja @nimi?

Ero näiden kahden muuttujan laajuudessa on seuraava:

  • @@nimi on luokkamuuttuja
  • @nimi on ilmentymämuuttuja

46) Mainitse mikä on Ruby collection Iteratorin syntaksi?

Ruby collection -syntaksi Iterator collection = collection.collect.


47) Ruby-koodissa havaitaan usein, että kooderi käyttää lyhyttä käsimuotoa käyttämällä ilmaisua kuten ryhmä.map(&:method_name) array.map { |element| sijaan elementti.metodin_nimi }. Miten tämä temppu käytännössä toimii?

Kun parametri välitetään "&":lla sen edessä. Ruby kutsuu siinä to_proc yrittääkseen tehdä siitä käyttökelpoisen lohkona. Joten symboli to_Proc kutsuu vastaavan nimen menetelmän kaikkeen, joka sille välitetään. Näin autamme pikakirjoitustemppumme toimimaan.


48) Selitä mikä on interpolointi rubiinissa?

Rubiiniinterpolointi on prosessi, jossa merkkijono lisätään literaaliin. Sijoittamalla tiiviste (#) {} avointen ja sulkevien hakasulkeiden sisään, merkkijono voidaan interpoloida literaaliin.


49) Mainitse mitä merkintää käytetään luokkamuuttujien merkitsemiseen Rubyssa?

Rubyssa,

  • Vakion tulee alkaa isolla kirjaimella, eikä sitä tule määritellä menetelmän sisällä
  • Paikallinen on aloitettava alaviivalla _ tai pienellä kirjaimella
  • Globaalin muuttujan tulee alkaa $-merkillä. Alustamattoman globaalin arvo on "nolla" ja sen pitäisikin nostaa varoitus. Siihen voidaan viitata missä tahansa ohjelmassa.
  • Luokkamuuttujan tulee alkaa kaksinkertaisella @@:lla ja se on ensin alustettava ennen kuin sitä käytetään menetelmän määrittelyssä

50) Mainitse mikä ero on Procsilla ja Blockilla?

Ero prosessien ja lohkojen välillä,

  • Lohko on vain osa menetelmän syntaksia, kun taas procilla on lohkon ominaisuudet
  • Prosessit ovat esineitä, lohkot eivät
  • Korkeintaan yksi lohko voi esiintyä argumenttiluettelossa
  • Vain lohkoa ei voida tallentaa muuttujaan, kun taas Proc voi

51) Mainitse mitä eroa on yksittäislainauksella ja kaksoislainauksella?

Yksilainaiset merkkijonot eivät käsittele ASCII-pakokoodeja, eivätkä ne interpoloi merkkijonoja.


52) Mainitse mitä eroa on helmen ja Rubyn laajennuksen välillä?

  • Helmi: Jalokivi on pelkkä rubiinikoodi. Se on asennettu koneelle, ja se on käytettävissä kaikissa kyseisessä koneessa käynnissä olevissa ruby-sovelluksissa.
  • Kytkeä: Plugin on myös rubiinikoodi, mutta se on asennettu sovelluskansioon ja saatavilla vain kyseiselle sovellukselle.

53) Mainitse mitä eroa on laajentaa ja sisältää?

"Include" antaa moduulin menetelmät luokan esiintymän saataville, kun taas "extend" antaa nämä menetelmät itse luokan saataville.

Nämä haastattelukysymykset auttavat myös vivassasi (suullinen)

Jaa:

14 Kommentit

  1. Avatar Hasanuzzaman Sumon sanoo:

    Tuotto ei ole toiminto. Se on rubiiniavainsana, jota käytetään lohkon suorittamiseen.

    1. Avatar Terry Ray sanoo:

      Erityisesti tuotto siirtää säikeen hallinnan (todennäköisimmin Main.thread) lohkolle, joka on joko välitetty eksplisiittisesti parametrina eli def my_method(&my_block) tai vaihtoehtoisesti lohko olisi voitu välittää implisiittisesti, kuten esim.

      my_class.my_method do
      # koodi tässä lohkossa luovutetaan kutsutavan sisällä
      loppu

  2. erittäin mukavaa… jatka samaan malliin

  3. Jorge Armando sanoo:

    kysymyksessä #6, Rubyssa ei ole "Boolen" luokkaa, joten ei "Boolean-tyyppiä". On vain TrueClass ja FalseClass.

  4. Avatar Terry Ray sanoo:

    itse asiassa Thread.main… minun pahani :)

  5. Ruby ei ole Pythonin inspiroima, se on saanut inspiraationsa seuraavista (Perl, Smalltalk, Eiffel, Ada, BASIC ja Lisp)

  6. Hieno välähdys rubiinista ja kiskoista

  7. 6) nil.object_id on yhtä suuri kuin 8

Jätä vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *