Scala-utvecklarkompetens

Publicerad: Senast uppdaterad:
Scala: intervjufrågor för programvaruingenjörer

Det kan vara otroligt svårt att hitta rätt Scala-utvecklare. Du måste söka igenom berg av CV:n som skickas av kandidater och rekryterare för att hitta rätt person. Men i slutändan är det svårt att avgöra vilka av dessa potentiella kandidater som kommer att kunna utföra jobbet och vilka som helt enkelt inte är rätt för din organisation. För att göra ditt jobb lite enklare har vi skrivit den här artikeln för att förklara exakt vad du behöver göra för att hitta rätt Scala-utvecklare.

1. Vad du behöver veta om Scala för att anställa Scala-utvecklare

Scala (/ˈskɑːlɑː/ skah-lah) är ett allmänt programmeringsspråk med stöd för funktionell programmering och ett starkt statiskt typsystem.Scala började utformas 2001 vid École Polytechnique Fédérale de Lausanne (EPFL) av Martin Odersky. Den följde på arbetet med Funnel, ett programmeringsspråk som kombinerar idéer från funktionell programmering och Petri-nät. Odersky har tidigare arbetat med Generic Java och javac, Suns Java-kompilator.

Scala används främst för utveckling av backend i tillämpningar med hög samtidighet.

Viktiga fördelar med Scala:

  • Objekt är oföränderliga "som standard" (t.ex. alla samlingar).
    Det gör språket mycket mindre felbenäget, särskilt när det gäller trådar.
  • Ett avancerat typsystem
    Fler typer innebär att Scala kan utföra fler typer av uppgifter än språk med enklare typsystem, som Java.
  • Funktionell, objektorienterad och imperativ programmering är alla möjliga.
    Olika uppgifter kräver olika typer av programmering. Medan andra språk endast fungerar med en eller två programmeringsstilar fungerar Scala med alla tre. Detta innebär att en utvecklare som arbetar i Scala-miljön kan utföra fler typer av uppgifter utan att behöva byta till en annan programmeringsmiljö.

2. Vad är viktigt för IT-rekryterare att veta om Scala?

Framför allt finns det tre superviktiga saker som alla tekniska rekryterare bör känna till när de försöker tillsätta en tjänst som Scala-utvecklare.

  1. För närvarande är Scala den mest populära funktionellt programmeringsspråk. Den har många olika tillämpningar, men den mest populära är förmodligen Big Data.
  2.  Scala använder samma körtidsmiljö som Java, den virtuella Java-maskinen. På grund av detta är det helt kompatibelt med Java. Det är ett fint sätt att säga att du kan använda Scala-bibliotek för Java-applikationer och Java-bibliotek för Scala-applikationer. Detta ger Scala-utvecklare en enorm fördel jämfört med andra utvecklare eftersom de kan få tillgång till det otroligt stora och mångsidiga Java-ekosystemet.
  3.  En sak som kan avskräcka utvecklare från Scala är att det har en mer komplicerad syntax än språk som Java eller C#. Inlärningskurvan kan därför vara särskilt brant, vilket innebär att det kan vara svårt att hitta en kvalificerad Scala-utvecklare.

(I mars 2015 förklarade Raffi Krikorian, tidigare vice vd för plattformsingenjörsgruppen på Twitter, att han inte skulle ha valt Scala 2011 på grund av inlärningskurvan. Samma månad uppgav LinkedIns SVP Kevin Scott sitt beslut att "minimera beroendet av Scala". I november 2011 gick Yammer bort från Scala av skäl som bland annat gällde inlärningskurvan för nya teammedlemmar och inkompatibilitet från en version av Scala-kompilatorn till nästa) Källa: Wikipedia

När du letar efter Scala-utvecklare måste du förstå att du kommer att leta efter en elit som har varit villig att övervinna de hinder som språket innebär för att komma in.

3. Hur man kontrollerar Scalakunskaper i screeningfasen

3.1. Teknisk screening av Scalakunskaper utifrån kandidatens CV.

