Scala-Entwickler-Kenntnisse

Veröffentlicht: Zuletzt aktualisiert:
Scala: Interviewfragen für Software-Ingenieure

Es kann unglaublich schwierig sein, den richtigen Scala-Entwickler zu finden. Man muss sich durch Berge von Lebensläufen wühlen, die von Kandidaten und Recruitern geschickt werden, um den richtigen zu finden. Aber am Ende des Tages ist es schwer zu sagen, welche dieser potenziellen Kandidaten in der Lage sein werden, den Job zu erledigen und welche einfach nicht zu Ihrem Unternehmen passen. Um Ihnen die Arbeit ein wenig zu erleichtern, haben wir diesen Artikel geschrieben, um genau zu erklären, was Sie tun müssen, um den richtigen Scala-Entwickler zu finden.

1. Was Sie über Scala wissen müssen, um Scala-Entwickler einzustellen

Scala (/ˈskɑːlɑː/ skah-lah) ist eine allgemeine Programmiersprache, die funktionale Programmierung und ein starkes statisches Typsystem unterstützt. Die Entwicklung von Scala begann 2001 an der École Polytechnique Fédérale de Lausanne (EPFL) durch Martin Odersky. Es knüpfte an die Arbeit an Funnel an, einer Programmiersprache, die Ideen aus der funktionalen Programmierung und Petri-Netzen kombiniert. Odersky arbeitete zuvor an Generic Java und javac, dem Java-Compiler von Sun.

Scala wird hauptsächlich in der Backend-Entwicklung in hochparallelen Anwendungen eingesetzt.

Die wichtigsten Vorteile von Scala:

  • Objekte sind "standardmäßig" unveränderlich (z. B. alle Sammlungen)
    Es macht die Sprache viel weniger fehleranfällig, insbesondere im Zusammenhang mit Threads.
  • Ein fortschrittliches Typensystem
    Mehr Typen bedeuten, dass Scala mehr Arten von Aufgaben ausführen kann als Sprachen mit einfacheren Typsystemen, wie Java.
  • Funktionale, objektorientierte und imperative Programmierung sind möglich
    Unterschiedliche Aufgaben erfordern unterschiedliche Programmierstile. Während andere Sprachen nur mit einem oder zwei Programmierstilen arbeiten, arbeitet Scala mit allen drei. Das bedeutet, dass ein Entwickler, der in der Scala-Umgebung arbeitet, mehr Arten von Aufgaben ausführen kann, ohne in eine andere Programmierumgebung wechseln zu müssen.

2. Was ist für IT-Recruiter wichtig, um über Scala zu wissen?

Vor allem gibt es drei super wichtige Dinge, die jeder technische Recruiter wissen sollte, wenn er versucht, eine Scala-Entwicklerposition zu besetzen.

  1. Derzeit ist Scala die beliebteste funktionale Programmiersprache. Während es eine Reihe von verschiedenen Anwendungen hat, ist es wahrscheinlich am populärsten im Moment in Big Data verwendet.
  2.  Scala verwendet die gleiche Laufzeitumgebung wie Java, die Java Virtual Machine. Aus diesem Grund ist es vollständig interoperabel mit Java. Das ist eine schicke Art zu sagen, dass Sie Scala-Bibliotheken für Java-Anwendungen und Java-Bibliotheken für Scala-Anwendungen verwenden können. Dadurch haben Scala-Entwickler einen großen Vorteil gegenüber anderen Entwicklern, weil sie auf das unglaublich große und vielfältige Java-Ökosystem zugreifen können.
  3.  Die eine Sache, die Entwickler von Scala abschrecken kann, ist, dass es eine kompliziertere Syntax hat als Sprachen wie Java oder C#. Infolgedessen kann die Lernkurve besonders steil sein, was bedeutet, dass es schwierig sein kann, einen qualifizierten Scala-Entwickler zu finden.

