Wie Scala-Entwickler interviewt werden

17

Wie werden Scala-Programmierer interviewt? Nach welchen Aspekten sucht der Interviewer, wenn er einen Scala-Entwickler interviewt?

Prasonscala
quelle
10
Sie müssen FizzBuzz auf einer Leiter codieren.
Job
2
@ Job Zusätzliche Punkte, wenn FizzBuzz State- und IO-Monaden verwendet! :-)
Daniel C. Sobral
Ich fand einige Fragen an die Scala-Entwickler und beschloss, selbst einige Antworten zu schreiben. Wenn
pedrorijo91

Antworten:

17

Zunächst würde ich sagen, warum Sie einen Scala-Entwickler brauchen. Ist es wirklich Scala, die Sie brauchen? Denken Sie darüber nach, was mit Scala zusammenkommt (IDE, Build-Tools, Bibliotheken, eine weitere Komplexitätsebene über Java usw.). Zurück zur Frage. Es geht um zwei Aspekte: Theoretisches Verständnis und praktische Fähigkeiten. Lass dich nicht von der "Theorie" täuschen. In Scala ist das genauso wichtig wie in Java die Praktikabilität.

Theoretisch

  • Sehen Sie, ob sie wissen, um welches Funktionsparadigma es sich wirklich handelt. Bitten Sie sie, die beiden Paradigmen (FP vs. Imperativ) in Philosophie und Praxis zu vergleichen. Wenn sie Beispiele aus Sprachen nennen können, die FP vollständig oder teilweise unterstützen, ist dies ein Plus für sie.

Theorie und Praxis mischten sich

  • Prüfen Sie, ob sie tatsächlich die richtige Funktionsprogrammierung durchführen können. Fragen Sie sie nach Listen, Karten, Zippen und Rekursionen. Dann kommen die Verschlüsse, Lambdas, Reduktion, Funktionen höherer Ordnung und Unveränderlichkeit.

Praktisch

  • Sehen Sie nach, ob sie ein Code-Snippet in eine gute funktionale Alternative umgestalten können (siehe oben). Versuchen Sie es mit einer Schleife, die Mathematik oder ähnliches implementiert.

  • Finden Sie ihren Geschmack für funktionalen vs. imperativen Stil. Entscheiden Sie sich für einen funktionaleren Stil, aber seien Sie vorsichtig, er geht nicht bis an die Grenzen des Entwicklers.

  • Sehen Sie, wie viel sie über Scala-Bibliotheken (z. B. Lift, Versand usw.) und Tools (z. B. SBT, fsc, IDEA) wissen.

  • Sehen Sie, wie gut sie Java (Code -und- Tools) nutzen können. Scala ist eng an Java gekoppelt, insbesondere in anspruchsvolleren Umgebungen. Das zu wissen ist ein großes Plus.

Theoretisch

  • Bitten Sie sie, Scala mit Java zu vergleichen (PHP, C ++, Objective C oder was auch immer) und Ihnen mitzuteilen, was mit Scala nicht stimmt. Sehen Sie, ob sie die Probleme sowie die Vorteile verstehen. Bitten Sie sie, Beispiele aus der Praxis zu nennen, bei denen die Mängel von Scala zu Problemen führen können (z. B. Es fällt neuen Joes schwer, sich zurechtzufinden, da die Unterstützung im Vergleich zu Java usw. sehr begrenzt ist).

Praktisch

  • Überprüfen Sie, ob sie mit der Community verbunden sind. Fragen Sie nach Martin Odersky und David Pollak. Bitten Sie sie, einige Scala-Projekte zu nennen und sie Ihnen zu beschreiben (Facebook, Twitter, FourSquare, DBPedia und DBPedia SpotLight). Sehen Sie nach, ob sie wissen, wie genau Scala in diesen Projekten verwendet wird. Haben sie die Artikel gelesen, die Videos angeschaut usw.?

  • Fragen Sie sie nach den Büchern (es gibt nur wenige). Je mehr sie wissen, desto besser.

  • Als letzte Warnung darf ich sagen, dass brillante Sprachen das seltsame Potenzial haben, die falschen Leute anzulocken. Seien Sie vorsichtig mit der Art, die aus den falschen Gründen zu Scala kommt. Hier sind einige:

    • Scala ist für Privilegierte (ich fühle mich schlau, ich fühle mich so anders als andere Joes, ich habe einen brandneuen, glänzenden Doktortitel, ich hasse es, weil es für Retardierte ist, Java ist oberflächlich, Scala ist so elegant usw. ). Dieser Typ ist in ernsthaften Projekten nicht produktiv und schwierig zu handhaben.
    • Ich bin in die Syntax von Scala verliebt und würde meine DSL gerne überall dort schreiben, wo ich die Möglichkeit habe, Code zu schreiben. Diese Art liebt es, Scalas Besonderheiten bis zum letzten Tropfen destruktiv auszunutzen. Sie fühlen sich großartig, wenn sie kryptischen und überprägnanten Code schreiben, bis er unleserlich wird. Diese Art ist besonders gefährlich, da ihr Code nicht lesbar ist. Ihr Werbegeschenk ist ihre Liebe zur Überlastung der Bediener, zu seltsamen Namen und zum Schreiben von Einzeilern.
    • Ich bleibe bei Scala bis zum letzten Tropfen, egal was passiert. Dies ist der naive puristische Typ. Sie können keine Kompromisse eingehen und das Projekt leidet, wenn ein hybrider Ansatz erforderlich ist, wie dies bei Projekten in der Praxis der Fall ist.

