Was möchten Kandidaten für Interviews zum Schreiben von Code?

Hallo Habrowsk. Am Vorabend des Beginns des Java QA Engineer- Kurses teilen wir Ihnen die Fortsetzung dieses Materials mit
.




Bei meinen ersten Interviews wusste ich das nicht. Aber die Entwickler haben mich nicht nur beobachtet - sie haben es erwartet. Sie erwarteten, dass ich nach folgendem Algorithmus vorgehen würde:

Verfeinern Sie die Aufgabe

  • Fragen Sie: "Was meinen Sie mit dem Wort Palindrom?"
  • Dies beantwortet die Frage: Wird der Kandidat sofort mit der Lösung des Problems beginnen - ohne überhaupt zu bemerken, dass seine technischen Bedingungen nicht völlig klar sind? Oder ein bisschen nachdenken und die Anforderungen klären? “

„Wir meinen eine Sequenz, die dasselbe von links nach rechts und von rechts nach links liest. Ihre Entscheidung muss zwischen Groß- und Kleinschreibung unterscheiden: kleines r ist nicht identisch mit großes r. "

Beginnen Sie mit Beispielen

  • Fragen Sie: "Die Wörter" Einkommen "und" Hütte "sind als Beispiele angegeben. Was ist mit Redewendungen wie "Ist die Rose auf Azoras Pfote gefallen?" Was ist mit einer leeren Zeichenfolge oder einer einzelnen Zeichenfolge?
  • Dies beantwortet die Frage: Wird der Kandidat eine ausreichende Anzahl von Grenzfällen berücksichtigen? Wie genau und aufmerksam wird es sein?



Machen Sie den Interviewer kurz mit dem Algorithmus vertraut, bevor Sie mit der Codebeschreibung beginnen


Wie geht der Kandidat mit der Lösung des Problems um? Spricht er seine Gedanken laut aus, damit der Interviewer sie hört?

Zum Beispiel: string s = "alla" .

Wir können die Hilfsmethode für den Java-String charAt (int i) verwenden. Geben Sie den Zeilenindex in die Methode ein, und das Zeichen wird am Index ausgegeben:

 s.charAt(0) == 'a' s.charAt(1) == 'l' s.charAt(2) == 'l' s.charAt(3) == 'a' 

Um die Länge eines Strings herauszufinden, können Sie die length() -Methode verwenden:

s.length == 4

Um das letzte Zeichen herauszufinden, können Sie Folgendes verwenden:

 int len = s.length s.charAt(len - 1) 

Wir haben die Zählung bei 0 begonnen, sodass das letzte Zeichen "Länge minus 1" ist.

Nennen wir das erste Zeichen "zuerst" und das letzte "zuletzt".

  • Wenn das erste Zeichen s.charAt (first) nicht mit s.charAt (last) übereinstimmt, ist dies kein Palindrom. Ausgabe falsch.
  • Wenn das erste Zeichen s.charAt (first) mit s.charAt (last) übereinstimmt, wird der nächste Zeichensatz ausgewertet, wobei ein Zeichen von "first" und "last" verschoben wird. Wenn alles passt, drucken Sie true.
  • Nachdem Sie den Algorithmus mit dem Interviewer überprüft haben, können Sie mit dem Schreiben von Code beginnen:

 public boolean isPalindrome(String s) { int first = 0; int last = s.length() - 1; while (first < last) { if (s.charAt(first) != s.charAt(last)) { return false; } first++; last--; } return true; } 

Debuggen und Testen


  • Nehmen Sie die ersten Testfälle und versuchen Sie sich vorzustellen, was passiert, wenn Sie sie in den Code einfügen.
  • Interviewer überprüfen Ihre Aufmerksamkeit beim Debuggen. ( Bemerken Sie Fehler im nativen Code, ohne dass Sie von außen dazu aufgefordert werden? )
  • Interviewer geben Hinweise, wenn Sie es schaffen, einen guten Eindruck auf sie zu machen. ( Wenn wir dem Kandidaten Hinweise geben, wird er diese verwenden? Ist er bereit, sich die Meinungen anderer anzuhören? Kann er mit Menschen in höheren Positionen zusammenarbeiten? )

Zeigen Sie Ihren Code anderen Personen und sammeln Sie deren Feedback


Ich zeigte meinem Freund-Entwickler meine Lösung für das Palindrom-Problem. Er verzog das Gesicht: „Warum haben Sie die Variablen zuerst und zuletzt verwendet? Und warum hast du die Loop-Schleife benutzt, wenn du mit der for-Schleife zurechtkommst? Alles könnte kürzer, eleganter und schneller gemacht werden:

 public boolean isPalindrome(String s) { int len = s.length; for (int i = 0; i < len / 2; i++) { if ( s.charAt(i) != s.charAt(len - 1 - i)) { return false; } } return true; } 

Was weiter


Das Beherrschen der Programmiersprache über Nacht wird nicht funktionieren. Daher ist es besser, diesen Algorithmus zu befolgen:

  • Hier finden Sie grundlegende Online-Programmieraufgaben.
  • Versuchen Sie, sie mit Papier und Stift zu lösen.
  • Wenn Sie sie nicht lösen können, lesen Sie in der offiziellen Dokumentation der Programmiersprache nach, welche integrierten Methoden Ihnen helfen können.
  • Formulieren Sie Ihre eigene Entscheidung, bevor Sie nach jemand anderem suchen. Wenn Sie selbst Informationen sammeln und studieren, besteht die Möglichkeit, dass sich diese Informationen dauerhaft in Ihrem Kopf festsetzen.
  • Vereinbaren Sie keine Cramming-Sitzungen. Sie speichern die Informationen also einfach im Kurzzeitgedächtnis.
  • Übe kurze Läufe, 15 Minuten am Tag. So werden die Informationen in ein Langzeitgedächtnis verschoben und Sie können sich auch bei extremem Stress während des Interviews daran erinnern.
  • Setzen Sie sich nicht all dieser Qual aus, nur um den Test an der Tafel zu bestehen. Ziel höher! Stelle dich der Aufgabe, ein professionellerer Programmierer zu werden!

Source: https://habr.com/ru/post/de481210/


All Articles