Ich hatte ein Interview mit GS in ihrem Büro in Bengaluru. Ich habe 4 Jahre Erfahrung in der Full-Stack-Entwicklung mit Java. Ich hatte einen Anruf von einem Berater erhalten.
Runde 1
Mit welchen Konzepten sind Sie in Java vertraut? Ich sagte Sammlungen. Er fragte, welche Sammlungsklassen Sie verwendet haben? Ich sagte HashMap ArrayList und HashSet.
Wann würden Sie Set und wann eine Liste verwenden? Ich sagte, Set unterstützt eindeutige Nicht-Null-Elemente und List hat diese Einschränkung nicht. Wenn ich also einzigartige Elemente möchte, verwende ich Set. Er fragte nach irgendwelchen anderen Überlegungen? Ich sagte die Art der Abfragen, die für die Sammlung ausgeführt werden sollen. Wie Suche. Er fragte nach einem Beispiel? Ich sagte – Mitarbeiterdatenbank. Mitarbeiter müssen eindeutig sein, damit wir die Liste verwenden und mit der binären Suche oder einer ähnlichen Technik suchen können, da sie im Allgemeinen in einer bestimmten Reihenfolge sortiert sind. Aber ich glaube, er hatte die O(1)-Lookup-Time-Antwort oder Set erwartet. Ich erklärte die Funktionsweise von HashMap und HashSet und wie dies einem Entwickler helfen würde, die Einzigartigkeit von Elementen einfach zu erreichen, aber der Interviewer war von meiner Antwort auf seine ursprüngliche Frage nicht überzeugt.
Was ist der Vertrag von equal() und hashCode()? Was passiert, wenn einer außer Kraft gesetzt wird, der andere jedoch nicht?
Finden Sie das zweite Minimum in einem bestimmten Array .
Suchen Sie den Drehpunkt in einem sortierten und gedrehten Array.
Irgendeine Frage an mich?
Runde 2
Geben Sie eine kurze Vorstellung über Ihre Berufserfahrung.
Geben Sie einen Überblick über den Entwurf Ihres aktuellen Projekts.
Angenommen, ich habe eine Benutzeroberfläche, in der es eine Liste oder Tabelle mit Artikeln gibt und jeder Artikel über ein Gewinnattribut, ein Rabattattribut usw. verfügt. So stellen Sie sicher, dass mehrere Benutzer den Status eines Artikels nicht inkonsistent hinterlassen. Der Benutzer kann die Attribute aktualisieren oder ein anderer Webdienst kann das Gleiche tun. Ich habe vorgeschlagen, die Setter-Methoden des Elements zu synchronisieren. Er fragte, wie man die Gegenstände sortiere. Ich sagte, die Elemente würden sich in einer Array-Liste befinden und implementierte die Comparable-Schnittstelle. Er bat um einen funktionierenden Code. Als ich den Ausdruck innerhalb der Methode „compareTo()“ schrieb, sagte er, dass das Design nicht flexibel sei, da es eine harte Codierung der Sortierkriterien gebe. Er sagte, wenn jemand nach einem anderen Attribut sortieren möchte, sei es unmöglich, so viele doppelte Objekte zu verwalten. Ich sagte, wir können es mit dem Factory Method Pattern schaffen. Damit beendete er die Interviewrunde effektiv. Irgendwann zwischendurch hatte er die Comparator-Schnittstelle erwähnt und ich habe ihm erklärt, wie sie funktioniert. Ich sagte, es sei eine gute Wahl, wenn man die vorhandenen Klassen nicht ändern möchte. Ich denke, er hatte die Implementierung der Methode „compare()“ erwartet, da diese keine doppelten Objekte erfordern würde und die Sortierung nach unterschiedlichen Kriterien erfolgen kann, indem einfach Comparator in verschiedenen Klassen implementiert wird, eine Klasse für jedes Sortierkriterium, und dann die Methode „sort()“ der Klasse „Collections“ mit dieser Comparator-Implementierung aufgerufen wird.
Irgendeine Frage an mich?
Mir wurde gesagt, ich solle für heute gehen. Tipp: Versuchen Sie, Entwurfsmuster nicht zur Sprache zu bringen, es sei denn, Sie werden dazu aufgefordert oder Sie haben Erfahrung in der Lösung von Problemen mit Entwurfsmustern. Hören Sie dem Interviewer zu und seien Sie wachsam. Sie geben Hinweise. Auch in Runde 1 hatte ich bei der rotierten Array-Frage einen Fehler gemacht. Er gab einen Testfall an, bei dem mein Code fehlschlagen würde. Ich habe die Falle behoben. Gönnen Sie sich vor dem Vorstellungsgespräch ausreichend Schlaf. Alle Übungsaufgaben für Goldman Sachs ! Quiz erstellen