Innan du gör någon typ av bredare teknisk screening är det värt att kontrollera dina utvecklingskandidaters intresse för funktionell programmering. Detta innebär hur intresserade de är av att lära sig nya språk samt funktionella språk som Haskell, F sharp och OCam.

Scala-ordlista för rekryterare inom teknikbranschen

Ramverk och bibliotek i Scala Backend: Akka, Finagle

Stora data: Spark, Scalding

Webb: Play, Lift, Scalatra

Användningsområden: Scalaz, Cats

Verktyg för testning av Scala ScalaTest, Specs2
Verktyg för att bygga Scala sbt (Simple Build Tool)

Relationer mellan olika versioner av Scala-teknik:

Det är främst version 2.12 som används, men en mindre grupp utvecklare använder version 2.11. Version 3.0 planeras att släppas 2020. Dessa större Scala-versioner är inte binärt kompatibla - du måste kompilera om alla bibliotek, men mindre versioner (2.11.1, 2.11.2 osv.) är det; alla versioner är källkodskompatibla.

Betydelsen av ett Scala-certifikat för att bedöma en Scala-utvecklares färdigheter

Det finns många kurser tillgängliga. De mest populära kurserna erbjuds av Lightbend som också utfärdar certifikat. Men många människor läser Coursera Scala-spåret, som har utvecklats av Scala Center.

Kolla också in dessa kurser:

Även om certifikat kan visa på viss lämplighet finns det många fler faktorer som avgör om en kandidat är rätt Scala-utvecklare för dig.

3.2. Teknisk screening av Scalakunskaper under en telefon-/videointervju

Efter en genomgång av CV:n är nästa steg i anställningsprocessen vanligtvis en telefon- eller videointervju med kandidaten. Den största fördelen med denna del av processen är att man kan ställa följande frågor beteendefrågor för att se hur kandidaten skulle reagera i vissa verkliga situationer. Ofta är detta den viktigaste faktorn för att avgöra om en kandidat kommer att bjudas in till en teknisk intervju på plats, så det är viktigt att ställa rätt tekniska frågor i detta skede.

Naturligtvis kan dessa frågor variera beroende på vilken typ av kompetens du rekryterar. Men frågorna här bör vara användbara för att tillsätta en Scala-utvecklarposition.

Q1: Vad är mönstermatchning?

Varför ska du ställa denna fråga? Det är viktigt att känna till eftersom Scala har en inbyggd generell mekanism för mönstermatchning. Denna mekanism gör det möjligt att matcha alla typer av data med en policy för första matchning.

Q2: Vad är fallklasser?

Varför ska du ställa denna fråga? Case-klasser är unika för Scala. De är egentligen bara vanliga klasser med några extra villkor. De är oföränderliga som standard, dekomponerbara genom mönstermatchning, jämförda genom strukturell jämlikhet istället för genom referens, och är kortfattade att instansiera och använda.

Q3: Vilka objektorienterade mönster implementeras i Scala?

Varför du bör ställa denna fråga: Det finns tre huvudsakliga objektorienterade mönster som en Scala-utvecklare bör känna till. Med Singleton erbjuder Scala en direkt realisering av Singleton-mönstret i språket. Värdeobjektmönster är möjliga genom att använda Tuples, typer eller fallklasser. Slutligen finns det i Scala ett lazy-nyckelord som erbjuder lat initialisering.

F4: Vad är en egenskap och finns det någon motsvarighet i Java?

Varför ska du ställa denna fråga? Traits liknar gränssnitt i Java och är delvis implementerade.

Förutom de specifika tekniska frågorna finns det ett antal beteendefrågor som kan vara till hjälp för att avgöra hur kandidaten kommer att agera i vissa situationer.

Q5: Vilka tekniker har du haft kommersiell erfarenhet av under de senaste två åren? Vad hade du för ansvarsområden? Vad var din största prestation?