(Im März 2015 erklärte der ehemalige VP der Platform Engineering Group bei Twitter, Raffi Krikorian, dass er sich 2011 aufgrund der Lernkurve nicht für Scala entschieden hätte. Im selben Monat erklärte Kevin Scott, SVP von LinkedIn, seine Entscheidung, "die Abhängigkeit von Scala zu minimieren". Im November 2011 rückte Yammer von Scala ab, unter anderem aus Gründen der Lernkurve für neue Teammitglieder und der Inkompatibilität von einer Version des Scala-Compilers zur nächsten) Quelle: Wikipedia

Wenn Sie nach Scala-Entwicklern suchen, müssen Sie sich darüber im Klaren sein, dass Sie nach einer Elite suchen werden, die bereit ist, die Einstiegshürden zu überwinden, die die Sprache mit sich bringt.

3. Wie man Scala-Kenntnisse in der Screening-Phase verifiziert

3.1. Technisches Screening der Scala-Kenntnisse auf der Grundlage des Lebenslaufs des Kandidaten

Bevor Sie irgendeine Art von breiterem technischem Screening durchführen, lohnt es sich, das Interesse Ihrer Entwicklungskandidaten an funktionaler Programmierung zu überprüfen. Das bedeutet, wie sehr sie daran interessiert sind, neue Sprachen sowie funktionale Sprachen wie Haskell, F sharp und OCam zu lernen.

Scala-Glossar für Tech-Recruiter

Scala-Frameworks und -Bibliotheken Backend: Akka, Finagle

Große Daten: Spark, Verbrühung

Web: Spielen, Heben, Scalatra

Utils: Scalaz, Katzen

Scala-Testwerkzeuge ScalaTest, Specs2
Scala-Build-Tools sbt (Einfaches Build-Werkzeug)

Beziehungen zwischen den jeweiligen Versionen der Scala-Technologie:

Hauptsächlich wird die Version 2.12 verwendet, ein kleineres Kontingent von Entwicklern nutzt die Version 2.11. Version 3.0 soll im Jahr 2020 veröffentlicht werden. Diese Scala-Hauptversionen sind nicht binärkompatibel - Sie müssen alle Bibliotheken neu kompilieren, aber die kleineren Versionen (2.11.1, 2.11.2 usw.) sind es; alle Versionen sind quellkompatibel.

Die Bedeutung eines Scala-Zertifikats für die Beurteilung der Fähigkeiten eines Scala-Entwicklers

Es gibt eine Vielzahl von Kursen. Die beliebtesten werden von Lightbend angeboten, die auch Zertifikate ausstellen. Aber eine Menge Leute machen den Coursera Scala Track, der von Scala Zentrum.

Sehen Sie sich auch diese Kurse an:

Während Zertifikate eine gewisse Eignung zeigen können, gibt es viele weitere Faktoren, die bestimmen, ob ein Kandidat der richtige Scala-Entwickler für Sie sein wird.

3.2. Technisches Screening der Scala-Kenntnisse während eines Telefon-/Videointerviews

In der Regel besteht der nächste Schritt im Einstellungsprozess nach der Überprüfung des Lebenslaufs darin, ein Telefon- oder Videointerview mit einem Kandidaten zu führen. Der Hauptvorteil dieses Teils des Prozesses ist die Möglichkeit, Fragen zu stellen Verhaltensfragen um zu sehen, wie Ihr Kandidat in bestimmten realen Situationen reagieren würde. Oft entscheidet dies darüber, ob ein Kandidat zu einem technischen Einzelgespräch vor Ort eingeladen wird, daher ist es in dieser Phase wichtig, die richtigen technischen Fragen zu stellen.

Natürlich können diese Fragen je nach Art der Fähigkeiten, für die Sie rekrutieren, variieren. Dennoch sollten die Fragen hier für die Besetzung jeder Scala-Entwicklerposition nützlich sein.

F1: Was ist Mustervergleich?

