Knekke Ruby on Rails-intervjuet: 40 vanlige spørsmål og svar

Ruby on Rails er antagelig det mest anerkjente rammeverket for Ruby. Dets brukervennlighet, arkitektur basert på MVC (Model-View-Controller), et engasjert fellesskap og skalerbarhet er grunnpilarene for dets utbredte popularitet.

Blant de fremtredende selskapene som benytter Ruby on Rails finner vi GitHub, Dribbble, Shopify, Airbnb, Etsy, Kickstarter, Twitch og Zendesk, bare for å nevne noen få.

For en erfaren eller middels Ruby on Rails-utvikler, er det klokt å forberede seg på de typiske spørsmålene som kan dukke opp i et jobbintervju.

Intervjuer kan være nervepirrende dersom du ikke er tilstrekkelig forberedt. Men god forberedelse gir selvtillit, og kan øke sjansene dine for å lande drømmejobben.

Her presenteres noen vanlige spørsmål som kan dukke opp i et Ruby on Rails-intervju, samt forslag til svar.

Hva er Ruby on Rails?

Ruby er et objektorientert programmeringsspråk med en enkel og intuitiv syntaks.

Ruby on Rails er et rammeverk for Ruby som utviklere bruker til å bygge webapplikasjoner.

Diskuter fordelene med Ruby on Rails

  • Mindre kode nødvendig: Rails lar deg oppnå mye med relativt få linjer kode.
  • Et rikt utvalg av biblioteker og gems: Det finnes et stort antall biblioteker og gems som utvider funksjonaliteten i en Ruby on Rails-applikasjon.
  • Lett å lære: Ruby on Rails-kode er utformet for å ligne naturlig engelsk.
  • Et stort og aktivt fellesskap av utviklere.

Diskuter begrensningene med Ruby on Rails

  • Sammenlignet med Django og Node.js, kan Rails ha lavere kjørehastighet og ytelse.
  • Begrenset dokumentasjon for noen av de tilgjengelige gemsene.
  • Ruby on Rails er et meningsfullt rammeverk, som kan begrense utviklerens fleksibilitet.

Hva er en Rails-kontroller?

Dette er det sentrale logiske punktet i en Ruby on Rails-applikasjon. Rails-kontrolleren administrerer, koordinerer og overvåker samtlige interaksjoner mellom brukere, modeller og visninger.

Hva er Rails» Active Record?

Active Record er en teknikk for objektrelasjonskartlegging (ORM). Dette Ruby-kodlaget opererer mellom den logiske koden og databasen. Etter å ha skrevet Ruby-kode, kjører du «migreringer» for å implementere endringer i databasen.

Hva er MVC, og hvordan fungerer det?

Model-View-Controller (MVC) er et arkitektonisk mønster som separerer forretningslogikk fra inndata- og presentasjonslogikk.

  • Modell: Håndterer all datalogikk i en Rails-applikasjon.
  • Visning: Representerer den delen av applikasjonen som brukerne ser.
  • Kontroller: Fungerer som en bro eller mellommann som muliggjør kommunikasjon mellom modellen og visningen.

Hva er en handlingskontroller i Ruby on Rails?

Handlingskontrolleren er representert ved bokstaven C i MVC-mønsteret. Den mottar innkommende forespørsler, tolker dem og genererer det nødvendige svaret.

Hva er Rake i Rails?

Rake er en oppgavebehandler for Ruby on Rails og andre Ruby-applikasjoner. Rails tilbyr forhåndsdefinerte Rake-oppgaver for å utføre tester, kjøre migreringer og opprette databaser.

Hva er yield i Ruby on Rails?

Yield er et nøkkelord som benyttes i metoder for å påkalle en kodeblokk. Det er ingen begrensning på antall argumenter yield kan overføre til blokken. Blokker er i denne sammenhengen metoder uten navn som kan benyttes som ekstra argumenter til andre metoder.

Hva er søppeltømming (Garbage Collection) i Ruby on Rails?

Søppeltømming er prosessen for å håndtere minnebruken i dataprogrammer. Ruby on Rails holder oversikt over hvilke objekter som benyttes av programmet, i stedet for at utvikleren må håndtere dette. Utviklere kan dermed fokusere på logikk og konvensjoner, fremfor å bekymre seg for minnetildeling.

Hva er rollen til søppeltømming i Rails-applikasjonen?

Den frigjør minne på maskinen slik at andre prosesser kan utføres. Søppeltømming oppnår dette ved å fjerne utilgjengelige objekter som et program etterlater seg etter utførelse.

Hva er en ressurskanal (Asset Pipeline)?

En ressurskanal i Ruby on Rails tilbyr et rammeverk som minimerer og sammenkobler CSS- og JavaScript-ressurser. Dette rammeverket muliggjør at alle ressurser i Rails-applikasjonen automatisk kombineres med ressurser fra andre gems.

Skille mellom dynamisk og statisk stillas (scaffolding)

