- Eine DB-bezogene Programmieraufgabe, die ich 2013 bei MemSQL (heute SingleStore) bekam
→ „Fügen Sie zu Memcached, einem Key-Value-Store, einen mult-Befehl hinzu, ähnlich zu incr / decr. Sie haben eine Stunde.“
- Diese Frage ist eine hervorragende technische Interviewaufgabe, weil sie Kandidaten sauber in drei Typen einteilt
- Typ 0: Menschen, die schon davon überrascht sind, dass sie echten Code anfassen müssen. Realistisch kommen sie gar nicht erst so weit, aber man sollte sie nicht einstellen
→ Damals wurde MemSQL in C++11 entwickelt, daher passte es sehr gut zum Ziel, an dem in C geschriebenen Memcached zu arbeiten.
- Typ 1: Menschen, die das Problem sehen und sagen: „Multiplikation ist doch nur wiederholte Addition, also kann man wahrscheinlich das Vorhandene wiederverwenden! Aber dann muss man die Locks behandeln ...“
→ Sie irren lange herum, schaffen es am Ende nicht, funktionierenden Code zu schreiben, und werden ebenfalls nicht eingestellt
- Typ 2: Menschen, die sagen: „Multiplikation ist dasselbe wie Addition, außer dass man dort, wo
+ steht, * machen muss“ und dann per Copy & Paste schnell + durch * ersetzen
→ Wer in dieser Gruppe ist, hat eine sehr hohe Wahrscheinlichkeit, eingestellt zu werden
- Die besten Kandidaten haben dann noch viel Zeit übrig und können ihr Ergebnis aufpolieren, prüfen, ob die Formatierung konsistent ist, Unit-Tests ergänzen und sogar die „Designentscheidungen“ noch einmal überprüfen
Fazit
- Ich mag diese Programmieraufgabe, weil sie ein verkleinertes Abbild echter Programmierarbeit ist
- Bei der Pflege großer Codebasen gibt es zwangsläufig Code, den man nicht vollständig versteht, oder unnötige Idiome und ähnliche Dinge
- Dieses Problem eignet sich perfekt für Interviews, weil es genau eine richtige Antwort gibt:
bool incr in int opcode zu ändern
- Es gibt derzeit zwei arithmetische Befehle (
incr/decr), und diese sollen auf drei Befehle erweitert werden
- Diese Aufgabe ist gut darauf ausgelegt, ungeeignete Kandidaten auszusieben und qualifizierte Kandidaten auf einen guten Weg zu führen
3 Kommentare
Entscheidend wird wohl sein, wie schnell man den entsprechenden Code findet.
Es erscheint mir besser, weil es nicht darum geht, ein Programm komplett von Grund auf neu zu schreiben, sondern darum, einer bereits existierenden Codebasis Funktionen hinzuzufügen (und zwar einem bereits gut bekannten und weit verbreiteten Open-Source-Projekt).
Wie zu erwarten auf HN … die Person, die damals die ursprüngliche Interviewfrage gestellt hat, ist aufgetaucht und macht jetzt ein AMA.
https://news.ycombinator.com/item?id=31065143