Varför ska du ställa denna fråga? Alla programmeringskunskaper är inte lika bra. Utvecklare har ofta många olika intressen och har sysslat med ett antal olika tekniker, men det är viktigt att ta reda på vilka de har en fungerande kunskap om och vilka de bara har sysslat med. Denna fråga kommer också att hjälpa till att visa hur de har använt tekniken för kommersiell mark.

Q6: Vilka Java-bibliotek med öppen källkod anser du vara värdefulla och varför?

Varför ska du ställa denna fråga? Scala är kompatibelt med Java, vilket nämndes tidigare. Eftersom Java har många fler bibliotek att använda sig av kommer Scylla-motorns effektivitet att bero på hur många av dessa bibliotek de känner till. Den här frågan ger dig en inblick i vilka bibliotek utanför Scala som din kandidat är bekant med och hur de har använt dem tidigare.

Q7: Jag har sett att du har angett ram X på ditt CV. Vad anser du om det? Är det ett bra val?

Varför ska du ställa denna fråga? Det verkliga värdet av en utvecklare ligger inte bara i deras kunskaper i språket utan i deras förmåga att genomföra ett projekt effektivt. De bästa är bekanta med ett antal verktyg och resurser som mångdubblar omfattningen av vad de kan åstadkomma. Denna fråga kommer att gå till kärnan av hur bekväm utvecklaren är med att använda dessa externa resurser för att förbättra sin programvaruutveckling.

3.3. Teknisk screening av Scalakunskaper med ett kodningstest online

Telefonundersökningar kan ge dig mycket information, liksom en noggrann genomgång av kandidatens CV, men i slutändan måste du kunna avgöra vilka kodningsfärdigheter kandidaten har. När allt kommer omkring kan ingen av de screeningmetoder som nämnts hittills faktiskt säga dig om din kandidat kan koda eller inte. För det behöver du ett kodningstest.

Det finns för närvarande ett antal olika sätt att utföra kodningstester. De sträcker sig från whiteboardintervjuer till algoritmiska testplattformar. Tyvärr ger de flesta av dessa metoder dig inte den information du behöver för att fatta ett välgrundat beslut. Datastrukturer och algoritmer är programvarans grundläggande byggstenar, men samtidigt har de inte mycket att göra med en programvaruutvecklares dagliga arbete. Det skulle vara som att be en grävmaskinist att gräva ett hål med en spade. Tekniskt sett testar du hur väl han eller hon kan flytta jord, men vad du egentligen vill veta är hur väl han eller hon kan använda de tillgängliga verktygen för att effektivt gräva ett stort hål inom en snäv tidsfrist.

På samma sätt vill du inte slösa tid på att testa grundläggande färdigheter i rekryteringsprocessen. I stället vill du se hur en utvecklare använder alla verktyg och resurser som finns tillgängliga för att leverera effektiva lösningar i tid. Det bästa sättet att göra detta är förmodligen med ett test av arbetsprover. Vi har på andra ställen på den här bloggen diskuterat hur man gör ett arbetsprov test men här är de viktigaste punkterna som du bör ta hänsyn till när du ger ett arbetsprov till en Scala-utvecklare.

  • Du bör inte bara testa språkkunskaper utan även kunskaper om de ramverk och bibliotek som ditt företag använder.
  • Istället för att förlita dig på flervalsfrågor bör du fokusera på programmeringsuppgifter.
  • När det är möjligt bör du använda en riktig uppgift med din egen kodbas, eftersom det ger kandidaten en försmak av den typ av arbete som de kommer att utföra när de börjar arbeta för dig.
  • Behandla testet som en vanlig dag på jobbet. Detta innebär att du ger kandidaten tillgång till alla bibliotek, ramverk och allmänna resurser som de skulle använda under en vanlig dag. Du testar inte deras förmåga att memorera fakta. I stället vill du veta om de kan skapa en fantastisk lösning.