Warum Sie das fragen sollten: Es ist wichtig zu wissen, weil Scala einen eingebauten allgemeinen Pattern-Matching-Mechanismus hat. Dieser Mechanismus erlaubt es Ihnen, jede Art von Daten mit einer First-Match-Policy abzugleichen.

F2: Was sind Fallklassen?

Warum Sie das fragen sollten: Case-Klassen sind einzigartig in Scala. Sie sind eigentlich nur normale Klassen, denen ein paar zusätzliche Bedingungen hinzugefügt wurden. Sie sind standardmäßig unveränderlich, durch Pattern-Matching dekomponierbar, werden durch strukturelle Gleichheit statt durch Referenz verglichen und sind einfach zu instanziieren und zu bearbeiten.

F3: Welche objektorientierten Muster sind in Scala implementiert?

Warum Sie das fragen sollten: Es gibt drei wesentliche objektorientierte Muster, die ein Scala-Entwickler kennen sollte. Mit Singleton bietet Scala eine direkte Realisierung des Singleton-Musters in der Sprache. Wertobjekt-Muster sind durch die Verwendung von Tupeln, Typen oder Fallklassen möglich. Schließlich gibt es in Scala ein Lazy-Schlüsselwort, das eine faule Initialisierung bietet

F4: Was ist ein Trait und gibt es eine Entsprechung in Java?

Warum Sie das fragen sollten: Traits sind ähnlich wie Interfaces in Java und teilweise implementiert.

Zusätzlich zu den spezifischen technischen Fragen gibt es eine Reihe von Verhaltensfragen, die hilfreich sind, um festzustellen, wie sich Ihr Kandidat in bestimmten Situationen verhalten wird.

F5: Mit welchen Technologien haben Sie innerhalb der letzten 2 Jahre kommerzielle Erfahrungen gesammelt? Was waren Ihre Aufgaben? Was war Ihr größter Erfolg?

Warum Sie das fragen sollten: Nicht alle Programmierkenntnisse sind gleich. Entwickler haben oft eine Vielzahl von Interessen und haben in einer Reihe von verschiedenen Technologien gedabbelt, aber es ist wichtig, festzustellen, welche sie eine funktionale Arbeitskenntnisse haben und welche sie nur gedabbelt haben. Diese Frage wird auch helfen zu zeigen, wie sie die Technologie für kommerzielle Zwecke genutzt haben.

F6: Welche Java-Open-Source-Bibliotheken halten Sie für wertvoll und warum?

Warum Sie das fragen sollten: Wie bereits erwähnt, ist Scala mit Java interoperabel. Da Java über viel mehr Bibliotheken verfügt, auf die Sie zurückgreifen können, wird die Effektivität Ihres Scylla-Engine-Jahres davon abhängen, mit wie vielen dieser Bibliotheken sie vertraut sind. Diese Frage wird Ihnen Aufschluss darüber geben, mit welchen Bibliotheken außerhalb von Scala Ihr Kandidat vertraut ist und wie er sie in der Vergangenheit genutzt hat.

F7: Ich habe bemerkt, dass Sie Framework X in Ihrem Lebenslauf aufgeführt haben. Was ist Ihre Meinung dazu? Ist es eine gute Wahl?

Warum Sie das fragen sollten: Der wahre Wert eines Entwicklers liegt nicht nur in seinen Sprachkenntnissen, sondern auch in seiner Fähigkeit, ein Projekt effizient auszuführen. Die Besten sind mit einer Reihe von Werkzeugen und Ressourcen vertraut, die den Umfang dessen, was sie erreichen können, vervielfachen. Diese Frage bringt auf den Punkt, wie wohl sich der Entwickler bei der Nutzung dieser externen Ressourcen fühlt, um seine Softwareentwicklung zu optimieren.

3.3. Technisches Screening der Scala-Kenntnisse mit einem Online-Codierungstest

