Ich muss hier zugeben, dass ich einer derjenigen bin, die gerne Algorithmusfragen in Interviews stellen, aber ich muss betonen, dass die tatsächliche Antwort auf die Frage absolut irrelevant ist. Es ist mir egal, ob der Befragte die Antwort kennt oder nicht. Stattdessen zielt diese Frage für mich auf verschiedene Aspekte ab, wie zum Beispiel die folgenden - in der Reihenfolge ihrer Wichtigkeit:
Bedarf
Solche Fragen werden bewusst unterbewertet. In Ihrem Beispiel sind keine weiteren Details zu der Sequenz angegeben. Wenn Sie einen Befragten haben, der Sie fragt, ob diese Nummern tatsächlich sortiert sind, dann ist das ein gutes Zeichen. Er hat die richtige Einstellung, um Kunden nach weiteren Details zu fragen, die helfen, in kürzerer Zeit zu einer besseren Lösung zu gelangen. Der Kandidat kann auch mit der Idee spielen, O (n) -Raum zu verwenden, um ein Array von N Zahlen zu speichern, aber er sollte dies nicht tun, ohne nach weiteren Details zu X und Y zu fragen. Nehmen wir an, dass X und Y zwischen 1 und 1000 liegen Starten Sie dann eine Array-basierte Lösung. Aber wenn ich Ihnen sage, dass das Intervall 1 und 1 Milliarde beträgt, wird das Problem ein völlig anderes. Lassen Sie mich noch einmal betonen, dass mir die Lösung egal ist.
Standardtechniken
Ich möchte keinen Programmierer einstellen, der nicht einmal weiß, was O (n) bedeutet. Das ist ein absolutes Muss, wenn Sie in diesem Bereich eine anständige Ausbildung hatten. Es ist aber auch wichtig, nicht nur zu wissen, was es bedeutet, sondern dieses Wissen auch tatsächlich anzuwenden. In Ihrem Beispiel möchte ich, dass ein Kandidat erkennt, dass er die Daten nicht sortieren darf (ohne weitere Fragen zu stellen, die auf die Option einer Bucket-Sortierung oder anderer O (n) -Sortierungsansätze abzielen), da eine Sortierung erforderlich ist. O (n log n) im Allgemeinen.
In ähnlicher Weise zielen andere Algorithmusfragen auf Standardtechniken wie Baum- oder Graphendurchquerung oder Rekursion ab. Ein Kandidat kann an einer dieser Techniken ausrutschen, was keinen guten Eindruck hinterlässt. In solchen Fällen möchte ich jedoch genauer untersuchen, ob der Kandidat überhaupt einen CS-Hintergrund hat. Natürlich hängt es von der Zielposition ab, aber in der Regel ist ein Entwickler, der weder mit der Komplexität der Laufzeit noch mit typischen Datenstrukturen und deren Durchläufen vertraut ist, keine Hilfe.
Problembehandlung
Nachdem Sie die Frage gestellt haben, überwachen Sie den Kandidaten genau. Wie reagiert er / sie? Sie erhalten die besten Ergebnisse hier von Kandidaten , die absolut keine Ahnung haben, wie das Problem zu lösen , auf den ersten . In diesem Zusammenhang wird geprüft, was passieren kann, wenn später am Arbeitsplatz eine ähnliche Situation eintritt. Möglicherweise stoßen Sie während Ihrer Entwicklung auf ein solches Problem, und es ist gut zu wissen, wie Ihr Kandidat mit diesen Problemen umgeht, auch wenn er nicht in der Lage ist, alles selbst zu lösen.
Beispiel: Sie möchten nicht, dass Ihr Kandidat für die nächste halbe Stunde in den lautlosen Modus wechselt! Überprüfen Sie, ob er mit intelligenten Fragen aufwarten kann (siehe Anforderungen). Überprüfen Sie, ob er über den Tellerrand hinaus denkt, sobald er feststellt, dass er dies nicht kann. Sogar eine "lustige" Gegenfrage wie "Darf ich die Option" Telefon an Mitarbeiter "verwenden?" ist ein gutes Zeichen.
Wie antworte ich?
Im Allgemeinen sind die besten Antworten, die Sie auf diese Art von Fragen geben können, Gegenfragen! Eine Antwort sofort zu sagen scheitert im Grunde genommen an der ganzen Sache und ist in der Tat überhaupt keine gute Antwort, da all diese Fragen auf Kompromisse hindeuten, die Ihre Antwort impliziert, ohne dass Sie die erforderlichen Informationen haben, um dies intelligent zu machen Abtausch. Natürlich variiert die Qualität der Gegenfragen zwischen den Kandidaten.
Genereller Hinweis zu Interviewfragen: Gegenfragen sind selten eine schlechte Sache. In einem meiner eigenen Interviews wurde ich zum Beispiel gefragt: "Wenn Sie X implementieren müssten, würden Sie dafür C ++ oder Java wählen und warum?" - Ich habe einfach mit "Bin ich auf diese beiden beschränkt?" Kontert. Erraten Sie selbst, welche Reaktion Sie von einem Interviewer auf eine solche Gegenfrage erhalten - und wie einfach es Ihnen fällt, dem Interviewer tatsächlich zu zeigen, wozu Sie in der Lage sind.
find the missing element in O(N) or better
was in diesem Zusammenhang "oder besser" bedeutet . Es scheint die Art von Dingen zu sein, die mit einer einfachen while-Schleife gelöst würden, aber ich verstehe es trotzdem nicht - es ist entweder gelöst oder nicht gelöst , oder?