Der Codility-Test: Was Ihre Punktzahl wirklich misst
Die meisten Menschen fallen bei einem Codility-Test durch, weil sie glauben, sie hätten ihn bestanden. Die Beispiele in der Aufgabenstellung geben alle die richtige Antwort aus, der Editor sagt OK, die Einreichung geht durch — und der Bericht zeigt 40 %. Der Grund ist einfach und es lohnt sich, ihn zu kennen, bevor man einen Test macht: Die sichtbaren Beispiele fließen nicht in die Bewertung ein.
Wie die Bewertung tatsächlich zusammengesetzt ist
Jede Aufgabe wird nach zwei getrennten Kriterien bewertet, die separat ausgewiesen werden.
- Korrektheit — der Anteil der versteckten Testfälle, bei denen deine Ausgabe mit der erwarteten übereinstimmt. Eine Aufgabe wird mit mindestens sechs bewerteten Fällen ausgeführt, und deine Aufgabebewertung ist der Prozentsatz derjenigen, die bestehen. Die in der Aufgabenstellung gezeigten Beispiele dienen nur zur Demonstration, nicht als bewertete Fälle.
- Performance — ob die Lösung innerhalb der Zeit- und Speichergrenzen bleibt, wenn die Eingabe wächst. Das gilt nur für Aufgaben, bei denen Skalierbarkeit Teil der Punkte ist, und wird bewertet, selbst wenn alle Antworten korrekt sind.
Dieses zweite Kriterium wird von den meisten nicht berücksichtigt. Eine korrekte O(n²)-Schleife bei einer Aufgabe, die für O(n log n) ausgelegt ist, liefert zwar in jedem abgeschlossenen Fall die richtige Antwort, verliert jedoch die meisten Performance‑Punkte, weil die großen Fälle zeitlich abgebrochen werden.
Lies die Beschränkungen als Komplexitätsbudget
Der Abschnitt mit den Beschränkungen ist keine Dekoration. Er gibt an, welche Komplexität die Aufgabe akzeptiert, und ist das nützlichste Element auf der Seite.
- N bis zu 100 000 oder mehr — alles Quadratische wird abgebrochen. Gefordert werden Sortierung, ein Hash‑Map, zwei Zeiger oder eine Präfix‑Summe.
- N bis zu ein paar tausend — O(n²) ist in der Regel ausreichend, und nach einer ausgeklügelten Lösung zu greifen kostet Zeit, die du sonst brauchst.
- Werte bis zu 2 Milliarden — die Aufgabe signalisiert, dass ein 32‑Bit‑Accumulator überlaufen wird. In einer Sprache, in der das relevant ist, ist es hier relevant.
Ermittle die gewünschte Komplexität, bevor du eine Zeile schreibst. Bei einem maschinell bewerteten Test gibt es niemanden, der Punkte für ein gutes Gespür vergibt, das du nie umgesetzt hast.
Wohin die Punkte tatsächlich gehen
Drei Muster erklären den größten Teil des verlorenen Scores, und keines davon hat mit algorithmischer Fähigkeit zu tun.
- Randfälle, die niemand getestet hat. Leere Eingabe, ein einzelnes Element, alle Elemente gleich, die minimalen und maximalen zulässigen Werte. Genau das sind die versteckten Fälle, weil sie am günstigsten zu erstellen sind.
- Off-by-one am Rand. Inklusive versus exklusive Bereiche kosten mehr Codility-Punkte als jede Datenstruktur.
- Zeitüberschreitung bei Aufgabe drei. Der Timer läuft über den gesamten Test, nicht über jede Aufgabe. Eine Person, die bei jeder Aufgabe einen funktionierenden Brute‑Force‑Ansatz belässt, erzielt in der Regel mehr Punkte als jemand mit einer perfekten Lösung und zwei leeren Aufgaben.
Teilpunkte sind real, also nutze sie
Da der Score ein Prozentsatz der Fälle ist, ist ein ehrlicher Brute‑Force‑Ansatz weitaus mehr wert als ein leerer Editor. Die Reihenfolge, die unter Zeitdruck am besten abschneidet, ist fast immer dieselbe: Die offensichtliche Lösung schreiben, sie einreichen, dann optimieren und erneut einreichen. Man sammelt zuerst die Punkte und verbessert sie anschließend.
Wenn du weißt, dass deine Lösung zu langsam ist und du sie nicht beheben kannst, lass sie stehen. Eine zeitüberschrittene Einreichung bei den großen Fällen sammelt immer noch alle kleinen und mittleren Fälle, die sie besteht.
Die letzten zehn Minuten
Hör auf, neuen Code zu schreiben. Führe jede Aufgabe einmal mit leerer Eingabe, einmal mit einem einzelnen Element und einmal mit dem größten Wert aus, den die Vorgaben zulassen. Dieser Durchlauf bringt mehr Punkte als ein vierter Versuch bei der schweren Aufgabe und dauert drei Minuten.
Ein weiterer Hinweis, den man lieber vorher weiß, als ihn im Nachhinein zu entdecken: Die Plattform protokolliert, was im Tab passiert, einschließlich Fokuswechsel und eingefügter Code‑Blöcke, und der Arbeitgeber sieht diese Zusammenfassung neben deinem Score. Plane deinen Test als etwas, das du sitzend abschließt, nicht als etwas, das du aus anderen Fenstern zusammenfügst.
FAQ
Zählen die Beispiele in der Aufgabe zu meinem Codility-Score?
Nein. Die Beispiele in der Aufgabenstellung dienen nur zur Veranschaulichung. Dein Score ist der Prozentsatz der versteckten Testfälle, die deine Lösung besteht, weshalb eine Lösung, die alle angegebenen Beispiele abdeckt, trotzdem eine niedrige Punktzahl erhalten kann.
Wie sieht ein bestandener Codility-Score aus?
Es gibt keine einheitliche Bestehensgrenze – der Arbeitgeber legt sie fest. In der Praxis schauen die meisten Unternehmen auf den Gesamtdurchschnitt über alle Aufgaben hinweg und darauf, ob die Performance‑Scores zeigen, dass du die vorgesehene Komplexität erkannt hast.
Kann ich zu einer früheren Aufgabe zurückkehren?
In den meisten Codility‑Testkonfigurationen ja, der gesamte Test nutzt einen einzigen Timer und du kannst zwischen den Aufgaben wechseln, solange die Zeit nicht abgelaufen ist. Genau deshalb funktioniert es so gut, zunächst eine einfache Lösung zu speichern und später zu optimieren.
Erkennt Codility, wenn man den Tab wechselt oder Code einfügt?
Die Plattform protokolliert Fokuswechsel und große Einfügungen und meldet diese zusammen mit dem Score an den Arbeitgeber. Sie führt nicht automatisch zu einem Durchfallen, aber die Zusammenfassung ist für jeden einsehbar, der deinen Bericht liest.