PS: Wenn du einen guten Joe gefunden hast, dann lass es mich auf jeden Fall wissen, wenn wir welche brauchen;)

Ashkan Kh. Nazary
quelle
@ Dave Briccetti, ich habe die Idee "Verbunden mit der Community" von Dave erhalten und mich dazu entschlossen, sie auszuarbeiten. Am Ende war es eine sehr lange Antwort. Dank geht an Dave für die Erwähnung der Gemeinde;)
Ashkan Kh. Nazary
Guter Eintrag. Wer bist du?
Dave Briccetti
@ Dave, ich bin momentan der Hauptentwickler @ AYLIEN, der NLP nach Scala-Art macht.
Ashkan Kh. Nazary
Insgesamt eine großartige Antwort, aber vor allem wegen der kurzen Liste der "falschen Gründe" +1. Die gleichen Pathologien können in C ++ Fanatiker gefunden werden.
DarenW
1
Man kann dieses Interview wahrscheinlich über die Hälfte bestehen, ohne jemals in Scala programmiert zu haben. Ist es ein Fehler oder eine Funktion? Ich bin überrascht, dass Ihre Schlussfolgerung in Bezug auf die Programmiersprache nicht agnostischer ist, z. B., dass ein guter Scala-Entwickler ein guter Entwickler ist, nur mit einem anderen syntaktischen Zucker.
Arthur Havlicek
8

In einem realen Interview ist es die halbe Miete, Scala zu kennen. Es ist immer schwierig, einen guten Programmierer zu finden, unabhängig von der Sprache!

Scala-Programmierer tendieren dazu, in die Sprache zu kommen, weil sie in Java bereits an der Spitze ihres Spiels standen und „es auf die nächste Stufe heben“ wollten.

Wenn Sie genügend Scala-Entwickler für ein Interview zur Verfügung haben, können Sie sich glücklich schätzen. Wenn nicht, könnten die relevanteren Fragen lauten: „Nach welchen Aspekten sollte ich bei einem Programmierer suchen, der für die Verwendung von Scala geschult wird?“ Und „Welche Unternehmen können derzeit Schulungsdienste anbieten?“.

Kevin Wright
quelle
1
Ich möchte sagen, dass nicht alle Scala-Entwickler in Java (oder was auch immer) top sind. Viele von ihnen lieben einfach das Gefühl, dass Scala ihnen "Ich bin anders" oder "Ich bin schlau" gibt. Viele haben nicht die geringste Ahnung, worum es bei Scala wirklich geht. Sie sollten vorsichtig mit ihnen sein ;-)
Ashkan Kh. Nazary
@ ashy_32bit - Das wird heutzutage immer wahrer, aber es war nicht mehr so, als ich dies im Jahr 2011 beantwortete
Kevin Wright
7

Ich mag es, Lösungen für kleine Probleme wie dieses zu finden: Machen Sie ein Histogramm der Ergebnisse des 200-maligen Werfens von zwei sechsseitigen Würfeln.

In den Kommentaren finden Sie einige interessante Antworten: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Jemand mit einer Lösung wie Daniel Sobral oder dieser von Kevin Wright: http://ideone.com/8LFs3 wäre einen genaueren Blick wert.

Wenn die Antwort wie Java-Code aussieht, ist der Antragsteller möglicherweise nicht weit genug.

Ich würde auch gerne sehen, dass die Person mit der Scala-Community verbunden ist: Kennt die Bücher, Autoren, Open Source-Entwickler, Benutzergruppen, interessante Leute.

Dave Briccetti
quelle
Obwohl es unseren Branchendurchschnitt um 2 übertrifft ;-)
Duncan McGregor,
4

Ich habe noch nie Scala eingestellt, aber ich würde nach einem Verständnis dafür suchen, wie Implizite funktionieren, wie Klassenmuster geschrieben werden und welche Grundlagen die funktionale Programmierung hat.

Daniel C. Sobral
quelle