Telefon-Screenings können Ihnen eine Menge Informationen liefern, ebenso wie ein gründlicher Scan des Lebenslaufs eines Kandidaten, aber am Ende des Tages müssen Sie in der Lage sein, festzustellen, welche Codierfähigkeiten Ihr Kandidat hat. Denn keine der bisher genannten Screening-Methoden sagt Ihnen tatsächlich, ob Ihr Kandidat programmieren kann oder nicht. Dafür brauchen Sie einen Codierungstest.

Es gibt derzeit eine Reihe von Möglichkeiten, um Codierungstests durchzuführen. Sie reichen von Whiteboard-Interviews bis hin zu algorithmischen Testplattformen. Leider liefern die meisten dieser Methoden nicht die Informationen, die Sie benötigen, um eine fundierte Entscheidung zu treffen. Datenstrukturen und Algorithmen sind die grundlegenden Bausteine von Software, aber gleichzeitig haben sie wenig mit der täglichen Arbeit eines Softwareentwicklers zu tun. Es wäre so, als würde man einen Baggerfahrer bitten, ein Loch mit einer Schaufel zu graben. Technisch gesehen testen Sie, wie gut er Erde bewegen kann, aber was Sie wirklich wissen wollen, ist, wie gut er die ihm zur Verfügung stehenden Werkzeuge nutzen kann, um innerhalb einer knappen Frist effizient ein riesiges Loch zu graben.

Genauso wollen Sie in Ihrem Einstellungsprozess keine Zeit damit verschwenden, grundlegende Fähigkeiten zu testen. Stattdessen wollen Sie sehen, wie ein Entwickler alle ihm zur Verfügung stehenden Werkzeuge und Ressourcen nutzt, um effiziente Lösungen rechtzeitig zu liefern. Der wahrscheinlich beste Weg, dies zu tun, ist ein Test mit Arbeitsproben. Wir haben an anderer Stelle in diesem Blog besprochen, wie man einen Arbeitsprobe-Test aber hier sind die wichtigsten Punkte, die Sie berücksichtigen sollten, wenn Sie einem Scala-Entwickler einen Arbeitsprobentest geben.

  • Sie sollten nicht nur die Sprachkenntnisse testen, sondern auch das Wissen über die Frameworks und Bibliotheken, die Ihr Unternehmen verwendet
  • Verlassen Sie sich nicht auf Multiple-Choice-Fragen, sondern konzentrieren Sie sich auf die Programmieraufgaben
  • Wann immer möglich, verwenden Sie eine reale Aufgabe mit Ihrer eigenen Codebasis, da dies Ihrem Kandidaten einen Vorgeschmack auf die Art von Arbeit gibt, die er tun wird, wenn er für Sie zu arbeiten beginnt
  • Behandeln Sie den Test wie einen normalen Arbeitstag. Das bedeutet, dass Sie dem Kandidaten Zugang zu allen Bibliotheken, Frameworks und allgemeinen Ressourcen geben, die er auch an einem normalen Tag benutzen würde. Sie testen nicht ihre Fähigkeit, Fakten auswendig zu lernen. Stattdessen wollen Sie wissen, ob sie eine erstaunliche Lösung erstellen können

Der Hauptvorteil dieser Art von Plattform ist, dass die Tests automatisch geliefert werden, so dass der Kandidat den Test später von jedem Ort der Welt aus durchführen kann. Nicht nur, dass die Plattform automatisch die Code-Qualität sowie die Leistung der Lösung bewertet, ohne dass ein technisches Personal auf Ihrer Seite eingreifen muss. Es ist ein effizienter Weg, um herauszufinden, wie gut Ihr Kandidat den Job erledigen kann und ist unglaublich bequem sowohl für Ihre Mitarbeiter als auch für den Kandidaten. Das bedeutet, dass weniger Kandidaten aus Ihrer Pipeline herausfallen und weniger Stunden damit verschwendet werden, Ihre teuren Entwickler mit dem Recruiting zu beschäftigen.

Autor - Adam Warski