Stillas er prosessen med å generere store deler av en Rails-applikasjon.

Statisk stillas involverer eksplisitt å legge inn en kommando som produserer den nødvendige dataen i de respektive feltene. For å fullføre statisk stillas, må du kjøre migreringer.

Dynamisk stillas genererer innhold og brukergrensesnitt under kjøring. Denne prosessen kan benyttes for å lage, endre og slette handlinger i en Rails-applikasjon.

Hva er et klassebibliotek?

Et klassebibliotek omfatter domener i Ruby on Rails, der trådprogrammering og datatyper er eksempler på slike domener. Et klassebibliotek gir utvikleren mulighet til å lage kodeabstraksjon og dermed bruke den samme logikken innenfor ulike elementer i en applikasjon.

Beskriv polymorf assosiasjon i Rails

Polymorf assosiasjon er en type Active Record-assosiasjon. Polymorfisme betyr at et objekt kan ha mange former. I Rails-sammenheng muliggjør polymorf assosiasjon at man definerer en enkelt modell som kan assosieres med eller tilhøre andre modeller uten å måtte skrive repeterende kode.

Hva er strenginterpolasjon i Ruby?

Strenginterpolasjon legger til plassholdere som refererer til andre verdier i et strengobjekt. Den enkleste måten å interpolere verdier på er å benytte addisjonsoperatoren.

Se på dette eksemplet:

name = "Titus"
puts "Hei " + name

Resultatet vil være;

Hei Titus

Hva er en objektrelasjonsmodell (ORM)?

En ORM er en bro mellom databaser og objektorienterte programmer. En objektrelasjon i Rails indikerer når klasser blir kartlagt til en tabell i databasen.

Forklar Rails-migrering

Migreringer hjelper utviklere med å foreta endringer i et databaseskjema på en smidig måte. Utviklere kan administrere utrulling og tilbakerulling av databaseskjemaet i et kontrollert miljø. Dette forhindrer behovet for å administrere individuelle SQL-skript for å definere endringene.

Forklar navnekonvensjoner i Rails

  • Klasse og modul: Benytt MixedCase, uten understreker. Navn på klasser og moduler begynner med en stor bokstav.
  • Databasetabell: Navn på databasetabeller skal være i flertall og benytte små og store bokstaver.
  • Variabler: Bokstaver som deklarerer variabler skal være i små bokstaver, snake_case og med understreker for å skille dem.
  • Modell: Benytt MixedCase for å spesifisere en modell, og sørg for at navnet er i entallsform.
  • Kontrollere: Kontrollernavn skal være i flertall.

Hva er forskjellen mellom string og text i Rails?

:string passer når du ønsker å lagre kort tekst, opptil 255 tegn. Dette er passende for navn, brukernavn, e-postadresser, passord og titler.

:text er passende for lengre beskrivelser. Perfekte eksempler er kommentarer på et blogginnlegg eller en butikkbeskrivelse.

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table:posts do |t|
      t.string:description
      t.text :content
    end
  end

Forklar Cross-Site Request Forgery (CSRF)

Cross-Site Request Forgery (CSRF) er et nettangrep der angriperen manipulerer autentiserte brukere til å utføre visse handlinger på deres vegne.

Rails krever at utviklere legger til «protect_from_forgery» til ApplicationController for å forhindre CSRF-angrep. Applikasjonen vil alltid kreve en CSRF-token for å autentisere en bruker.

Forklar hva en mixin er i Rails

En mixin tilbyr en kontrollert måte å legge til funksjonalitet i en klasse. Mange ulike mixins kan utgjøre en klasse. Mixins eliminerer behovet for å ha flere arv.

Hva er bruken av load og require i Ruby?

require() brukes for å importere biblioteker/gems.

load() brukes for å utføre en kodeblokk.

Hva er forskjellen mellom tilbakeringinger (callbacks) og observatører i Ruby on Rails?

Rails-observatører benyttes når en metode ikke er direkte relatert til livssyklusen til et objekt. Deres livssykluser er lange, og de kan legges til eller fjernes når som helst.

Tilbakeringinger kan kun påkalles i spesifikke faser av livssyklusen til et objekt. Eksempler på slike tilfeller er oppdateringer, opprettelse og validering. Tilbakeringinger er kun aktive i korte perioder.

Hva er seler (harnesses) og inventar (fixtures) i Ruby?

Inventar refererer til en måte å organisere data som skal testes på. Disse kan opprettes i filer som slutter med filtypen .yml.

Seler er miljøet eller testløperen for å kjøre Rails-tester. Inventar settes opp i seler.

Hva er forskjellen mellom utvide (extend) og inkludere (include)?

«Inkluder» legger til en instansmetode til en klasse. Koden vil dermed være tilgjengelig via klassemetoder.

«Utvid» legger til instansmetoder som er definert i modulen til den utvidete klassen.

Er gems og plugins det samme i Ruby?

