Ruby on Rails: En ram för webbutveckling
Ruby on Rails, ofta kallad Rails, är ett av de mest välkända ramverken inom Ruby-programmering. Dess popularitet grundar sig i dess användarvänlighet, arkitektur enligt MVC-modellen (Model-View-Controller), starka community och förmåga till skalbarhet.
Många framstående företag, som GitHub, Dribbble, Shopify, Airbnb, Etsy, Kickstarter, Twitch och Zendesk, använder sig av Ruby on Rails i sin verksamhet.
För dig som är en erfaren eller avancerad Ruby on Rails-utvecklare, är det fördelaktigt att vara väl insatt i de typer av frågor som kan dyka upp under en anställningsintervju.
Intervjuer kan kännas skrämmande om man inte är förberedd, men god förberedelse ger självförtroende och ökar chansen att få det jobb man önskar.
Här följer några vanliga intervjufrågor om Ruby on Rails, tillsammans med svar.
Vad är Ruby on Rails?
Ruby är ett objektorienterat programmeringsspråk som utmärker sig genom sin tydliga och lättförståeliga syntax.
Ruby on Rails är ett ramverk byggt på Ruby, vilket underlättar för utvecklare att skapa dynamiska webbapplikationer.
Fördelar med Ruby on Rails
- Mindre kod krävs: Rails tillåter att man uppnår mycket med relativt få kodrader jämfört med andra programmeringsspråk.
- Stort utbud av bibliotek och ”gems”: Det finns en mängd tillgängliga bibliotek och gems som kan användas för att utöka och förbättra funktionaliteten i en Ruby on Rails-applikation.
- Lätt att lära sig: Koden i Ruby on Rails liknar enkel engelska, vilket gör den lättare att förstå.
- Aktivt community: Rails har en stor och aktiv gemenskap, vilket ger bra support och resurser för utvecklare.
Begränsningar med Ruby on Rails
- Lägre prestanda: Jämfört med ramverk som Django och Node.js, kan Rails uppvisa en lägre körhastighet och prestanda.
- Bristfällig dokumentation: Dokumentationen för vissa gems kan vara begränsad.
- Meningstyrd: Ruby on Rails är ett meningstyrd ramverk, vilket kan begränsa flexibiliteten för vissa utvecklare.
Vad är en Rails controller?
En Rails controller utgör kärnan i en Ruby on Rails-applikation. Den hanterar och samordnar all kommunikation mellan användare, modeller och vyer.
Vad är Rails Active Record?
Active Record är en teknik för objektrelationell mappning (ORM). Den fungerar som ett lager av Ruby-kod mellan applikationens logik och databasen. Genom att skriva Ruby-kod kan man sedan använda ”migrationer” för att genomföra ändringar i databasen.
Vad är MVC och hur fungerar det?
MVC (Model-View-Controller) är ett arkitekturmönster som separerar affärslogiken från presentation och hantering av indata.
- Modell: Hanterar all datalogik i en Rails-applikation.
- Vy: Den del av applikationen som användaren interagerar med.
- Controller: Fungerar som en mellanhand som låter modellen och vyn kommunicera.
Vad är en actioncontroller i Ruby on Rails?
En Action Controller representerar ”C” i MVC-mönstret. Den tar emot inkommande förfrågningar, tolkar dem och genererar lämpligt svar.
Vad är rake i Rails?
Rake är ett verktyg som används för att hantera uppgifter i Ruby on Rails-applikationer. Rails har fördefinierade Rake-uppgifter för att utföra tester, köra databasmigreringar och skapa databaser.
Vad är yield i Ruby on Rails?
Yield är ett nyckelord som används inom metoder för att anropa ett kodblock. Yield kan skicka valfritt antal argument till detta block. Ett block är en namnlös metod som kan skickas som extra argument till andra metoder.
Vad är garbage collection i Ruby on Rails?
Garbage collection är processen som undersöker hur minnet används av datorprogram. Ruby on Rails håller reda på vilka objekt som används av programmet, vilket befriar programmeraren från ansvaret att hantera detta. Utvecklarna kan fokusera på logik och konventioner i stället för minnesallokering.
Vilken roll spelar garbage collection i en Rails-app?
Garbage collection frigör minne på datorn genom att ta bort otillgängliga objekt som lämnas kvar efter ett programs körning. Detta gör minne tillgängligt för andra processer.
Vad är en asset pipeline?
En asset pipeline i Ruby on Rails är en struktur som minimerar och kombinerar CSS- och JavaScript-filer. Denna struktur gör att alla tillgångar i din applikation automatiskt kombineras med tillgångar från andra gems.
Skillnaden mellan dynamisk och statisk ställningsbyggnad
Ställningsbyggnad är processen att automatiskt generera stora delar av en Rails-applikation.
Statisk ställningsbyggnad innebär att ett specifikt kommando utförs för att generera nödvändig kod inom bestämda områden. För att slutföra statiska ställningsbyggnad måste man köra migrering.
Dynamisk ställningsbyggnad genererar innehåll och användargränssnitt under körning. Denna metod används för att skapa, ändra och ta bort åtgärder i en Rails-applikation.
Vad är ett klassbibliotek?
Ett klassbibliotek i Ruby on Rails består av områden som trådprogrammering och datatyper. Ett klassbibliotek möjliggör för utvecklare att skapa kodabstraktion och därmed återanvända samma logik inom olika element i en app.
Beskriv polymorf association i Rails
Polymorf association är en typ av Active Record-association. Polymorfism innebär att ett objekt kan anta olika former. I Rails kan en polymorf association användas för att definiera en enskild modell som kan relatera till andra modeller utan att repetera kod.
Vad är stränginterpolation i Ruby?
Stränginterpolation innebär att man lägger till platshållare i strängar som refererar till andra värden. Det enklaste sättet att interpolera värden är att använda additionsoperatorn.
Exempel:
name = "Titus" puts "Hej " + name
Utskriften blir:
Hej Titus
Vad är Object Relationship Model (ORM)?
En ORM är en brygga mellan databaser och objektorienterade program. En objektrelation i Rails, definierar hur klasser kopplas till en tabell i databasen.
Förklara Rails migration
Migreringar hjälper utvecklare att enkelt göra ändringar i databasschemat. Detta ger utvecklarna en kontrollerad metod för att hantera utrullning och återställning av ändringar i databasen. Utvecklaren slipper hantera enskilda SQL-skript för att definiera sina ändringar.
Förklara namngivningskonventionen i Rails
- Klass och modul: Använd ”MixedCase” utan understreck. Namnen ska börja med en stor bokstav.
- Databastabell: Namnet ska vara i plural och ”orm-case”.
- Variabler: Använd gemener och ”snake_case” med understreck som skiljetecken.
- Modell: Använd ”MixedCase” och singularform.
- Controllers: Använd pluralform.
Vad är skillnaden mellan string och text i Rails?
:string används för korta texter, upp till 255 tecken. Det kan användas för namn, användarnamn, e-postadresser, lösenord och titlar.
:text passar långa beskrivningar, som kommentarer i blogginlägg eller butiksbeskrivningar.
class CreatePosts < ActiveRecord::Migration def self.up create_table:posts do |t| t.string:description t.text :content end end end
Förklara Cross-Site Request Forgery (CSRF)
CSRF är en typ av nätattack där angripare utnyttjar autentiserade användare för att utföra oönskade åtgärder i deras namn.
För att motverka CSRF-attacker i Rails, lägger utvecklare till ”protect_from_forgery” i ApplicationController. Applikationen kräver då en CSRF-token för att autentisera en användare.
Förklara vad en mixin är i Rails
En mixin tillhandahåller ett kontrollerat sätt att lägga till funktionalitet till en klass. Flera olika mixins kan användas för att skapa en klass. Mixins eliminerar behovet av att använda flera arv.
Vad är användningen av load och require i Ruby?
require() används för att importera bibliotek/gems.
load() används för att exekvera ett kodblock.
Vad är skillnaden mellan callbacks och observers i Ruby on Rails?
Observers i Rails används när en metod inte är direkt relaterad till ett objekts livscykel. Deras livscykel är lång och de kan fästas och tas bort när som helst.
Callbacks kan endast anropas vid specifika tidpunkter i ett objekts livscykel, till exempel vid uppdateringar, skapande och validering. De är endast aktiva under korta perioder.
Vad är harnesses och fixtures i Ruby?
Fixtures avser ett sätt att strukturera data för tester. De kan skapas i filer med .yml-tillägget.
Harnesses är miljön eller testverktyget som används för att köra Rails-tester. Fixtures sätts upp i Harnesses.
Vad är skillnaden mellan extend och include?
Include lägger till en instansmetod till en klass. Koden blir tillgänglig via klassmetoder.
Extend lägger till instansmetoder som är definierade i modulen till den klass som utökas.
Är gems och plugins samma sak i Ruby?
Gems är paketerade Ruby-applikationer som måste installeras. De är generella och inte beroende av Rails för sin funktion.
Plugins i Ruby on Rails distribueras tillsammans med Rails-applikationen. De ändrar eller lägger till Rails kärnfunktionalitet.
Vad är Rails observers?
Rails observers ger en mekanism där ett objekt informerar andra objekt när dess tillstånd ändras. Det används ofta i en-till-många-relationer, där en ändring i ett objekt automatiskt informerar och ändrar relaterade objekt.
Vilket kommando används för att skapa en migrering?
bin/rails db:migrate
Hur definierar man klass-, instans- och globala variabler i Ruby?
- Klassvariabler: Kan användas var som helst inom klassen. Ärvda klasser kan också använda dem. De börjar med @@.
- Instansvariabler: Används lokalt och är specifika för objektets instans. De kan variera mellan objekt och börjar med @.
- Globala variabler: Tillgängliga var som helst i programmet och börjar med $.
Vilken roll spelar rakefile i demokatalogen i Ruby?
Rakefile hjälper till med testning och paketering av Rails-kod. Denna fil definierar uppgifter som utför tester eller demonstrerar programmets funktionalitet.
Vad är en sweeper i Rails?
Sweepers fungerar som en typ av avslutare inom cachning. De agerar både som filter och observers och implementerar callbacks för dessa funktioner. ”expire_cache” lokaliserar och rensar de cachefragment som behöver förfalla.
Vad är filter?
Filter är metoder som körs ”före” eller ”efter” en controller-åtgärd. Dessa metoder ärvs och körs med varje anrop till applikationen, förutsatt att de är inställda i ApplicationController.
Skillnaden mellan omdirigering och rendering i Rails?
Render: Används för att rendera en mall och skicka den till klienten som ett svar på en förfrågan. Mallen genererar sedan den sida som webbläsaren visar.
Omdirigering: Skickar en ny HTTP-förfrågan till en annan URL. Det omdirigerar klienten till en annan controller eller action. Det är användbart när man vill ändra URL:en som klienten ser i webbläsaren.
Skillnaden mellan att anropa super() och super?
- Super: Skickar ett meddelande till det nuvarande objektets föräldraklass, och anropar alla argument för den anropade metoden.
- super(): Skickar inga argument till föräldraklassen.
Vad är skillnaden mellan Procs och Blocks?
- Block: En bit kod omgiven av ”do/end” eller klammerparenteser. De skapas och exekveras varje gång metoden anropas.
- Procs: Kodblock bundna till en uppsättning lokala variabler. Denna kod kan anropas i olika sammanhang och fortfarande ha tillgång till variablerna.
Vad är skillnaden mellan puts och print statements?
Puts används när man vill skriva ut något på skärmen, till exempel:
puts "Hello World!!!"
Detta skriver ut ”Hello World!!!” på skärmen.
Print används när man inte vill lägga till en ny rad i konsolen, till exempel:
print "Hello World!!!"
Detta skriver ut ”Hello World!!!” utan att lägga till en ny rad i konsolen.
Vad är dynamiska sökare?
Dynamiska sökare tillåter utvecklare att söka efter poster i databasen utan att använda SQL-frågor. De använder sökordet ”find_by_”, följt av det attribut som ska sökas efter.
Hur implementerar Rails Ajax?
- En utlösare initieras, till exempel genom att skicka ett formulär eller klicka på en knapp.
- JavaScript-metoden skickar utlösardata till en hanterare på servern.
- Serverhanteraren bearbetar datan och skickar HTML till webbklienten.
- JavaScript-hanteraren på klientsidan tar emot HTML och uppdaterar den aktuella sidan.
Förklara Dig, Float och Max
- Dig-metoden används för att extrahera värden från kapslade hash-tabeller eller arrayer.
- Float är en Ruby-datatyp som representerar reella tal med flyttals precision.
- Max är en metod som används med arrayer och hash. Den returnerar det största värdet i en samling objekt/värden.
array = [2, 9, 4, 7, 3] maximum = array.max
Konsolen kommer att visa 9, då det är det största talet.
Sammanfattning
Ovanstående frågor är exempel på vad du kan förvänta dig vid en anställningsintervju för en Ruby on Rails-utvecklare. Om du är intresserad av att bredda dina kunskaper, kan du undersöka Node.js-intervjufrågor. Se till att du har god förståelse för vad rollen som Rails-utvecklare innebär innan du går på din intervju.