Foto von Adam Warski Autor eines Artikels über den Scala-Entwickler Adam ist der Gründer und CTO von SoftwareMillein End-to-End-Entwickler von kundenspezifischer Software mit Scala, Akka, Java und anderen Sprachen und interessanten Technologien. Als häufiger Blogger, Redner und Open-Source-Beitragsleistender können Sie mit Adam auf dem SoftwareMill-Blog Schritt halten. Das in Polen ansässige Unternehmen SoftwareMill entwickelt innovative Anwendungen und rettet großartige Projekte, wobei es eng mit seinen Kunden zusammenarbeitet.

4. DevSkiller einsatzbereites Online-Assessment für Scala-Codierung

Während DevSkiller Ihnen die Möglichkeit gibt, Ihre eigene Codebasis für Entwicklertests zu verwenden, hat nicht jedes Unternehmen die Zeit oder die Ressourcen, um einen eigenen Arbeitsprobentest zu erstellen. Für diese Unternehmen gibt es die vorgefertigten Scala-Tests von DevSkiller. Anstatt sich mit abstrakten Konzepten zu beschäftigen, testen sie alle Ihre Kandidaten, indem sie ihnen eine reale Aufgabe geben, die Art von Aufgaben, die sie an ihrem ersten Arbeitstag antreffen würden.

Akka
SENIOR
Geprüfte Fähigkeiten
Dauer
102 Minuten max.
Auswertung
Automatisch
Test-Übersicht

Auswahlfragen

Beurteilung des Wissens über Scala, Funktionale Programmierung

Programmieraufgabe - Stufe: Hart

Scala | Akka Streams | IoT Data Streaming - Definieren Sie einen zeitbasierten Aggregator für einen Strom von Daten aus IoT-Sensoren.

Scala
JUNIOR
Geprüfte Fähigkeiten
Dauer
66 Minuten max.
Auswertung
Automatisch
Test-Übersicht

Auswahlfragen

Beurteilung des Wissens über Scala

Programmieraufgabe - Stufe: Einfach

Scala | Spark | ML Logs Transformer - Vervollständigen Sie die Implementierung der Transformationspipeline für die Protokolle.

Scala
JUNIOR
Geprüfte Fähigkeiten
Dauer
96 Minuten max.
Auswertung
Automatisch
Test-Übersicht

Auswahlfragen

Beurteilung des Wissens über Scala

Programmieraufgabe - Stufe: Einfach

Scala | ScalaCalc - mathematische Bibliothek - Erweitern Sie die Funktionalität des Geometriemoduls durch die Implementierung von Polygonoperationen.

Scala
JUNIOR
Geprüfte Fähigkeiten
Dauer
88 Minuten max.
Auswertung
Automatisch
Test-Übersicht

Auswahlfragen

Beurteilung des Wissens über Scala, Akka, Scala-Schauspieler

Programmieraufgabe - Stufe: Medium:

Scala | Kopfzeilen-Parser | Bereiten Sie den einfachen Scala-Parser vor.

Akka
MIDDLE
Geprüfte Fähigkeiten
Dauer
76 Minuten max.
Auswertung
Automatisch
Test-Übersicht

Auswahlfragen

Beurteilung des Wissens über Scala, Akka, Scala-Schauspieler

Programmieraufgabe - Stufe: Medium:

Scala | Akka | TCP-Stream-Messages - Implementieren Sie einen Client-Handler für TCP-Stream-Messages, verarbeiten Sie diese und senden Sie das Ergebnis an den Absender und databaseSaverActor zurück.

Bildquelle: gottlob

Beitrag teilen

Erfahren Sie mehr über die Einstellung von Technikern

Abonnieren Sie unseren Learning Hub, um nützliche Einblicke direkt in Ihren Posteingang zu erhalten.

Kodierfähigkeiten nahtlos verifizieren & entwickeln.

Sehen Sie DevSkiller-Produkte in Aktion.

Sicherheitszertifizierungen & Konformität. Wir sorgen dafür, dass Ihre Daten sicher und geschützt sind.

DevSkiller-Logo TalentBoost-Logo TalentScore Logo