Den största fördelen med den här typen av plattform är att testerna levereras automatiskt så att kandidaten kan göra testet senare från vilken plats som helst i världen. Dessutom utvärderar plattformen automatiskt kodkvaliteten och lösningens kraft utan att någon teknisk personal behöver delta. Det är ett effektivt sätt att få en effektiv bild av hur väl kandidaten kan utföra jobbet, och det är otroligt bekvämt både för din personal och för kandidaten. Detta innebär att färre kandidater faller ur er pipeline och att färre timmar går till spillo när era dyra utvecklare arbetar med rekrytering.

Författare - Adam Warski

foto av Adam Warski författare till en artikel om Scala-utvecklaren Adam är grundare och CTO för ProgramvaraMill, en utvecklare av skräddarsydd programvara från början till slut med hjälp av Scala, Akka, Java och andra språk och intressant teknik. Adam bloggar ofta, talar ofta och bidrar till öppen källkod. Du kan hålla dig uppdaterad om Adam på SoftwareMill Blog. SoftwareMill är koncentrerat i Polen och bygger innovativa applikationer och räddar stora projekt, samtidigt som de arbetar i nära samarbete med sina kunder.

4. DevSkiller är redo att användas för bedömning av Scala-kodning online

DevSkiller ger dig möjlighet att använda din egen kodbas för att testa utvecklare, men det är inte alla företag som har tid eller resurser att bygga upp ett eget test av arbetsprover. För dessa företag finns DevSkillers färdiga Scala-tester. Istället för att behandla abstrakta begrepp testar de alla dina kandidater genom att ge dem en verklig uppgift, den typ av uppgifter som de skulle stöta på under sin första arbetsdag.

Akka
SENIOR
Testade färdigheter
Varaktighet
102 minuter max.
Utvärdering
Automatisk
Översikt över testet

Frågor om valmöjligheter

bedömning av kunskaper om Scala, Funktionell programmering

Programmeringsuppgift - Nivå: Svårt

Scala | Akka Streams | IoT Data Streaming - Definiera en tidsbaserad aggregator för en ström av data från IoT-sensorer.

Scala
JUNIOR
Testade färdigheter
Varaktighet
66 minuter max.
Utvärdering
Automatisk
Översikt över testet

Frågor om valmöjligheter

bedömning av kunskaper om Scala

Programmeringsuppgift - Nivå:

Scala | Spark | ML Logs Transformer - Slutföra genomförandet av loggtransformationsledningen.

Scala
JUNIOR
Testade färdigheter
Varaktighet
96 minuter max.
Utvärdering
Automatisk
Översikt över testet

Frågor om valmöjligheter

bedömning av kunskaper om Scala

Programmeringsuppgift - Nivå:

Scala | ScalaCalc - Matematikbibliotek - Utöka funktionaliteten i geometrimodulen genom att implementera polygonoperationer.

Scala
JUNIOR
Testade färdigheter
Varaktighet
88 minuter max.
Utvärdering
Automatisk
Översikt över testet

Frågor om valmöjligheter

bedömning av kunskaper om Scala, Akka, Scala-Actors

Programmeringsuppgift - Nivå:

Scala | Headers parser | Förbered den enkla Scala-parseraren.

Akka
MIDDLE
Testade färdigheter
Varaktighet
76 minuter max.
Utvärdering
Automatisk
Översikt över testet

Frågor om valmöjligheter

bedömning av kunskaper om Scala, Akka, Scala-Actors

Programmeringsuppgift - Nivå:

Scala | Akka | TCP Stream Messages - Implementera klienthanteraren för TCP Stream Messages, bearbeta dem och skicka tillbaka resultatet till avsändaren och databaseSaverActor.

Bildkälla: Godatafy

Dela inlägg

Läs mer om rekrytering av tekniker

Prenumerera på vår Learning Hub för att få nyttiga insikter direkt i din inkorg.

Kontrollera och utveckla kodningsfärdigheter utan problem.

Se DevSkillers produkter i praktiken.

Säkerhetscertifieringar och efterlevnad. Vi ser till att dina data är säkra och skyddade.

DevSkillers logotyp TalentBoost logotyp TalentScore-logotyp