Software Entwickler Interview Aufgaben?
hallo, ich habe in ein paar Tagen ein Vorstellungsgespräch für eine Stelle als Werkstudent in der Softwareentwicklung. In der Stellenanzeige steht, dass man erste Erfahrung mit Java haben muss. Kennt ihr ein paar typische Aufgabenstellung in Bezug auf Java, die in dem Vorstellungsgespräch abgefragt werden könnten?
4 Antworten
Üblicherweise muss man Programmieraufgaben auf Whiteboard/Papier lösen.
Das kann von Fizz Buzz bis hin zu einem hoch komplexen Problem (bei dem keine Lösung erwartet, sondern nur die Herngehensweise getestet werden soll) alles sein.
Für eine Werkstudentenstelle (im niedrigen Semester) würde ich mit einfachen Fragen rechnen, die a) minimale Programmiererfahrung und b) Kommunikationsfähigkeit testen sollen.
Du könntest dir auf Leetcode mal ein paar einfache Fragen anschauen. Ein paar Beispiele:
- Fizz Buzz
- MxM Matrix Transponieren
- Produkt aller Zahlen eines Arrays ohne das aktuelle Element (division nicht erlaubt ;))
Da könnte man dir ungefähr alle Grundlagen auflisten, genauso gut könntest Du ein Java-Buch lesen.
Wenn Du diese ersten Erfahrungen nicht hast, wird das ziemlich sicher auffallen, egal ob Du vorher die Aufgaben kennst oder nicht. Dann sollte es lieber vorher auffallen, als später in der Probezeit.
Ist unterschiedliche manche haben einen kleinen Test auf Papier mit theoretischen Fragen, manche wollen irgendwelche Beispielaufgaben gelöst haben.
So was wie das Variablen vertauschen was ja schon genannt wurde, manchmal fragen die auch einfach wie min irgendwas bestimmtes simples machen würde.
Im Internet gibts auch Listen an Beispielaufgaben, aber ganz doof sind die ja nicht, wenn die jeder kennt dann sind die ja auch wertlos.
Da könnten solche Fragen kommen wie: "Erstellen Sie eine Funktion, zum Vertauschen des Inhalts zweier Variablen" oder "Erstellen Sie eine Funktion, welches die Zahlen eines Arrays aufsteigend / absteigend sortiert", ...
Wenn keine Angabe gemacht wird, dann würde ich den einfachsten Algorithmus wählen, da man es wahrscheinlich von Hand aufschreiben muss. Du könntest aber erwähnen, dass andere Algorithmen besser wären, weil ...
Das würde sicher einen professionellen Eindruck hinterlassen. Allerdings solltest du dann darauf achten, nicht zu lange über die Alternativen zu diskutieren, da dies ja nicht die Aufgabe war.
Ist die erste Frage ein Scherz?
Oder eher ein Test ob man mehr Wert auf Performance oder Readability legt?
Oder war hat‘s damit auf sich, wo ist da die Schwierigkeit?
Nein, das ist kein Scherz. Das wäre eine leichte Aufgabe, um dem Bewerber Selbstvertrauen zu geben und zu sehen, wie er generell an eine solche Aufgabe herangeht. Danach kann man die Schwierigkeit entsprechend steigern. Wenn er diese Aufgabe bereits nicht erfüllen kann oder die Syntax inkorrekt ist, dann weiß man, dass er keine Erfahrung mit Java bzw. Programmieren hat.
Die Schwierigkeit dieser Aufgabe besteht darin, zu erkennen, dass man eine extra Variable zum Zwischenspeichern des Inhalts einer der beiden Ursprungsvariablen benötigt...
Ah ok. Das würde mir kein Selbstvertrauen geben sondern mich ziemlich verunsichern. Ich würde da denken das ist eine Trickfrage.
Denkst du es macht nen (negativen) Unterschied/Eindruck wenn man da bei Integern
a = a+b;
b = a-b;
a = a-b;
anstatt
int temp = a;
a = b;
b = temp;
schreibt?
Sollte man am besten alle Lösungswege auflisten und dann den besten begründen?
Spontan habe ich an die zweite Variante gedacht. Die erste ist aber auch nicht schlecht und braucht keine extra Variable, geht halt nur bei Zahlenwerten. Falls nach einer Funktion gefragt ist, wäre der Code noch nicht vollständig ;-)
Im Interview würde ich eher die zweite Variante wählen, da diese für einen Außenstehenden leicht nachzuvollziehen ist.
Einen negativen Eindruck macht die erste Version nicht. Generell geht es bei den meisten Aufgaben im einen Interview eher darum, herauszufinden, wie der Bewerber an eine Aufgabe herangeht und weniger um das Endergebnis.
Was denkst du welcher Sortieralgorithmus bei der zweiten Frage den besten Eindruck macht?
Code sollte ja sowohl performant als auch verständlich sein.