Gems er pakket Ruby-applikasjoner som må installeres. De er generelle og er ikke avhengig av Rails for funksjonalitet.

Plugins i Ruby on Rails distribueres sammen med Rails-applikasjonen din. De modifiserer eller legger til kjernefunksjonaliteten i Rails.

Hva er Rails-observatører?

Rails-observatører tilbyr en mekanisme der ett objekt informerer de andre når tilstanden endres. Den er anvendelig i et en-til-mange-forhold slik at når ett objekt endres, blir alle avhengige objekter informert og endret automatisk.

Hvilken kommando brukes for å opprette en migrering?

bin/rails db:migrate

Vis hvordan du definerer klasse-, instans- og globale variabler i Ruby

  • Klassevvariabler: Kan benyttes hvor som helst i klassen. Klassens etterkommere kan også få tilgang til dem. De begynner med @@.
  • Instansvariabler: Benyttes i det lokale omfanget som er spesifikt for det opprettede objektets instanser. De kan variere fra et objekt til et annet. De begynner med @.
  • Globale variabler: Er tilgjengelig hvor som helst i programmet. De starter med $.

Hvilken rolle spiller rakefilen som er tilgjengelig i demokatalogen i Ruby?

Rakefile hjelper med testing og pakking av Rails-kode. Filen definerer oppgavene som utfører tester eller demonstrerer applikasjonens funksjoner.

Hva er en «sweeper» i Rails?

«Sweepere» fungerer som terminatorer i caching. De fungerer som halvfiltre og halvobservatører og implementerer tilbakeringinger for de to rollene. «expire_cache» finner alle cache-fragmentene som må utløpe og sletter dem.

Hva er filtre?

Dette er metoder som kjøres «før» eller «etter» en kontrollers handling er utført. Slike metoder er arvet og vil kjøres med hver forespørsel applikasjonen din mottar, så lenge du har plassert dem i ApplicationController.

Skille mellom omdirigering (redirect) og gjengivelse (render) i Rails

Render: Benyttes for å gjengi en mal og deretter sende den til klienten som svar på en forespørsel. Denne malen genererer deretter siden som nettleseren vil vise.

Omdirigering: Sender en ny HTTP-forespørsel til en annen URL. Denne handlingen omdirigerer klienten til en annen kontroller eller handling. Denne metoden er nyttig når du vil endre URL-adressen klientene ser i nettleseren.

Skille mellom å kalle super og super()

  • Super: Sender en melding til gjeldende objekts overordnede for å påkalle alle argumenter for den påkalte metoden.
  • super(): Sender ingen argumenter til forelderen.

Hva er forskjellen mellom Procs og Blocks?

  • Blokker: En kodebit som er omsluttet av do/end-setninger eller krøllete parenteser. De opprettes og utføres hver gang metoden kalles.
  • Procs: Kodeblokker som er bundet sammen til et sett med lokale variabler. Denne koden kan kalles i ulike sammenhenger og har fremdeles tilgang til variablene.

Hva er forskjellen mellom puts og print?

Vi bruker puts når vi ønsker å skrive ut noe til skjermen. For eksempel:

puts “Hallo verden!!!”

Dette skriver ut Hallo verden!!! på skjermen.

Vi bruker print når vi ikke ønsker å legge til en ny linje i konsollen.

print “Hallo verden!!!” 

Dette skriver ut Hallo verden!!!, men en ny linje vil ikke bli lagt til i konsollen.

Hva er dynamiske finnere?

Dynamiske finnere gir utviklere mulighet til å søke etter oppføringer i databasen uten å måtte benytte rå SQL-spørringer. De benytter nøkkelordet find_by_, som deretter følges av attributtet som skal søkes i.

Forklar hvordan Rails implementerer Ajax

  • En utløser, som for eksempel innsending av et skjema eller klikk på en knapp, startes.
  • JavaScript-metoden sender utløserdataen til en behandler på serveren.
  • Behandleren på serversiden jobber med dataen og sender HTML til nettklienten.
  • JavaScript-behandler på klientsiden mottar HTML-innhold og oppdaterer gjeldende side.

Forklar Dig, Float og Max

  • Med Dig-metoden kan man trekke ut verdier fra nestede hashes eller matriser.
  • Float er en Ruby-datatype som representerer reelle tall med flytende punktpresisjon.
  • Max er en metode som kan benyttes med matriser og hashes. Den returnerer maksimalverdien i en samling av elementer/verdier.
array = [2, 9, 4, 7, 3]
maximum = array.max

Konsollen vil returnere 9, siden det er det høyeste tallet.

Konklusjon

Ovenfor er presentert noen spørsmål du kan forvente å møte i ditt neste Ruby on Rails-intervju. Dersom du er en allsidig programvareutvikler, kan det være nyttig å også se på disse Node.js-intervjuspørsmålene. Pass på at du har god forståelse av stillingsbeskrivelsen for en Rails-utvikler før du deltar i intervjuet.