Michael Shpilt
04.02.2021, 10:57 Uhr
Tipps für Coding Challenges
Softwareentwickler Michael Shpilt hat sich kürzlich bei einigen der größten Tech-Unternehmen der Branche beworben, berichtet von seinen Erfahrungen mit den Einstellungstests und gibt Tipps.
Michael Shpilt lebt in Israel, programmiert seit er 13 Jahre alt ist und arbeitet inzwischen seit zehn Jahren als professioneller Entwickler bei einer Firma, die sich der Verbesserung des Debugging für .NET-Entwickler widmet. Kürzlich hat er sich beworben und eine Reihe von Vorstellungsgesprächen bei einigen der größten Unternehmen der Tech-Branche absolviert. In einem Blogbeitrag berichtet er ausführlich über die Erfahrungen, die er dort gemacht hat und gibt nützliche Tipps, wie man sich insbesondere auf praktische Einstellungstests vorbereiten kann.
Die Vorstellungsgespräche in diesen Firmen waren laut Shpilt sehr unterschiedlich, aber sie hatten auch viele Gemeinsamkeiten, einschließlich einer großen Betonung von Codierungsproblemen. Diese Probleme konnten darin bestehen, etwas zu sortieren, alle möglichen Kombinationen auszudrucken oder den Weg aus einem Labyrinth zu finden. In seinem Beitrag geht es darum, was er bei Vorstellungsgesprächen über C# gelernt habe. Genauer gesagt, von den Programmierproblemen. Sein Fazit: Software zu entwickeln ist etwas ganz anderes als Bewerbungsgespräche zu führen.
Eine seiner Erkenntnisse ist, dass Top-Firmen wie Facebook oder Apple den Bewerbern nicht die wirklich schwierigen Fragen zur Bearbeitung vorlegen. Die meisten Fragen die er beantworten musste lagen irgendwo im mittleren Schwierigkeitsbereich. Viele Fragen betrafen eine klassische Implementierung eines rekursiven DFS oder BFS. Oder eine Variation des Bin-Packing-Problems. Manchmal musste er einen Binärbaum durchlaufen. In seltenen Fällen einen Heap verwenden. Aber auch an den einfachen und mittleren Fragen kann man furchtbar scheitern, denn Vorstellungsgespräche sind stressig. Sie müssen sehr schnell mit einer Lösung aufwarten. Er sagt, er habe gelernt, sich immer vor Augen zu halten, dass die Frage wahrscheinlich nicht knifflig, sondern eher einfach ist. Meistens stimmt das auch, und der Gedanke daran mildert etwas den Druck.
Übrigens erlauben alle großen Unternehmen den Kandidaten, Probleme in jeder Programmiersprache zu lösen. Selbst wenn die Stelle also z. B. für JavaScript ausgeschrieben ist, werden Sie trotzdem in der Lage sein, C#-Code zu schreiben.
Hier noch einige der Empfehlungen aus seinem englischsprachigen Artikel im Schnelldurchlauf:
- Mehrdimensionale Arrays sind für allgemeine Probleme geeignet, wie die Darstellung eines 2D-Labyrinths oder eines 3D-Würfels. Wenn Sie in nächster Zeit zu einem Vorstellungsgespräch gehen, sollten Sie die Syntax dieser auffrischen. Dazu gehören der Initialisierer, die Dimensionslänge und die jeweiligen Indizes der Spalten/Zeilen.
- Verwenden Sie Tuples, nicht Klassen. Sie haben eine kompaktere Syntax, es ist weniger zu schreiben. Und wenn Sie etwas ändern wollen, gibt es weniger zu ändern. Es bleibt mehr Zeit zum Nachdenken und möglicherweise um mehr Fragen zu beantworten.
- Denken Sie daran, dass Sie in einem Coding-Interview in einer Art Online-Notizblock-ähnlichen Umgebung schreiben werden, in der Sie keine Snippets, Autovervollständigung und all die anderen Vorzüge haben, die Sie von Visual Studio gewohnt sind.
- Binäre Operationen sind <<, >>, & und | sind bei Codierungsproblemen nützlich.
- Nützliche Dinge mit Strings und Arrays. Sie sollten Methoden auffrischen, wie beispielseise .Substring, .Contains, .Replace, string.Equals(), .ToLower(), .ToUpper(), string.Join und so weiter. Für Arrays ist die Methode Array.Sort sehr nützlich. Sie akzeptiert einen Comparison-Delegaten, um zu sortieren, wie Sie wollen.
- In Python ist alles kürzer. Kürzerer Code bedeutet mehr Zeit zum Nachdenken zu haben. Wenn Python für die Lösung taugt und sie es verwenden dürfen ...
- Verwenden Sie kurze Namen. Gemeint ist nicht die Methoden A und B nennen. Aber, dass Sie, wenn Ihr Problem darin besteht, durch ein Labyrinth zu iterieren und Sie einen Depth-First-Search-Algorithmus verwenden, die Methode ruhig DFS statt FindAWayInAMaze nennen können.
Das sind nur einige der Tipps, die Michael Shpilt in seinem Blogbeitrag gibt. Zu vielen Tipps hat er zudem Codebeispiele dazugepackt, so dass sie noch eingäniger werden. Inzwischen hat er übrigens seinen neuen Job bei Microsoft bekommen.