Grüße, liebe Entwicklerkollegen!
Im Laufe meiner Karriere habe ich über 100 Interviews mit Entwicklern aller Ebenen geführt, von Junior-Entwicklern bis hin zu erfahrenen Veteranen. Und wissen Sie was? In dieser Zeit habe ich einen Satz von 10 kniffligen Fragen entwickelt, die ich jedem neuen Kandidaten stelle.
Warum? Ganz einfach: Mit diesen Fragen kann ich mehr tun, als nur die technischen Fähigkeiten einer Person zu beurteilen. Sie gehen tiefer und untersuchen ihren Denkprozess, ihre Herangehensweise an die Problemlösung, ihre Teamfähigkeit und andere wichtige Eigenschaften.
Sind Sie bereit für diesen intellektuellen Kampf? Dann machen Sie sich bereit, denn diese Fragen sind nichts für schwache Nerven!
Angenommen, Sie implementieren ein System zur Bearbeitung von Zeitschriften, bei dem Redakteure Artikel im Admin-Bereich bearbeiten können. Wie würden Sie verhindern, dass zwei Redakteure gleichzeitig denselben Artikel bearbeiten und die Änderungen des jeweils anderen überschreiben?
Was sind die Prinzipien der Bereitstellung ohne Ausfallzeiten, also eines Ansatzes, bei dem eine Anwendung ohne Dienstausfallzeiten bereitgestellt wird? Wie wird dies erreicht?
Nennen Sie Aspekte Ihres bevorzugten Frameworks, die Ihnen nicht gefallen oder die nicht so funktionieren, wie Sie es gerne hätten. Erklären Sie, wie und wo diese Probleme auftreten und wie sie verbessert werden könnten.
4. Umgang mit lang laufenden Cron-Jobs
Was könnte passieren, wenn die Ausführung Ihres Cron-Jobs, der jede Minute ausgeführt wird, länger als eine Minute dauert? Wie kann dies verhindert werden?
5. Denormalisierung von Daten in Datenbanken
Mussten Sie schon einmal Daten in einer Datenbank denormalisieren? Wenn ja, welches Problem wollten Sie lösen, vor welchen Herausforderungen standen Sie und wie hätte es besser gehen können?
6. Externe Anrufe in Tests simulieren
Wie umgehen Sie beim Schreiben von Tests das Problem externer Aufrufe durch den Code, den Sie testen? Stellen Sie sich das Szenario vor, in dem externe Aufrufe bei CI (Continuous Integration) verboten sind. Warum ist das eine gute Vorgehensweise?
7. E-Mail-Änderungen mit externen Systemen synchronisieren
Angenommen, Ihr System implementiert eine Funktion zum Ändern von E-Mails. Die E-Mail wird jedoch auch in einem externen System gespeichert, beispielsweise einem Zahlungsprozessor, der E-Mails an Benutzer sendet (die Benutzer interagieren jedoch nicht direkt damit). Wie würden Sie die E-Mail-Synchronisierung mit dem externen System implementieren?
Wie erfahren Sie von Fehlern, die in der Produktion auftreten? Verlassen Sie sich auf Benutzerberichte oder haben Sie automatisierte Mechanismen im Einsatz?
Wie würden Sie eine einfache Chat-Anwendung entwerfen? Sie können den Backend-Ingenieur nach dem Backend-Teil und den Frontend-Ingenieur nach dem Frontend-Teil fragen. Dieses Gespräch könnte viele Verzweigungen haben.
10. Isolieren von Tests in einer Mehrbenutzerumgebung
Wie wird die Testisolierung sichergestellt, wenn mehrere Tests gleichzeitig ausgeführt werden und auf die Datenbank zugreifen und diese möglicherweise ändern? Wenn Ihr Framework keine Isolierung bietet, wie würden Sie diese implementieren oder verbessern?
Zusätzliche Tipps:
Ermutigen Sie den Kandidaten, seinen Denkprozess und die Gründe für seine Antworten näher zu erläutern.
Bewerten Sie ihre Problemlösungsfähigkeiten, ihre Fähigkeit zum kritischen Denken und ihr Wissen über relevante Technologien.
Beurteilen Sie während des gesamten Vorstellungsgesprächs ihre Kommunikationsfähigkeiten und ihre Teamfähigkeit.