Ein Leitfaden für den zukünftigen Java-Entwickler. Vorstellungsgespräch und Karriere. Mittlere Java-Entwicklerinterviews Häufig gestellte Fragen zu Java-Interviews

Ich bin in eine andere Stadt gezogen, ich bekomme einen Job, ich gehe zu Vorstellungsgesprächen. Mir schien, dass die Fragen, die dort gestellt werden, obwohl bekannt, dennoch gesammelt, helfen können, sich vorzubereiten und sicherer zu fühlen.

Fragen zum Verständnis der Prinzipien des Aufbaus eines DBMS.
1. Was ist die erste Normalform und der Normalisierungsprozess? Was sind die Normalformen?
2. Was bedeutet der DBMS-Index, wie sind sie angeordnet, wie werden sie gespeichert? Wie würden Sie dieselbe Funktionalität implementieren? Die letzte Frage wird gestellt, wenn es kein klares Verständnis der Indizes gibt.
3. Zeichnen Sie eine Viele-zu-Viele-Beziehung. Zum Beispiel: Tabellen Autoren und Bücher. Ein Autor kann mehrere Bücher haben, und ein Buch kann von mehreren Autoren geschrieben werden. Erstellen Sie eine SQL-Abfrage, um Bücher eines bestimmten Autors auszuwählen.

Grundlegende Fragen zu Java.
4. Die Basisklasse in Java ist als Objekt bekannt. Welche Methoden können Sie nennen?
5. Sagen Sie uns, was equals und hashCode sind? Welche Regeln und Konventionen gibt es für die Umsetzung dieser Methoden? Wann gelten sie?
6. Erzählen Sie uns von den Wait-, Notify- und NotifyAll-Methoden. Wie werden sie verwendet, wann, warum werden sie benötigt? Was wird synchronisiert?
7. Was ist finalisieren? Warum wird es benötigt? Was können Sie über den Garbage Collector und seine Algorithmen sagen.
8. Warum ist die Klonmethode als geschützt deklariert? Was wird benötigt, um das Klonen zu implementieren?
9. Was sind die Modifikatoren (Zugriff und andere)? Was ist flüchtig und vergänglich? Wofür und in welchen Fällen wäre es möglich, default zu verwenden?

Java Collection Framework
10. Was sind die Erfassungsschnittstellen in Java? Erklären Sie, wie sie sich unterscheiden.
11. Welche Implementierungen dieser Schnittstellen kennen Sie?
12. Was ist der Unterschied zwischen ArrayList und LinkedList. Wie sind sie angeordnet? Wann sollten sie verwendet werden.
13. Was ist der Unterschied zwischen HashMap und TreeMap? Wie sind sie aufgebaut und wie funktionieren sie? Was ist mit Zugriffszeiten auf Objekte, welche Abhängigkeiten?
14. Was ist Hashtable, wie unterscheidet es sich von HashMap? Bis heute ist es veraltet, wie nutzen Sie die gewünschte Funktionalität noch?

Ausnahmen
15. Was ist eine Ausnahme? Welche Arten von Ausnahmen kennen Sie, wie unterscheiden sie sich?
16. Kann ein Puzzle mit Try-Catch-Finally-Blöcken und der Frage, was zurückgegeben wird oder welche Ausnahme letztendlich übersprungen wird, vorgeschlagen werden?

Algorithmen
17. Welche Sortieralgorithmen kennen Sie? Welche Algorithmen kennen Sie?
Außerdem sind hier diverse Zusatzfragen zur Abschätzung der Komplexität von Algorithmen, deren Vergleich untereinander möglich.

Designmuster.
18. Kennen Sie Designmuster?
19. Schreiben Sie einen Singleton ... Und mit Lazy Loading. Was ist, wenn es Thread-sicher sein muss? Wann ist Lazy Loading schlimmer?
20. Was können Sie über MVC sagen? Zeichnen Sie ein Diagramm und erklären Sie, wie MVC funktioniert.

Eine Reihe von Fragen zum Verständnis der J2EE-Technologiesuite.
21. Was ist ein Servlet, jsp, ihr Unterschied?
22. Was ist Ajax? Wie ist diese Technologie grundsätzlich aufgebaut?
23. Was ist ein ORM, wie kann es übersetzt werden und wie sollte es funktionieren?

Einfache Aufgaben zum Schreiben von Algorithmen.
24. Schreiben Sie eine Funktion zur Berechnung der Fakultät.
25. Bei einer gegebenen Funktion zur Berechnung von Fibonacci-Zahlen ist bekannt, dass sie funktioniert. Finden Sie den Logikfehler. Schätzen Sie die Komplexität des resultierenden Algorithmus ab.
26. Kehren Sie die Linie um.
27. Berechnen Sie den Durchschnitt des Arrays.

Es ist nützlich, sich daran zu erinnern, dass Sie keine zusätzlichen Worte sagen müssen, wenn Sie sich nicht sehr sicher fühlen. Du sagst ein zusätzliches Wort, und sie klammern sich daran, wickeln die Kette ab. Sie übertreiben Dinge, bei denen sie sich nicht ganz sicher sind. Diese Fähigkeit des Menschen - sich festzuhalten - muss genutzt werden, aber zu Ihrem Vorteil ;-)

Wissen und Verstehen… die Dinge liegen also ganz anders
- Verschiedene Algorithmen, wie z. B. Sortieren, sollten selbst geschrieben werden, auch aus einem Lehrbuch. Sehen Sie, wie sie sich voneinander unterscheiden, vergleichen Sie ihre Komplexität.
- Es ist nützlich, sich verschiedene Dienstprogramme und Bibliotheken, die Prinzipien der Gruppierung von Klassen in Paketen und den Stil des Schreibens von Code und das Kommentieren anzusehen. Es kann sehr hilfreich sein, Zugriffsmodifikatoren und die Projektorganisation zu verstehen.
- Wenn Sie etwas Bestimmtes verstehen, können Sie denen helfen, die weniger wissen. Gehen Sie in ein beliebiges Forum und versuchen Sie, interessante Fragen zum Thema zu beantworten. In der Diskussion können Sie etwas für sich mitnehmen. Sie können einen kurzen Artikel schreiben. Natürlich muss man das Thema gut verstehen.
Jede Arbeit, die auf die Verbesserung der eigenen Qualifikation abzielt, wird für einen kompetenten Gesprächspartner sichtbar und bleibt nicht unberücksichtigt. Das einzige, was Sie brauchen, um ehrlich darüber zu sprechen, unterschätzen Sie nicht Ihre Fähigkeiten und Fertigkeiten.
Um eine Art Benchmark für die Aus- oder Weiterbildung als Spezialist zu haben, können Sie sich etwas Ähnliches ansehen.

Eigentlich sind die oben aufgeführten Fragen das Junior Developer Level, wie ich es mir vorstelle. Irgendwo, vielleicht tiefer, irgendwo weniger, aber in der Tat - Junior.

Jede Lösung schafft neue Probleme.

Dieser Abschnitt ist Fragen gewidmet, die gestellt werden können, wenn Sie ein Vorstellungsgespräch für eine Stelle als Java-Programmierer bestehen.

Das Ziel ist es, nicht nur Fragen (es gibt viele davon im Internet), sondern auch Antworten darauf an einem Ort zu sammeln.

Informationen zur Namensnennung finden Sie auf der Hauptseite des Abschnitts „Interview“.

  1. Wie viele Schlüsselwörter sind von der Sprache reserviert, was sind das für Wörter, welche werden nicht verwendet?
  2. Aus welchen Zeichen darf ein Variablenname bestehen (korrekter Bezeichner)?
  3. Was bedeutet das Wort „Initialisierung“?
  4. Was sind die Hauptgruppen von Datentypen?
  5. Welche primitiven Typen kennst du?
  6. Was wissen Sie über die Konvertierung primitiver Datentypen, gibt es Datenverlust, ist es möglich, boolesche Typen zu konvertieren?
  7. Welche Werte sind standardmäßig initialisierte Variablen?
  8. Wie wird der Wert einer Variablen übergeben (per Referenz/Wert)?
  9. Was wissen Sie über die Hauptfunktion, was sind die Voraussetzungen für ihre Definition?
  10. Welche logischen Operationen und Operatoren kennen Sie?
  11. Was ist der Unterschied zwischen der Notation von kurzen und langen logischen Operatoren?
  12. Was ist eine Wahrheitstabelle?
  13. Was ist ein ternärer Auswahloperator?
  14. Welche unären und binären Rechenoperationen kennen Sie?
  15. Welche bitweisen Operationen kennen Sie?
  16. Was ist die Rolle und die Regeln für das Schreiben einer Select-Anweisung (switch)?
  17. Welche Zyklen kennst du, worin unterscheiden sie sich?
  18. Was ist eine „Iteration einer Schleife“?
  19. Welche Parameter hat die for-Schleife, können sie weggelassen werden?
  20. Welche Anweisung wird verwendet, um die Schleife sofort zu stoppen?
  21. Welcher Operator wird verwendet, um zur nächsten Iteration der Schleife zu gelangen?
  22. Was ist ein Array?
  23. Welche Arten von Arrays kennen Sie?
  24. Was wissen Sie über Wrapper-Klassen?
  25. Was ist Autopacking (Boxing/Unboxing)?

  1. Nennen Sie die OOP-Prinzipien und beschreiben Sie sie jeweils.
  2. Definieren Sie den Begriff „Klasse“.
  3. Was ist ein Klassenfeld/-attribut?
  4. Wie organisiert man den Zugriff auf Klassenfelder richtig?
  5. Definieren Sie den Begriff „Konstrukteur“.
  6. Was ist der Unterschied zwischen Standardkonstruktoren, Kopierkonstruktoren und einem Konstruktor mit Parametern?
  7. Welche Modifikationen der Zugriffsebene kennen Sie, erzählen Sie uns von jeder davon.
  8. Erzählen Sie uns von den Merkmalen einer Klasse mit einem einzigen privaten Konstruktor.
  9. Was sagen die Keywords „this“, „super“ aus, wo und wie können sie eingesetzt werden?
  10. Definieren Sie den Begriff „Methode“.
  11. Was ist eine Methodensignatur?
  12. Welche Methoden werden als überladen bezeichnet?
  13. Können nichtstatische Methoden statische überladen?
  14. Erzählen Sie uns von überschreibenden Methoden.
  15. Kann eine Methode eine unterschiedliche Anzahl von Parametern (Argumente variabler Länge) annehmen?
  16. Ist es möglich, die Zugriffsebene/den Rückgabetyp einzuschränken, wenn eine Methode überschrieben wird?
  17. Wie greife ich auf überschriebene Methoden der Elternklasse zu?
  18. Was sind Top-Down- und Bottom-Up-Transformationen?
  19. Was ist der Unterschied zwischen Überschreiben und Überladen?
  20. Wo können statische/nicht statische Felder initialisiert werden?
  21. Warum wird der instanceof-Operator benötigt?
  22. Warum werden wir benötigt und was sind Initialisierungsblöcke?
  23. In welcher Reihenfolge werden Konstruktoren und Initialisierungsblöcke von zwei Klassen aufgerufen: einem Kind und seinem Vorfahren?
  24. Wo und wofür wird der abstrakte Modifikator verwendet?
  25. Ist es möglich, eine Methode gleichzeitig abstrakt und statisch zu deklarieren?
  26. Was bedeutet das statische Schlüsselwort?
  27. Für welche Java-Konstrukte gilt der statische Modifikator?
  28. Was passiert, wenn in einem statischen Codeblock eine Ausnahme auftritt?
  29. Ist es möglich, eine statische Methode zu überladen?
  30. Was ist eine statische Klasse, was sind die Merkmale ihrer Verwendung?
  31. Was sind die Merkmale der Initialisierung von endgültigen statischen Variablen?
  32. Wie wirkt sich der statische Modifikator auf eine Klasse/Methode/Feld aus?
  33. Was bedeutet das letzte Schlüsselwort?
  34. Definieren Sie den Begriff „Schnittstelle“.
  35. Was sind die Standardmodifikatoren für Schnittstellenfelder und -methoden?
  36. Warum kann eine Schnittstellenmethode nicht als final oder statisch deklariert werden?
  37. Welche Arten von Klassen gibt es in Java (verschachtelt ... usw.)
  38. Was sind die Funktionen zum Erstellen verschachtelter Klassen: einfach und statisch.
  39. Was wissen Sie über verschachtelte Klassen, warum werden sie verwendet? Klassifizierung, Anwendungsfälle, Verletzung der Kapselung.
  40. Was ist der Unterschied zwischen verschachtelten und inneren Klassen?
  41. Welche Klassen werden als anonym bezeichnet?
  42. Wie greife ich von einer verschachtelten Klasse auf ein Feld einer äußeren Klasse zu?
  43. Wie können Sie auf die lokale Variable einer Methode aus einer anonymen Klasse zugreifen, die im Hauptteil dieser Methode deklariert ist? Gibt es Einschränkungen für eine solche Variable?
  44. Wie hängt eine benutzerdefinierte Klasse mit der Objektklasse zusammen?
  45. Erzählen Sie uns von jeder der Methoden der Object-Klasse.
  46. Was ist die equals() Methode. Wie unterscheidet es sich von der Operation ==?
  47. Wenn Sie equals() überschreiben möchten, welche Bedingungen müssen für die überschriebene Methode erfüllt sein?
  48. Wenn equals() überschrieben wird, gibt es andere Methoden, die überschrieben werden sollten?
  49. Was ist die Besonderheit der Methoden hashCode und equals? Wie werden die hashCode- und equals-Methoden in der Object-Klasse implementiert? Welche Regeln und Konventionen gibt es für die Umsetzung dieser Methoden? Wann gelten sie?
  50. Welche Methode gibt eine Zeichenfolgendarstellung eines Objekts zurück?
  51. Was passiert, wenn Sie equals überschreiben, ohne hashCode zu überschreiben? Welche Probleme können auftreten?
  52. Gibt es eine Anleitung, welche Felder bei der Berechnung des HashCodes verwendet werden sollten?
  53. Glauben Sie, dass es Probleme geben wird, wenn das Objekt, das als Schlüssel in der hashMap verwendet wird, das Feld ändert, das an der hashCode-Definition beteiligt ist?
  54. Was ist der Unterschied zwischen einer abstrakten Klasse und einer Schnittstelle, in welchen Fällen werden Sie sie verwenden?
  55. Ist es möglich, auf private Klassenvariablen zuzugreifen, und wenn ja, wie?
  56. Was ist flüchtig und vergänglich? Wofür und in welchen Fällen wäre es möglich, default zu verwenden?
  57. Erweiterung von Modifikatoren beim Vererben, Überschreiben und Verbergen von Methoden. Wenn eine übergeordnete Klasse eine private Methode hat, kann die untergeordnete Klasse ihre Sichtbarkeit erweitern? Was ist, wenn geschützt? Und um die Sicht einzuschränken?
  58. Ist es sinnvoll, eine Methode als private final zu deklarieren?
  59. Was sind die Merkmale der finalen Variableninitialisierung?
  60. Was passiert, wenn der einzige Klassenkonstruktor als final deklariert wird?
  61. Was ist Finalisierung? Warum wird es benötigt? Was können Sie über den Garbage Collector und seine Algorithmen sagen.
  62. Warum ist die Klonmethode als geschützt deklariert? Was wird benötigt, um das Klonen zu implementieren?
  63. Kennen Sie irgendwelche Designmuster?
  64. Schreiben Sie einen Singleton ... Aber mit Lazy Loading. Was ist, wenn es Thread-sicher sein muss? Wann ist Lazy Loading schlimmer?
  65. Was können Sie über MVC sagen? Zeichnen Sie ein Diagramm und erklären Sie, wie MVC funktioniert.
  66. Schreiben Sie eine Funktion zur Berechnung der Fakultät.
  67. Bei einer gegebenen Funktion zur Berechnung von Fibonacci-Zahlen ist bekannt, dass sie funktioniert. Finden Sie den Logikfehler. Schätzen Sie die Komplexität des resultierenden Algorithmus ab.

  1. Definiere "Ausschluss"
  2. Was ist die Hierarchie der Ausnahmen?
  3. Kann/soll ich jvm-Fehler behandeln?
  4. Wie werden Ausnahmen behandelt?
  5. Was bedeutet das Schlüsselwort throws?
  6. Was ist das Besondere am finally-Block? Ist es immer erfüllt?
  7. Kann es beim Abfangen von Ausnahmen keinen catch-Block geben?
  8. Können Sie sich eine Situation vorstellen, in der der finally-Block nicht ausgeführt würde?
  9. Kann ein einzelner Catch-Block mehrere Ausnahmen abfangen (von denselben und unterschiedlichen Vererbungszweigen)?
  10. Was wissen Sie über behandelte und nicht behandelte (aktivierte/nicht aktivierte) Ausnahmen?
  11. Was ist das Besondere an RuntimeException?
  12. Wie schreibe ich meine eigene ("benutzerdefinierte") Ausnahme? Von welchen Motiven lassen Sie sich bei der Auswahl der Art der Ausnahme leiten: aktiviert / deaktiviert?
  13. Mit welchem ​​Operator können Sie das Auslösen einer Ausnahme erzwingen?
  14. Gibt es zusätzliche Bedingungen für eine Methode, die möglicherweise eine Ausnahme auslösen könnte?
  15. Kann die Hauptmethode eine Ausnahme nach außen werfen, und wenn ja, wo wird diese Ausnahme behandelt?
  16. Wenn eine return-Anweisung sowohl in einem catch-Block als auch in einem finally-Block enthalten ist, welcher ist „wichtiger“?
  17. Was wissen Sie über OutOfMemoryError?
  18. Was wissen Sie über SQLException? Welche Art von aktiviert oder nicht aktiviert ist es, warum?
  19. Was ist ein Fehler? In diesem Fall wird Error verwendet. Geben Sie ein Fehlerbeispiel an.
  20. Welches Konstrukt wird in Java für die Ausnahmebehandlung verwendet?
  21. Angenommen, es gibt einen try-finally-Block. Im try-Block wurde eine Ausnahme ausgelöst und die Ausführung in den finally-Block verschoben. Der finally-Block hat auch eine Ausnahme ausgelöst. Welche der beiden Ausnahmen "wirft" aus dem try-finally-Block heraus? Was passiert mit der zweiten Ausnahme?
  22. Angenommen, es gibt eine Methode, die IOException und FileNotFoundException auslösen kann, in welcher Reihenfolge sollten die Catch-Blöcke gehen? Wie viele Catch-Blöcke werden ausgeführt?

  1. Definieren Sie den Begriff „Sammlung“.
  2. Listen Sie die Vorteile der Verwendung von Sammlungen auf.
  3. Welche Art von Daten können Sammlungen speichern?
  4. Was ist die Sammlungshierarchie?
  5. Was wissen Sie über Listensammlungen?
  6. Was wissen Sie über Set-Sammlungen?
  7. Was wissen Sie über Warteschlangensammlungen?
  8. Was wissen Sie über Kartensammlungen, was ist ihr grundlegender Unterschied?
  9. Nennen Sie die wichtigsten Implementierungen von List, Set, Map.
  10. Welche Implementierungen von SortedSet kennen Sie und was sind ihre Funktionen?
  11. Was sind die Unterschiede/Gemeinsamkeiten zwischen List und Set?
  12. Was ist der Unterschied/die Gemeinsamkeit zwischen den Klassen ArrayList und LinkedList, wann ist es besser, ArrayList zu verwenden, und wann ist es besser, LinkedList zu verwenden?
  13. Wann ist es sinnvoll, ein Array anstelle einer ArrayList zu verwenden?
  14. Wie unterscheidet sich ArrayList von Vector?
  15. Was wissen Sie über die Implementierung der Klassen HashSet und TreeSet?
  16. Was ist der Unterschied zwischen HashMap und TreeMap? Wie sind sie aufgebaut und wie funktionieren sie? Was ist mit Zugriffszeiten auf Objekte, welche Abhängigkeiten?
  17. Was ist Hashtable, wie unterscheidet es sich von HashMap? Bis heute ist es veraltet, wie nutzen Sie die gewünschte Funktionalität noch?
  18. Was passiert, wenn wir zwei Werte mit demselben Schlüssel in eine Map einfügen?
  19. Wie ist die Reihenfolge der Objekte in der Sammlung festgelegt, wie ist die Sammlung zu sortieren?
  20. Definieren Sie den Begriff „Iterator“.
  21. Welche Funktionalität bietet die Collections-Klasse?
  22. Wie erhalte ich eine nicht modifizierbare Sammlung?
  23. Welche Sammlungen werden synchronisiert?
  24. Wie erhalte ich eine synchronisierte Sammlung von einer nicht synchronisierten?
  25. Wie erhalte ich eine schreibgeschützte Sammlung?
  26. Warum erbt Map nicht von Collection?
  27. Was ist der Unterschied zwischen Iterator und Enumeration?
  28. Wie wird die Foreach-Schleife implementiert?
  29. Warum gibt es keine Methode iterator.add(), um Elemente zu einer Sammlung hinzuzufügen?
  30. Warum hat die Iterator-Klasse keine Methode, um das nächste Element zu erhalten, ohne den Cursor zu bewegen?
  31. Was ist der Unterschied zwischen Iterator und ListIterator?
  32. Welche Möglichkeiten gibt es, alle Elemente einer Liste zu durchlaufen?
  33. Was ist der Unterschied zwischen ausfallsicheren und ausfallsicheren Eigenschaften?
  34. Was soll ich tun, um das Auslösen einer ConcurrentModificationException zu vermeiden?
  35. Was ist ein Stapel und eine Warteschlange, sagen Sie uns, was ihre Unterschiede sind?
  36. Was ist der Unterschied zwischen Comparable- und Comparator-Schnittstellen?
  37. Warum erben Sammlungen nicht die klonbaren und serialisierbaren Schnittstellen?

  1. Welche „String“-Klassen kennen Sie?
  2. Was sind die Haupteigenschaften von „String“-Klassen (ihre Features)?
  3. Ist es möglich, den String-Typ zu erben, warum?
  4. Definieren Sie den Begriff Zeichenfolgenverkettung.
  5. Wie konvertiere ich eine Zeichenfolge in eine Zahl?
  6. Wie vergleiche ich den Wert zweier Strings?
  7. Wie kann man eine Zeichenfolge umkehren?
  8. Wie funktioniert der Vergleich zweier Strings?
  9. Wie schneide ich Leerzeichen am Ende einer Zeichenfolge ab?
  10. Wie ersetzt man ein Zeichen in einer Zeichenfolge?
  11. Wie bekomme ich einen Teil einer Zeichenfolge?
  12. Definieren Sie den Begriff „String-Pool“.
  13. Mit welcher Methode können Sie einen Teilstring in einem String auswählen?
  14. Wie teilt man eine Zeichenfolge durch ein bestimmtes Trennzeichen in Teilzeichenfolgen auf?
  15. Welche Methode wird aufgerufen, um eine Variable in einen String umzuwandeln?
  16. Wie kann man den Wert eines bestimmten Zeichens einer Zeichenfolge herausfinden, wenn man seine Ordnungszahl in der Zeichenfolge kennt?
  17. Wie finde ich das erforderliche Zeichen in einer Zeichenfolge?
  18. Ist es möglich, den Zeilenzugriff zu synchronisieren?
  19. Was macht die Methode intern()?
  20. Wie unterscheiden sich die Klassen String, StringBuffer und StringBuilder und was haben sie gemeinsam?
  21. Was ist der richtige Weg, um String-Werte zweier verschiedener Objekte vom Typ String und StringBuffer zu vergleichen?
  22. Warum ist String in Java unveränderlich und finalisiert?
  23. Warum ist ein Zeichen-Array für die Kennwortspeicherung einer Zeichenfolge vorzuziehen?
  24. Warum ist ein String ein beliebter Schlüssel in einer HashMap in Java?
  25. Schreiben Sie eine Methode, um ein bestimmtes Zeichen aus einer Zeichenfolge zu entfernen.

  1. Welche Arten von I/O-Streams gibt es?
  2. Nennen Sie die wichtigsten Vorfahren von I/O-Streams.
  3. Was sind die Ähnlichkeiten und Unterschiede zwischen den folgenden Streams: InputStream, OutputStream, Reader, Writer?
  4. Was wissen Sie über RandomAccessFile?
  5. Was sind die Dateizugriffsmodi?
  6. In welchen Paketen sind die Stream-Klassen enthalten?
  7. Was wissen Sie über Aufbauklassen?
  8. Mit welcher Add-on-Klasse können Sie Daten aus dem Eingabe-Bytestrom im Format primitiver Datentypen lesen?
  9. Mit welcher Add-On-Klasse können Sie das Lesen / Schreiben durch die Verwendung eines Puffers beschleunigen?
  10. Mit welchen Klassen können Sie Byteströme in Zeichenströme konvertieren und umgekehrt?
  11. Welche Klasse wurde entwickelt, um mit Elementen des Dateisystems (EFS) zu arbeiten?
  12. Welches Zeichen ist das Trennzeichen bei der Pfadangabe zum EFS?
  13. Wie selektiere ich alle EFS eines bestimmten Verzeichnisses nach einem Kriterium (z. B. mit einer bestimmten Erweiterung)?
  14. Was wissen Sie über die FilenameFilter-Schnittstelle?
  15. Was ist Serialisierung?
  16. Was sind die Bedingungen für eine „sichere“ Serialisierung eines Objekts?
  17. Mit welchen Klassen können Sie Objekte archivieren?

  1. Definieren Sie den Begriff „Prozess“.
  2. Definieren Sie den Begriff „Fluss“.
  3. Definieren Sie den Begriff „Thread-Synchronisation“.
  4. Wie interagieren Programme, Prozesse und Threads?
  5. Wann ist es ratsam, mehrere Threads zu erstellen?
  6. Was kann passieren, wenn zwei Threads denselben Code in einem Programm ausführen?
  7. Was wissen Sie über den Hauptstrang des Programms?
  8. Welche Möglichkeiten gibt es, Threads zu erstellen und auszuführen?
  9. Welche Methode startet einen Thread zur Ausführung?
  10. Welche Methode beschreibt die Aktion eines Threads während der Ausführung?
  11. Wann beendet ein Thread seine Ausführung?
  12. Wie synchronisiere ich die Methode?
  13. Wie erzwinge ich das Beenden eines Threads?
  14. Definieren Sie den Begriff "Daemon-Thread".
  15. Wie erstelle ich einen Daemon-Thread?
  16. Wie bekomme ich den aktuellen Stream?
  17. Definieren Sie den Begriff „Überwachung“.
  18. Wie pausiert man die Ausführung eines Threads?
  19. In welchen Zuständen kann sich ein Stream befinden?
  20. Was ist Monitor beim Aufrufen von nicht statischen und statischen Methoden?
  21. Was ist der Monitor beim Ausführen eines Abschnitts des Methodencodes?
  22. Mit welchen Methoden können Sie die Ausführung von Threads synchronisieren?
  23. Welche Methode versetzt einen Thread in den Leerlaufmodus?
  24. Was ist die Funktionalität der Methoden "notify" und "notifyAll"?
  25. Was macht die Join-Methode?
  26. Was sind die Bedingungen für den Aufruf der Wait/Notify-Methode?
  27. Definieren Sie den Begriff „gegenseitige Blockierung“.
  28. Was ist der Unterschied zwischen den Methoden interrupt, interrupted und isInterrupted?
  29. In welchem ​​Fall wird eine InterruptedException geworfen, welche Methoden können sie werfen?
  30. volatile Modifikatoren und die yield() Methode.
  31. Paket java.util.concurrent
  32. Es gibt eine Methode, die i++-Operationen ausführt. Variable i vom Typ int. Es wird davon ausgegangen, dass der Code in einer Multithread-Umgebung ausgeführt wird. Soll der Baustein synchronisiert werden?
  33. Was wird als Mutex verwendet, wenn die Methode als statisch synchronisiert deklariert wird? Ist es möglich, neue Instanzen einer Klasse zu erstellen, während eine statisch synchronisierte Methode ausgeführt wird?
  34. Angenommen, eine RuntimeException ist in der run-Methode aufgetreten, die nicht abgefangen wurde. Was passiert mit dem Strom? Gibt es eine Möglichkeit zu wissen, dass eine Ausnahme aufgetreten ist (ohne den gesamten Laufkörper in einen Try-Catch-Block zu packen)? Gibt es eine Möglichkeit, den Thread wieder hochzubekommen, nachdem dies passiert ist?
  35. Welche Standard-Java-Tools würden Sie verwenden, um einen Thread-Pool zu implementieren?
  36. Was ist eine ThreadGroup und warum wird sie benötigt?
  37. Was ist ein ThreadPool und warum wird er benötigt?
  38. Was ist ein ThreadPoolExecutor und warum wird er benötigt?
  39. Was sind "atomare Typen" in Java?
  40. Warum wird die ThreadLocal-Klasse benötigt?
  41. Was ist ein Vollstrecker?
  42. Was ist ExecutorService?
  43. Warum wird ein ScheduledExecutorService benötigt?
Diese Liste mit über 300 Fragen (ohne Antworten) wurde unter http://becomejavasenior.com/ gefunden. Dort sind weitere Autoren aufgeführt.

58489 Aufrufe insgesamt 15 Aufrufe heute

Ansichten: 38 283

  • Was ist OOP?
  • Was ist ein Objekt?
  • Nennen Sie die Grundprinzipien von OOP.
  • Was ist Erbschaft?
  • Was ist Polymorphismus? Welche Manifestationen von Polymorphismus in Java kennen Sie?
  • Was ist Kapselung?
  • Was ist Abstraktion?
  • Welche Vorteile bieten objektorientierte Programmiersprachen?
  • Wie verbessert die Verwendung eines objektorientierten Ansatzes die Softwareentwicklung?
  • Es gibt einen Ausdruck „ist“ und „hat“. Was bedeuten sie in Bezug auf die OOP-Prinzipien? Was ist der Unterschied zwischen Komposition und Aggregation?
  • Was meinen Sie mit Polymorphismus, Kapselung und dynamischer Verknüpfung?

Java-Kern.

  • Was ist der Unterschied zwischen JRE, JVM und JDK?
  • Beschreiben Sie Zugriffsmodifikatoren in Java.
  • Was ist Zugriff auf Paketebene?
  • Wie unterscheidet sich eine abstrakte Klasse von einer Schnittstelle? Wann würden Sie eine abstrakte Klasse und wann eine Schnittstelle verwenden?
  • Kann ein Objekt auf eine private Klassenvariable zugreifen? Wenn das so ist, wie?
  • Wozu dienen statische Blöcke in Java?
  • Ist es möglich, eine statische Methode zu überladen?
  • Erzählen Sie uns von inneren Klassen. Wann werden Sie sie verwenden?
  • Was ist der Unterschied zwischen Instanzvariable und statischer Variable? Gib ein Beispiel.
  • Geben Sie ein Beispiel, wann Sie eine statische Methode verwenden können?
  • Erzählen Sie uns von Loader-Klassen und dem dynamischen Laden von Klassen.
  • Was ist der Zweck des "assert"-Operators in Java?
  • Warum definieren einige Interfaces überhaupt keine Methoden?
  • Was ist der Hauptunterschied zwischen String, StringBuffer, StringBuilder?
  • Erzählen Sie mir von Java-I/O-Streams.
  • Was ist Heap- und Stack-Speicher in Java?
  • Was ist der Unterschied zwischen Stack- und Heap-Speicher in Java?
  • Erzählen Sie uns etwas über das Speichermodell in Java?
  • Wie funktioniert der Garbage Collector?
  • Erzählen Sie uns etwas über Typcasting. Was ist Herabstufung und Beförderung? Wann erhalten Sie eine ClassCastException?
  • Was ist eine statische Klasse, was sind die Merkmale ihrer Verwendung?
  • So greifen Sie von einer verschachtelten Klasse aus auf ein Feld der äußeren Klasse zu.
  • Welche Arten von verschachtelten Klassen gibt es? Wofür werden sie benutzt?
  • Ist es möglich, beim Überschreiben einer Methode Folgendes zu ändern:
  • Zugriffsmodifikator
  • Rückgabetyp
  • Argumenttyp oder -nummer
  • Argumentname
  • Ändern Sie die Reihenfolge, die Menge oder entfernen Sie den Überwurfbereich ganz?
  • Was ist Autoboxen?
  • Was sind Generika?
  • Was ist der wahre Zweck der Verwendung generischer Typen in Java?
  • Wie werden Variablen an Methoden übergeben, als Wert oder als Referenz?
  • Welche Methoden hat die Object-Klasse?
  • Regeln zum Überschreiben der Methode Object.equals().
  • Wenn Sie equals() überschreiben möchten, welche Bedingungen müssen für die überschriebene Methode erfüllt sein?
  • Was ist die Beziehung zwischen hashCode und equals?
  • Wie werden die hashCode- und equals-Methoden in der Object-Klasse implementiert?
  • Was passiert, wenn Sie equals überschreiben, ohne hashCode zu überschreiben? Welche Probleme können auftreten?
  • Gibt es eine Anleitung, welche Felder bei der Berechnung des HashCodes verwendet werden sollten?
  • Wozu dient die Methode hashCode()?
  • Regeln zum Überschreiben der Object.hashCode()-Methode.
  • Erzählen Sie uns etwas über das Klonen von Objekten. Was ist der Unterschied zwischen flachem und tiefem Klonen?
  • Regeln zum Überschreiben der Methode Object.clone().
  • Wo und wie können Sie einen privaten Konstruktor verwenden?
  • Was ist ein Standardkonstruktor?
  • Beschreiben Sie die Methode Object.finalize().
  • Was ist der Unterschied zwischen den Wörtern final, final und finalize?
  • Beschreiben Sie die Hierarchie der Ausnahmen.
  • Welche Arten von Ausnahmen in Java kennen Sie, wie unterscheiden sie sich?
  • Was ist aktivierte und nicht aktivierte Ausnahme?
  • Wie erstelle ich eine eigene ungeprüfte Ausnahme?
  • Was sind Unchecke-Ausnahmen?
  • Was ist ein Fehler?
  • Beschreiben Sie, wie der try-catch-finally-Block funktioniert.
  • Ist es möglich, einen try-finally (ohne catch) Block zu verwenden?
  • Wird der finally-Block immer ausgeführt?
  • Was sind die Funktionen der String-Klasse? Was macht die Methode intern()?
  • Ist es möglich, den String-Typ zu erben, warum?
  • Warum ist ein String ein beliebter Schlüssel in einer HashMap in Java?
  • Definieren Sie den Begriff Zeichenfolgenverkettung.
  • Wie kann man eine Zeichenfolge umkehren?
  • Wie vergleiche ich den Wert zweier Strings?
  • Wie kürze ich Leerzeichen am Anfang und am Ende einer Zeichenfolge?
  • Definieren Sie den Begriff „String-Pool“.
  • Ist es möglich, den Zeilenzugriff zu synchronisieren?
  • Was ist der richtige Weg, um String-Werte zweier verschiedener Objekte vom Typ String und StringBuffer zu vergleichen?
  • Warum ist String in Java unveränderlich und finalisiert?
  • Schreiben Sie eine Methode, um ein bestimmtes Zeichen aus einer Zeichenfolge zu entfernen.
  • Was ist Reflexion?
  • Was passiert mit dem Garbage Collector (GC), wenn während der Ausführung der Methode finalize() eines Objekts eine Ausnahme auftritt?
  • Was ist Internationalisierung, Lokalisierung?
  • Was sind Anmerkungen in Java?
  • Welche Funktionen erfüllt Annotation?
  • Welche eingebauten Anmerkungen in Java kennen Sie?
  • Was bewirken die Annotationen @Retention, @Documented, @Target und @Inherited?
  • Was bewirken die Annotationen @Override, @Deprecated, @SafeVarargs und @SuppressWarnings?
  • Welcher Anmerkungslebenszyklus kann mit @Retention angegeben werden?
  • Welche Elemente können annotiert werden, wie werden sie spezifiziert?
  • Wie erstellen Sie Ihre Anmerkung?
  • Welche Arten von Attributen sind in Anmerkungen zulässig?
  • Was ist JMX?
  • Welche Vorteile bietet JMX?
  • Was kann JMX neben der Fernsteuerung noch?
  • Was ist MBean?
  • Welche Arten von MBeans gibt es?
  • Was ist MBean-Server?
  • Welche Mechanismen bieten Sicherheit in der Java-Technologie?
  • Welche Prüfungen führt der Java-Bytecode-Verifizierer durch?
  • Was wissen Sie über "Schutzmanager" in Java?
  • Was ist JAS?
  • Was ist Refactoring?

Java Collections Framework.

  • Was ist eine Sammlung?
  • Nennen Sie die wichtigsten Schnittstellen von Collections und deren Implementierung.
  • Wie unterscheidet sich ArrayList von LinkedList? In welchen Fällen ist es besser, die erste und in welchen die zweite zu verwenden?
  • Was ist der Unterschied zwischen HashMap und Hashtable?
  • Wie unterscheidet sich ArrayList von Vector?
  • Wie werden Sammlungselemente verglichen?
  • Ordnen Sie die folgenden Schnittstellen in einer Hierarchie an: List, Set, Map, SortedSet, SortedMap, Collection,Iterable, Iterator, NavigableSet, NavigableMap.
  • Warum ist Map keine Collection, während List und Set Collection sind?
  • Definieren Sie den Begriff „Iterator“.
  • Was wissen Sie über die Iterable-Schnittstelle?
  • Wie konvertiere ich HashSet in einer Zeile in ArrayList?
  • Wie konvertiert man ArrayList in HashSet in einer Zeile?
  • Wie kann man über alle Schlüssel von Map iterieren, wenn Map nicht iterierbar ist?
  • Wie kann man über alle Werte von Map iterieren, wenn Map nicht iterierbar ist?
  • Wie kann man über alle Schlüssel-Wert-Paare in Map iterieren, da Map nicht iterierbar ist?
  • Was ist die "Sortierung" von SortedMap, abgesehen davon, dass toString() alles der Reihe nach druckt?
  • Wie kopiert man Elemente aus einer beliebigen Sammlung in einem Aufruf in ein Array?
  • Implementieren Sie mithilfe der Collection-Methoden (addAll(), removeAll(), keepAll()) eine symmetrische Differenz zweier Collections.
  • Vergleiche Enumeration und Iterator.
  • Wie hängen Iterable und Iterator zusammen?
  • Welche Beziehung besteht zwischen Iterable, Iterator und "for-each", die in Java 5 eingeführt wurden?
  • Vergleichen Sie Iterator und ListIterator.
  • Was passiert, wenn ich Iterator.next() aufrufe, ohne Iterator.hasNext() zu "fragen"?
  • Was passiert, wenn ich Iterator.next() vor dem zehnmaligen Aufruf von Iterator.hasNext() aufrufe? Fehlen mir 9 Artikel?
  • Wenn ich eine Sammlung und einen untergeordneten Iterator habe, ändert sich die Sammlung, wenn ich iterator.remove() aufrufe?
  • Wenn ich eine Sammlung und einen untergeordneten Iterator habe, ändert sich der Iterator, wenn ich collection.remove(..) aufrufe?
  • Warum haben sie ArrayList hinzugefügt, wenn es bereits einen Vektor gab?
  • Die Implementierung der ArrayList-Klasse hat die folgenden Felder: Object elementData, int size. Erklären Sie, warum Sie die Größe separat speichern müssen, wenn Sie immer elementData.length nehmen können?
  • Ist LinkedList eine einfach verknüpfte, doppelt verknüpfte oder vierfach verknüpfte Liste?
  • Was ist die schlechteste Zeit für die Methode contains() für ein Element, das sich in einer LinkedList befindet (O(1), O(log(N)), O(N), O(N*log(N)), O( N*N) )?
  • Was ist die schlechteste Zeit für die Methode contains() für ein Element, das sich in einer ArrayList befindet (O(1), O(log(N)), O(N), O(N*log(N)), O( N*N) )?
  • Was ist die schlechteste Zeit für die Methode LinkedList add() (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  • Was ist die schlechteste Zeit für eine ArrayList add() Methode (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N))?
  • Wie viele Elemente werden im Speicher zugewiesen, wenn ArrayList.add() aufgerufen wird?
  • Wie viele Elemente werden im Speicher zugewiesen, wenn LinkedList.add() aufgerufen wird?
  • Schätzen Sie die Speichermenge zum Speichern eines Primitivs vom Typ Byte in LinkedList?
  • Schätzen Sie die Speichermenge, um ein Primitiv vom Typ Byte in ArrayList zu speichern?
  • Ich füge der Liste ein Element in der Mitte hinzu: list.add(list.size()/2, newElem). Für wen ist diese Operation langsamer - für ArrayList oder für LinkedList?
  • Wie iteriere ich LinkedList-Elemente in umgekehrter Reihenfolge, ohne slow get(index) zu verwenden?
  • Wie bekomme ich eine Liste mit allen Elementen außer den ersten und letzten 3 mit einem Aufruf von List?
  • Können verschiedene Objekte im Speicher (ref0 != ref1) ref0.hashCode() == ref1.hashCode() haben?
  • Können verschiedene Objekte im Speicher (ref0 != ref1) ref0.equals(ref1) == true haben?
  • Können verschiedene Verweise auf dasselbe Objekt im Speicher (ref0 == ref1) ref0.equals(ref1) == false haben?
  • Es gibt eine Klasse Point(int x, y;). Warum ist ein Hash-Code der Form 31 * x + y besser als x + y?
  • Wenn die Klasse Point(int x, y;) "richtig" ist, um die equals-Methode zu implementieren (Return ref0.x == ref1.x && ref0.y == ref1.y), aber den Hash-Code als int hashCode( ) ( return x;), werden solche Punkte korrekt platziert und aus dem HashSet abgerufen?
  • equals() erzeugt eine Äquivalenzrelation. Welche der Eigenschaften hat eine solche Relation: Kommutativität, Symmetrie, Reflexivität, Distributivität, Assoziativität, Transitivität?
  • Ist es möglich, equals(Object that) (return this.hashCode() == that.hashCode()) so zu implementieren?
  • equals erfordert die Überprüfung, ob das Argument (equals(Object that)) denselben Typ hat wie das Objekt selbst. Was ist der Unterschied zwischen this.getClass() == that.getClass() und dieser Instanz von MyClass?
  • Ist es möglich, die Methode equals der Klasse MyClass wie folgt zu implementieren: class MyClass (public boolean equals(MyClass that) (return this == that;))?
  • Funktioniert HashMap, wenn alle Schlüssel int hashCode() (return 42;) zurückgeben?
  • Warum haben sie HashMap hinzugefügt, wenn es bereits eine Hashtable gab?
  • Laut Knuth und Kormen gibt es zwei Hauptimplementierungen der Hash-Tabelle: basierend auf offener Adressierung und basierend auf der Verkettungsmethode. Wie wird HashMap implementiert? Warum haben sie das (Ihrer Meinung nach) getan? Was sind die Vor- und Nachteile der einzelnen Ansätze?
  • Wie viele Link-Klicks passieren, wenn Sie HashMap.get(key) für einen Schlüssel ausführen, der sich in der Tabelle befindet?
  • Wie viele neue Objekte werden erstellt, wenn Sie einer HashMap ein neues Element hinzufügen?
  • Wie funktioniert eine HashMap, wenn Sie versuchen, zwei Elemente darin durch Schlüssel mit demselben HashCode zu speichern, für die jedoch gleich == falsch ist?
  • HashMap kann auch für Schlüssel mit unterschiedlichem HashCode zu einer Liste verkommen. Wie ist das möglich?
  • Was ist die schlechteste Zeit für eine get(key)-Methode für einen Schlüssel, der nicht in der Tabelle enthalten ist (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N ))?
  • Was ist die schlechteste Zeit für eine get(key)-Methode für einen Schlüssel, der sich in einer Tabelle befindet (O(1), O(log(N)), O(N), O(N*log(N)), O (N*N ))?
  • Erklären Sie die Bedeutung der Parameter im HashMap(int initialCapacity, float loadFactor)-Konstruktor.
  • Was ist der Unterschied zwischen HashMap und IdentityHashMap? Wozu dient IdentityHashMap? Wie kann es sinnvoll sein, Serialisierung oder Klonen zu implementieren?
  • Was ist der Unterschied zwischen HashMap und WeakHashMap? Wozu dient WeakHashMap?
  • WeakHashMap verwendet WeakReferences. Warum nicht eine SoftHashMap auf SoftReferences erstellen?
  • WeakHashMap verwendet WeakReferences. Warum nicht eine PhantomHashMap auf PhantomReferences erstellen?
  • Erstellen Sie ein HashSet aus einer HashMap (verwenden Sie nur mehrere Schlüssel, nicht mehrere Werte).
  • HashMap aus HashSet erstellen (HashSet >).
  • Vergleichen Sie die Schnittstellen java.util.Queue und java.util.Deque.
  • Wer erweitert wen: Queue erweitert Deque oder Deque erweitert Queue?
  • Warum implementiert LinkedList sowohl List als auch Deque?
  • Was ist der Unterschied zwischen den Klassen java.util.Arrays und java.lang.reflect.Array?
  • Was ist der Unterschied zwischen den Klassen java.util.Collection und java.util.Collections?
  • Schreiben Sie ein Programm ohne Threads, das bewirkt, dass eine Sammlung eine ConcurrentModificationException auslöst.
  • Was ist „Fail-Fast-Verhalten“?
  • Gibt es eine spezielle Klasse java.util.EnumSet für Mengen von Aufzählungen? Wozu? Warum mochten die Autoren HashSet oder TreeSet nicht?
  • java.util.Stack – Gilt als „veraltet“. Was wird empfohlen, um es zu ersetzen? Wieso den?
  • Welche Sammlung implementiert die FIFO-Service-Disziplin?
  • Welche Sammlung implementiert die FILO-Dienstleistungsdisziplin?
  • Geben Sie ein Beispiel, wenn eine Sammlung eine UnsupportedOperationException auslöst.
  • Warum können Sie nicht "ArrayList Zahlen = neue ArrayList ();“, aber Sie können „Liste Zahlen = neue ArrayList ();"?
  • LinkedHashMap - was ist dieses "Biest"? Was ist drin von LinkedList und was von HashMap?
  • LinkedHashSet – was ist dieses „Biest“? Was ist drin von LinkedList und was ist von HashSet?
  • Sie sagen, es sei einfach, einen einfachen Cache mit "Invalidierungsrichtlinie" auf LinkedHashMap zu erstellen, weißt du wie?
  • Was ermöglicht Ihnen PriorityQueue?
  • Was sind die Unterschiede zwischen java.util.Comparator und java.lang.Comparable?

Java 8.

  • Was ist ein symbolischer Link?
  • Was ist der Unterschied zwischen I/O und NIO?
  • Welche Funktionen von NIO kennen Sie?
  • Welche Arten von I/O-Streams gibt es?
  • Nennen Sie die Hauptklassen von Ein-/Ausgabeströmen.
  • Wie unterscheiden sich OutputStream, InputStream, Writer, Reader und was haben sie gemeinsam?
  • Für welche Unterklassen der InputStream-Basisklasse wissen Sie, wofür sie sind?
  • Was wissen Sie über RandomAccessFile?
  • Welche Dateizugriffsmodi hat RandomAccessFile?
  • Was sind die Unterklassen der OutputStream-Basisklasse, und wissen Sie, wofür sie sind?
  • Wofür wird PushbackInputStream verwendet?
  • Wofür wird SequenceInputStream verwendet?
  • Für welche Unterklassen der Reader-Basisklasse wissen Sie, wofür sie sind?
  • Für welche Unterklassen der Writer-Basisklasse wissen Sie, wofür sie sind?
  • Was ist absoluter Pfad und relativer Pfad?
  • In welchen Paketen sind die Stream-Klassen enthalten?
  • Was wissen Sie über Aufbauklassen?
  • Mit welcher Add-on-Klasse können Sie Daten aus dem Eingabe-Bytestrom im Format primitiver Datentypen lesen?
  • Mit welcher Add-On-Klasse können Sie das Lesen / Schreiben durch die Verwendung eines Puffers beschleunigen?
  • Mit welchen Klassen können Sie Byteströme in Zeichenströme konvertieren und umgekehrt?
  • Was ist der Unterschied zwischen der PrintWriter-Klasse und der PrintStream-Klasse?
  • Welche Klasse ist für die Arbeit mit Dateisystemelementen ausgelegt?
  • Welches Zeichen ist das Trennzeichen bei der Angabe eines Pfades im Dateisystem?
  • Welche Methoden der File-Klasse kennen Sie?
  • Was wissen Sie über die FileFilter-Schnittstelle?
  • Mit welchen Klassen können Sie Objekte archivieren?

  • Bei welchem ​​Objekt findet eine Synchronisation statt, wenn eine statische synchronisierte Methode aufgerufen wird?
  • Wofür wird das flüchtige, synchronisierte, vorübergehende, native Schlüsselwort verwendet?
  • Was bedeutet Thread-Priorität?
  • Was sind Daemon-Threads in Java?
  • Was bedeutet es, den Strom zu beruhigen?
  • In welchen Zuständen kann ein Thread in Java sein? Wie funktioniert eigentlich ein Stream?
  • Was ist der Unterschied zwischen den beiden Schnittstellen zur Implementierung von Runnable- und Callable-Tasks?
  • Unterschiede zwischen CyclicBarrier und CountDownLatch?
  • Was ist eine Race-Condition?
  • Wie stoppe ich einen Thread?
  • Was passiert, wenn in einem Thread eine Ausnahme auftritt?
  • Was ist eine ThreadLocal-Variable?
  • Was ist FutureTask?
  • Unterschied zwischen unterbrochen und isUnterbrochen?
  • Warum werden die Wait- und Notification-Methoden in einem synchronisierten Block aufgerufen?
  • Was ist ein Thread-Pool?
  • Unterschiede zwischen Livelock und Deadlock?
  • Wie überprüfe ich, ob ein Thread eine Sperre hält?
  • Wie erhalte ich einen Thread-Dump?
  • Welche JVM-Einstellung wird verwendet, um die Größe des Stapels eines Threads zu steuern?
  • Unterschiede zwischen synchronisiert und ReentrantLock?
  • Was ist ein Semaphor?
  • Was passiert, wenn die Thread-Pool-Warteschlange bereits voll ist und Sie eine Aufgabe senden?
  • Unterschiede zwischen den Methoden submit() und execute() eines Thread-Pools?
  • Was ist eine Sperrmethode?
  • Was ist ReadWriteLock?
  • Was ist Singletons doppelt geprüftes Sperren?
  • Was ist das Fork/Join-Framework?
  • Die Macht ist ein Fluss, aus dem viele trinken können, und das Jedi-Training ist nicht die einzige Möglichkeit, daraus zu schöpfen." - Luke Skywalker Alle Büchersammlungen zurückgelassen. Welche davon Sie lesen und welche nicht - es liegt an Ihnen. Jetzt haben Sie nur noch ein Ziel: einen Job zu bekommen und eine Karriere aufzubauen, ohne auf einen Rechen zu treten. Der letzte Artikel ist in Abschnitte unterteilt: - Vor der Arbeit - Vorstellungsgespräch - Während der Arbeit In diesem Teil steckt viel von meiner persönlichen Meinung, also reißen Sie die Sätze bitte nicht aus dem Zusammenhang und behandeln Sie es als ein offenes Gespräch mit einem alten Freund :).

    Vor der Arbeit

    Im Folgenden sind die zehn beliebtesten Klischees aufgeführt, die entstehen, wenn die Seele vom Programmieren angezogen wird, aber bestimmte Umstände die Person stören. Meine Aufgabe ist es, zu versuchen, Ihr Misstrauen zu stoppen und Sie auf eine positive Denkweise vorzubereiten. Wenn Sie diesen Artikel lesen, sind Sie weiter als Sie denken! Du bist mental schon da, wo du sein musst, und wenn du schon einige Bücher gelesen hast, dann ist schon die Hälfte des Weges geschafft. Hören Sie deshalb auf zu zweifeln - das ist das Los der Schwachen. Nur vorwärts! Schon besser? Dann lass uns gehen! "Ich habe keine Bildung" Als ich die Akademie einer der großen Outsourcing-Firmen betrat, deuteten die Interviewer sanft an, dass sie überhaupt nicht an dem Diplom interessiert seien, also waren die Fragen spezifisch – zu OOP und zu grundlegendem Java. Natürlich werden Sie auf Stellenangebote stoßen, bei denen diese verfügbar sind. Bildung wird eine klare Voraussetzung sein. Ich möchte nur sagen, dass seine Abwesenheit in diesen Tagen kein Hindernis darstellt. Viele Auslandsämter verlangen einen BS / MS Informatik oder, Achtung, einschlägige Erfahrung. Nicht überzeugend? Vielleicht ermutigt Sie die Tatsache, dass ich keine technische Ausbildung habe ;), aber das hat mich absolut nicht daran gehindert, Erfahrungen in großen Unternehmen zu sammeln. Fragen Sie mich jetzt, was ich tun würde, wenn ich das Band zurückspulen könnte? Natürlich würde ich zu KPI / NAU gehen, aber ich würde nicht zu sehr trauern, wenn ich nicht eintreten würde. Hör auf, dich darüber aufzuregen. Die Zeit wird vergehen – wenn Sie wollen, können Sie mit 40 eine Kruste bekommen – aber konzentrieren Sie sich vorerst darauf, hier und jetzt ein Junior-Entwickler zu werden. "Es wird Leute geben, die klüger sind als ich" Es wird immer Menschen geben, die klüger, klüger, flexibler und talentierter sind als Sie, und jeder Job ist keine Ausnahme. Diese Tatsache gibt Ihnen keineswegs das Recht, vom Ziel abzuweichen. Vielleicht gibt es irgendwo auf der anderen Seite der Welt einen kleinen Jungen aus Japan, der Zahlen schneller multipliziert und dividiert als Sie, und eine Großmutter aus Tschechien tippt schneller als jeder Teenager auf der Tastatur eines Mobiltelefons. Aber du denkst nicht darüber nach, oder? Warum sollten Sie sich also um die Menschen kümmern, mit denen Sie zusammenarbeiten, wenn Sie sich niedergelassen haben? In gewisser Weise werden Ihre zukünftigen Kollegen Sie übertreffen, in gewisser Weise werden sie gegen Sie verlieren. Es ist in Ordnung! Streichen. "Ich glaube nicht, dass ich kann" Zunächst einmal hat niemand gesagt, dass es einfach sein würde, aber das bedeutet keineswegs, dass Ihr Ziel nicht machbar ist. Nichts hindert Sie daran, es einfach auszuprobieren, auch wenn Sie gerade als Buchhalter oder Verkäufer arbeiten. Kommen Sie nach einem Arbeitstag und setzen Sie sich zum Lernen hin. Wenn Sie nach einer Weile Fortschritte sehen, ist dies ein Zeichen dafür, dass Sie sich in die richtige Richtung bewegen. Halte nicht an! Wenn Sie sich auch nur ein wenig dafür interessieren und es Ihnen gegeben wird, dann kenne ich keinen einzigen Punkt, der mich davon überzeugen könnte, dass Sie dessen nicht würdig sind. "Ich bin faul" Faulheit ist nur ein Mangel an Motivation. Wenn Sie bemerken, dass Sie den größten Teil Ihrer Freizeit, anstatt zu lernen und sich nicht gegen den Kurs zu wehren, dumm Müll machen - ich beeile mich, Ihnen mitzuteilen, dass die Arbeit eines Programmierers höchstwahrscheinlich nicht Ihre ist. Zumindest nicht jetzt. Manche nennen Faulheit eine Sünde, eine Krankheit, die Cholera der Moderne zusammen mit Fettleibigkeit. Überlassen Sie dieses Geschäft der Karrierehysterie. Meiner Meinung nach ist alles in diesem Leben von der Illusion von Kampf und Konkurrenz durchdrungen: Wer ist höher, wer ist stärker, wer ist reicher? Wer ein cooleres Auto hat, wer ein höheres Gehalt im Team hat, wer im Fitnessstudio die Langhantel härter drückt, welche der Mädels früher geheiratet und Kinder bekommen hat – das macht krank, wie stinkendes Fastfood. Die Menschen hörten auf zu leben und das Leben zu genießen, folgten ihren Träumen und tauschten ihre Komfortzone gegen die Wahl zwischen Pepsi und Coca-Cola ein. Für mich ist Faulheit gut, es ist einfach wunderbar. Dies ist eine gewöhnliche Schutzfunktion Ihres Körpers, um Zeit und Energie für Dinge zu sparen, die für ihn nutzlos sind. Eine Person ist geschaffen, um frei zu sein, also wenn du faul bist – hör auf zu versuchen, deinen Arsch von der Couch zu heben – vielleicht ist er jetzt an seinem Platz :). „Ich gehe wegen des Geldes hin“ Wenn wir Entwickler versammeln und sagen: Von jetzt an beträgt Ihr Gehalt 3-4.000 Griwna für jedes Level und Tester erhalten weiterhin die gleichen Sätze, dann stellt sich die Frage anders: Nicht wie viele werden bombardiert, sondern wie viele Programmierer werden nach dieser Nachricht nur Programmierer bleiben. Viele Leute kommen wegen der Knete in die IT. Gehalt übersetzt aus Geld, Käse und einer teuren DSLR. Egal wie viel ich mit Leuten gearbeitet habe, Gespräche darüber sind mir immer durchgeschlüpft. Ich sage nicht, dass das schlecht ist, ich möchte nur, dass Sie nicht versuchen, sich selbst einzureden, dass Sie von rein spirituellen Zielen ausgehen, um die Welt zum Besseren zu verändern. Bevor ich als Junior einen Job bekam, kannte ich die Gehälter von Senioren, technischen Leitern - und sogar den mittleren - und diese Gedanken inspirierten mich nur: In meiner Zeit, bevor ich als Programmierer arbeitete, konnte ich davon nur träumen Zahlen. Nennen Sie diese Dinge beim richtigen Namen und hören Sie auf, sich dafür zu schämen. "Ich glaube nicht, dass es meins ist" Wessen dann? Weißt du, es ist leicht zu überprüfen. Öffnen Sie den ersten Band von Hortsmann und beginnen Sie zu lesen, indem Sie den Code aus den Beispielen schreiben. Wenn Sie sich nicht langweilen und in der zweiten Woche nicht die Zeit für dasselbe Kapitel markieren, lassen Sie Ihre Zweifel fallen. Das Studium technischer Fachrichtungen ist eine konsequente Sache. Sie können nicht zu B gehen, ohne A zu kennen, aber Sie haben immer die Möglichkeit, ein Kapitel zurückzugehen und die Grundlage zu stärken. Fortfahren. „Es gibt viele wie mich“ Es gibt immer Konkurrenz um einen Platz. Ich behaupte zum Beispiel nicht, dass diese Zahl jetzt 300-400 Tester ohne Erfahrung oder sogar mehr für einen Ort sind. Ja, das ist eine bittere Wahrheit, aber andererseits kann ich selbst mit solchen Indikatoren keinen ernst genugen Punkt finden. Ja, mindestens 100500 vorhanden !! Sie haben immer die Möglichkeit, Erfahrungen in Ihren Projekten zu sammeln: Bauen Sie irgendeinen Dienst, ein Desktop-Programm, verwenden Sie den ganzen Stack, den Sie kennen - und schon machen Sie Unebenheiten, und der Rest, außer dem Versenden Ihres Lebenslaufs, tut nichts anders. „Niemand antwortet auf meinen Lebenslauf“ In Fortsetzung des obigen Absatzes. Höchstwahrscheinlich ist es für zukünftige IT-Spezialisten ohne Erfahrung gut, einen schönen Lebenslauf schreiben zu können, aber wenn es viele Leute für eine Stelle gibt, sind viele Lebensläufe einander sehr ähnlich: Natürlich können Sie ein Foto mitschicken einen Ausschnitt (wenn ein Mädchen) oder viele Technologien schreiben, die Sie selbst nur aus Wikipedia kennen. In beiden Fällen wird es der Personalabteilung schlichtweg egal sein: Sollte es in der Projektausschreibung eine Person geben, die beispielsweise AWS kennt, dann wird sie im Lebenslauf nach AWS suchen. Berücksichtigen Sie einen weiteren wichtigen Punkt, wie die Empfehlungen von Kollegen. Dies ist der Schmerz jeder Person, die keine solchen Bekannten hat, weil der Löwenanteil der Junioren von dort genommen wird (wenn die Person auf Empfehlung natürlich kein Idiot ist). Normalerweise nehmen sie für die Position des Juniors, ich betone, eine angemessene aktive Person, die bereit ist zu lernen, und sogar zum Essen. Und wenn ein solcher Kandidat durchfällt, dann sind Sie eher der Nächste. Nun, während der Rest interviewt wird, haben Sie viele Bereiche, in denen Sie sich abkühlen können: Open Source, Rätsel im Internet und vielleicht freiberuflich. „Ich werde das Vorstellungsgespräch nicht bestehen / Ich möchte in einem bestimmten Unternehmen arbeiten“ Ja, höchstwahrscheinlich wird das erste Interview ein Misserfolg sein, aber die Erfahrung, die Sie sammeln, ist unbezahlbar. Mit jedem weiteren Vorstellungsgespräch werden Sie selbstbewusster und einfallsreicher. Wie jetzt erinnere ich mich an mein erstes ... Gott, was für einen Unsinn redete ich?! Wie peinlich es war, ihm nachzulaufen (ich erinnere mich an diesen Ghul, der mir ins Gesicht grinste), aber als ich nach Hause kam und darüber nachdachte, wurde mir klar, dass es eine wunderbare Lektion war. Nach ihm waren alle nachfolgenden ähnlichen Ereignisse von Leichtigkeit und Zuversicht erfüllt. Niemand ist gestorben, sie suchen Leute wie mich, also werde ich kommen. An sich selbst glauben! Wenn Sie speziell zu einem bestimmten Unternehmen möchten, dann denke ich, dass ich Ihnen keinen in unserem Umfeld beliebten Lifehack verraten werde, aber dennoch: Bevor Sie ein Meeting mit diesem Büro organisieren, führen Sie vorher ein Interview mit Wettbewerbern durch. Vielleicht wird Ihnen etwas angeboten, das Sie nicht ablehnen werden, oder die Bedingungen werden abrupter sein. Eines weiß ich ganz sicher: Du wirst es nicht bereuen. „Ich bin gut in diesem Job“ Wissen Sie, es gibt dieses alte Sprichwort: Le mieux est I'enneini du bien ("Das Bessere ist der Feind des Guten"). Vielleicht ist Ihr Job nicht der schlechteste Ort, aber ja, der Chef ist eine Ziege, na und? Oder zum Beispiel das dritte Jahr ohne Bonus, aber ein stabiles Gehalt, zumal ich schon über 30 bin. Bis zu einem gewissen Grad mag es so sein, bedenke nur, dass du ein Leben hast und es nicht ausgeben sollte Enttäuschungen, für imaginären Trost, wenn es so viele interessante Dinge gibt und das ganze Leben nicht genug ist, um es zu verstehen. Haben Sie keine Angst, besser zu sein, haben Sie keine Angst, besser zu sein. Hören Sie niemandem zu, gehen Sie beharrlich zum Ziel, wenn Sie wissen, dass Sie das wirklich wollen. Scheuen Sie sich nicht, sich zu ändern!

    Interview

    Im Großen und Ganzen kann man das alles im Internet finden oder bei Freunden herumfragen, aber ich denke, dass es nicht überflüssig sein wird. Unten ist ein Beispiel für ein Interview mit einem Junior-Java-Entwickler, wie er jetzt wäre, wenn ich der Interviewer wäre. Fragen können alles sein, ich habe nur versucht, etwas Durchschnittliches für das Krankenhaus zu sammeln. Tun wir so, als hätten Sie Glück. Standardschema Schritt 1. Eine Personalvermittlerin ruft Sie an und Sie vereinbaren mit ihr beispielsweise morgen um 11:00 Uhr ein Vorstellungsgespräch. Schritt 2 Du kommst früh an, denn 11:00 Uhr ist höchstwahrscheinlich nicht die Zeit für dich, sondern für die Entwickler, die eine Art Raum reserviert haben, in dem du gefoltert wirst. Es gehört zum guten Ton eines Personalvermittlers, davor zu warnen. Schritt 3 Tatsächlich können ab Schritt 3 alle Punkte gemischt werden, da Interviews auf unterschiedliche Weise durchgeführt werden können. Hier können Sie zum Beispiel nach grundlegenden Dingen gefragt werden, woher Sie kommen, warum Sie bei uns sind und so weiter. Es ist möglich, dass die Personalabteilung dies selbst tun kann, und natürlich ist es möglich, dass dies auf Englisch erfolgt. Richtig, es kommt auf die Firma an. Schritt 4 Sie werden in einen Besprechungsraum eingeladen, wo Sie ein Gespräch mit ein, zwei, drei Personen führen werden, von denen einer entweder ein Senior oder ein technischer Leiter sein wird, der in Zukunft mit Ihnen zusammenarbeiten wird Scrum Master, andere Entwickler oder HR's. Sie werden eine Weile interviewt, dann schütteln sie Ihre Hand und lassen los. Schritt 5 Vielleicht ist es am nächsten Tag oder vielleicht gleich nach Schritt 4 – Sie werden ein Gespräch mit einem ausländischen Kunden (falls vorhanden) führen, oder vielleicht führt er selbst ein Interview. Wie Sie sehen, gibt es viele Möglichkeiten. Irgendwo gibt es Kunden, irgendwo gibt es auch ein Telefoninterview. Dies ist nur ein Beispiel. Beispiel für ein technisches Vorstellungsgespräch für einen Junior-Java-Entwickler Es tut mir wirklich leid für die Unterentwickler, die etwas Kluges lesen, um vor dem Bewerber für ein Vorstellungsgespräch zu ertrinken / zu vernichten / anzugeben. Wenn Sie sehen, dass eine solche Person vor Ihnen steht und Sie Druck und Anspannung von ihm spüren, schicken Sie ihn sofort zu drei lustigen, denn nach einem erfolgreichen Durchgang mit diesem Schwachkopf müssen Sie arbeiten. Verschwenden Sie nicht Ihre kostbaren Nerven. Das Gespräch sollte zunächst mit dem Ziel stattfinden, herauszufinden, was der Kandidat weiß, und nicht, was er nicht weiß. Wenn Sie eine Person brauchen, die etwas Bestimmtes weiß, fragen Sie sie natürlich, quälen Sie sie nicht mit nutzlosen Dingen, die Sie im Projekt nicht verwenden. Sei doch menschlich! Nachfolgend finden Sie ungefähre Fragen, die in einem Vorstellungsgespräch auftreten können. 5 Fragen für jede Technologie. Hoppla 1. Geben Sie ein Beispiel für Polymorphismus aus dem wirklichen Leben? Was sind die Vorteile? Mängel? Schreiben Sie einen einfachen Code. 2. Was ist eine Schnittstelle? Abstrakte Klasse? Wozu brauchen wir Schnittstellen, wenn man blöderweise alles mit Klassen schreiben kann (kleine Provokation)?. Dasselbe gilt für eine abstrakte Klasse. Was sind Standardmethoden in Java 8? 3. Erstellen Sie eine Klassenhierarchie anhand eines bestimmten Beispiels einer imaginären Datenbank oder eines Programms (es gibt eine Liste verschiedener Klassen von Arbeitern aus der Datenbank) und der Interaktion zwischen ihnen (Aggregation, Zusammensetzung). 4. Wie unterscheidet sich die Zusammensetzung von der Aggregation (ist-ein, hat-ein)? 5. Wie kann man das Verbot der Mehrfachvererbung in Java umgehen? JDK/JRE 1. Wie unterscheidet sich JDK von JRE? Was ist JVM? 2. Was ist ein Klassenpfad und wozu dient er? Wie lädt man beispielsweise andere Klassen in den Klassenpfad? 3. Was wissen Sie über Classloader? 4. Erzählen Sie uns von javadoc? Wofür ist das? 5. Was ist JAR, WAR? Java-Common 1. Was ist der Unterschied zwischen statischen Methoden und nicht statischen Methoden? Was ist endgültig? 2. Was ist Boxen-Unboxen? Byte b = 127, b++, was ist das Ergebnis und warum? 3. Was sind Wrapper, wozu dienen sie? 4. Was muss ich tun, um meine Anmerkung zu erstellen? Was ist Überschreiben/Überladen? 5. Warum ist die String-Klasse final? Was macht die Methode intern()? Datenstrukturen 1. Erzählen Sie uns etwas über die Struktur der Sammlungs-API in Java? Haben Sie bereits mit der Stream API gearbeitet? 2. Was ist der Unterschied zwischen ArrayList und LinkedList? Wo ist es besser, ArrayList zu verwenden und wo ist LinkedList? 3. Sagen Sie uns, wie HashMap funktioniert? Was sind die Merkmale der Arbeit mit TreeSet, HashSet? Haben Sie Erfahrung mit Guave-Sammlungen? 4. Arrays in Java, ein Beispiel für ein zweidimensionales Array. 5. hashCode, gleich auf HashMap-Beispiel? Parallelität 1. Was ist ein Prozess? Fließen? Wie erstelle ich einen Thread? Was wird synchronisiert? Wie kann man diesen oder jenen Thread-sicheren Code verstehen? 2. Was ist Thread.sleep sowie warten, benachrichtigen, ergeben? 3. Geben Sie ein Beispiel für einen Deadlock? 4. Sammlungen bei der Arbeit mit Multithreading. 5. ThreadLocal und atomare Operationen SQL/JDBC 1. Holen Sie sich in einem bestimmten Beispiel aus der Benutzerdatenbank denjenigen, dessen Gehalt größer als 5000 ist. 2. Beispiele für INNER JOIN, OUTER JOIN, Order By, Group By. 3. Warum brauche ich einen JDBC-Treiber? Beispiele. 4. Erzählen Sie alles, was Sie über ResultSet wissen, ein paar Beispiele. 5. Schreiben Sie ein einfaches DAO mit RS. JPA/Ruhezustand 1. Was sind die Vor- und Nachteile von JPA? 2. Was ist ein EntityManager? Einheit? 3. Kriterien in JPA/Hibernate. 4. Eins-zu-eins, Viele-zu-Viele in JPA/Hibernate 5. Wie würden Sie einen JOIN in Hibernate durchführen? HQL? Frühling 1. Was ist DI/IoC? Vorteile. 2. Was ist Anwendungskontext? Bohne? 3. Was sind IoC-Initialisierungstypen? 4. Singleton, Prototyp im Frühjahr? Anmerkungsbasierter Frühling? 5. Lebenszyklus von Bohnen? Init-Methode, Destroy-Methode? @PostConstruct, @PostDeploy? Maven 1. Die Hauptphasen von Maven, der Lebenszyklus. 2. Wie führe ich Maven mit Tests ohne Tests aus? Was ist Archetyp, mvn-Abhängigkeit? 3. Profile in Maven, wie man sie erstellt, wie man sie ausführt. 4. Was ist ein Snapshot in Maven? Zentrale/Remote-Repositories? 5. Plugins in mvn, das Funktionsprinzip, ein paar Beispiele. Algo 1. Das Konzept des Algorithmus, seine Geschwindigkeit, Big-O-Notation. 2. Wie finde ich das mittlere Element in einer LinkedList auf einmal? 3. Einen primitiven Stack schreiben? Was ist der Unterschied zwischen Stapel und Warteschlange? LIFO, FIFO? 4. Schnellsortierung, Sortierung zusammenführen. 5. Schreiben Sie ein Programm, das überprüft, ob eine Zahl ein Palindrom ist. Ich stimme zu, vielleicht ist die Stange etwas mehr zur Mitte hin gebogen als beim Junior, aber ich denke, dass Ihnen eine solche Vorbereitung definitiv nicht schaden wird. Versuchen Sie, tiefer in jede Frage einzutauchen. Übrigens sind hier viele Richtungen in Java nicht angegeben, bitte beachten.

    Während der Arbeit

    Hier sind kleine Empfehlungen für diejenigen Junior-/Mittelentwickler, die sich bereits eingelebt haben. Diese einfachen Tipps können für Sie genauso nützlich sein, wie sie mir wiederum geholfen haben. Seien Sie nicht stur Hören Sie auf, Ihren Standpunkt zu beweisen, auch wenn er der Wahrheit verführerisch nahe kommt. Sie haben bereits bemerkt, dass Sie sich seit langem im Streit befinden, was bedeutet, dass auf der anderen Seite der Barrikaden ein gewöhnlicher Esel steht, der nur zwei Meinungen im Leben hat: seine und die falsche. Wir haben unglaublich viele Sturköpfe, die sich bis zuletzt durchsetzen, solange ihr Ego nicht erschüttert wird. Und das sind nicht nur Ihre Kollegen, sie sind einfach überall - im Kleinbus, im Laden, bei Verwandten, engen Freunden - Sie können nicht weglaufen oder sich vor ihnen verstecken. Sie müssen irgendwie mit ihnen interagieren, auch wenn Sie verstehen, dass eine Person offenen Unsinn redet. Außerdem kann Ihnen dasselbe passieren. Ich stimme zu, einfache Dinge können sogar einer sturen Person erklärt werden, aber was ist, wenn wir über architektonische Probleme in einem Projekt oder einer persönlichen Meinung sprechen? Vergessen Sie diesen Müll – seien Sie flexibel. Ich habe großen Respekt vor Menschen, die zugeben können, dass sie falsch liegen, vor allen anderen. Diese Eigenschaft wird Ihnen als Nachwuchsfachkraft zugutekommen – es ist schwierig, einem offenen Menschen gegenüberzutreten, besonders wenn er zugibt, dass er lernt und das Recht hat, Fehler zu machen. Sei nicht zuspät Egal ob Probezeit oder nur ein Freitag, an dem jeder punktet und auf 11 kommt. Wichtig ist noch etwas: Pünktlichkeit ist ein Merkmal eines Profis, der sich aus heiterem Himmel Extrapunkte holt. Und Extrapunkte für eine Person ohne Erfahrung schaden nicht, oder? Versuchen Sie, nicht zu spät zu kommen und verlassen Sie die Arbeit ehrlich nach 8 Stunden Arbeit. Missbrauchen Sie Schätzungen nicht Leider ist dies ein sehr häufiges Bild, in das ich mich in der Vergangenheit einmal hineingesteigert habe. Der Entwickler setzte sich 8-16 Stunden Zeit, um die Aufgabe zu erledigen, und erledigte sie unerwartet in 3-4 Stunden. Die restlichen Stunden verbringt er mit seiner Freizeit in Form von Tischtennis, wie es bei mir der Fall war, oder dem Ansehen von Youtube und anderer Unterhaltung. Aus rechtlicher Sicht scheinen sie zugestimmt zu haben, aber aus menschlicher Sicht berauben Sie sich sehr wichtiger Dinge: 1. Sie stehen still, da Sie zusätzliche Zeit mit unnötigen Dingen füllen; 2. Sie entwickeln sich nicht weiter, weil Sie das Management nicht über Ihre schnellen Fortschritte informieren, niemand weiß, dass Sie Aufgaben schneller als erwartet erledigen; 3. Sie beginnen, die durchschnittliche Zeitdauer für Werte ständig zu überschätzen, es ist nur ein Weg ins Nirgendwo. Nehmen Sie sich Zeit zum Lernen Die Chance, hinter die Engine zurückzufallen, ist unrealistisch hoch, also denken Sie daran, dass sich Technologie und neue Versionen sehr schnell entwickeln. Abonnieren Sie Java-Evangelisten unserer Zeit, lesen Sie Java-Digests und interessieren Sie sich allgemein, lernen Sie neue Dinge. Dies wird Ihnen helfen, Ihre Marke zu halten und weiterzuentwickeln. Anderen helfen Scheuen Sie sich nicht, anderen zu helfen, auch wenn sie so grün sind wie Sie. Erstens werden Sie Ihr Wissen enorm stärken, und zweitens werden Sie in den Augen anderer respektiert und sie werden Ihnen gleichzeitig helfen. In einem solchen Umfeld entstehen die besten Teams sowie ein sehr schnelles technisches und persönliches Wachstum. Mach Sport. Ein Hobby haben Nein im Ernst. Sportler sehen nicht nur besser aus und fühlen sich auch besser, auch ihre Gehirnfunktion ist top! Skoliose, unterer Rücken, Übergewicht, verschiedene Probleme mit den inneren Organen - rund um die Uhr Zusammenkünfte am Computer, auch außerhalb der Arbeit, tragen dazu bei. Wenn Sie keinen Sport treiben können (was ich bezweifle), verwenden Sie kleine Lifehacks: Arbeiten Sie von Zeit zu Zeit im Stehen, verlassen Sie zwei Stationen früher und gehen Sie zu Fuß zur Arbeit. Und ja, mehr laufen. Burnout-Gefahr besteht auch, wenn das Programmieren deutlich mehr Zeit in Anspruch nimmt als 40 Stunden pro Woche. Persönliche Hobbys werden zur Rettung kommen - zum Beispiel Fotografieren, Musik usw. Nehmen Sie sich regelmäßig Zeit für Spiritualität. Balance in Ihrem Privatleben Wenn eine Freundin/Ehefrau sagt: „Laptop oder ich“, müssen Sie ernsthaft darüber nachdenken, welchen Platz das Programmieren in Ihrem Leben einnimmt. Auf der anderen Seite müssen Sie zu Beginn Ihrer Reise in die IT Ihrem Seelenverwandten klar erklären, dass Sie jetzt viel lernen müssen, um mehr zu erreichen. Ich hoffe, sie verstehen. Nun, Sie versuchen, Ihre Zeit auszugleichen und richtig einzuteilen. weitergehen Seien Sie proaktiv, wenn Sie zum Beispiel das Gefühl haben, Wissen teilen zu können oder interessante Themen zu haben, warum organisieren Sie nicht kleine Kurse innerhalb des Unternehmens für andere? Scheuen Sie sich nicht, zu großen Open-Source-Projekten beizutragen, wenn Sie wissen, wie Sie helfen können. Wenn Sie ein Spiel, ein soziales Projekt oder eine andere Idee schreiben möchten - tun Sie es, tun Sie es, tun Sie es! Stehen Sie nicht still, suchen Sie immer nach Wegen, wo Sie sich weiterentwickeln können. Seien Sie wettbewerbsfähig Achten Sie auf neue Trends, bleiben Sie über die Trends in der Java-Community auf dem Laufenden. Zum Beispiel wird es nicht überflüssig sein, wenn Sie gelegentlich Java-Stellenangebote bei DOU beobachten, aber nicht, um von der Arbeit wegzukommen, sondern um zu wissen, welche Technologien relevant bleiben und welche langsam vom Markt verschwinden . Versuchen Sie auch, Kurse auf Coursera, Udacity usw. zu belegen und neue Horizonte zu erkunden. Und sogar Englisch: Versuchen Sie, Ihre Lieblingsfilme / Fernsehsendungen im Original mit Untertiteln anzusehen, um Ihre Konversationsfähigkeiten zu verbessern, laden Sie ein paar interessante Anwendungen zum Erlernen der Sprache herunter (z. B. LinguaLeo) und besuchen Sie am Ende Kurse .

    Fazit

    Nun, mein kleines DOU-Projekt neigt sich dem Ende zu. Liebe Freunde, ich wünsche Ihnen aufrichtig, dass Sie einen Job bekommen, und ich hoffe, dass alles, was ich in diesen 7 Artikeln beschrieben habe, ein wertvoller Leitfaden für Sie sein wird, auch für diejenigen, die bereits als Java-Entwickler arbeiten. Zukünftige Junioren, denken Sie daran, dass nichts unmöglich ist, und wenn Sie wirklich pushen, werden Sie definitiv erfolgreich sein. Ich möchte, dass du endlich entscheidest, ob das deins ist oder nicht, einen detaillierten Trainingsplan entwickelst und ihn cool befolgst. Seien Sie nicht verärgert, wenn Sie dafür Schweigen bekommen - das ist alles nur vorübergehend, die Hauptsache ist zu glauben und auf keinen Fall in die Irre zu gehen, sondern zu studieren, zu studieren und noch einmal zu studieren. Ich möchte dem DOU-Team meine tiefe Dankbarkeit dafür aussprechen, dass es eine große Menge an Material bearbeitet und mir montags erstklassige Sendezeit gegeben hat. DOU ist eine coole Community, die nicht mehr nur eine Seite für ukrainische IT-Leute ist. Ich möchte mich auch bei allen Kommentatoren bedanken, die meine Artikel schräg gelesen und Sätze aus dem Zusammenhang gerissen haben. Artikel würden ohne dich nicht so interessant aussehen :) Möge die Macht mit dir sein!

    Für diejenigen, die das Wort Java Core zum ersten Mal hören, sind dies die grundlegenden Grundlagen der Sprache. Mit diesem Wissen können Sie bereits bedenkenlos in ein Praktikum / Praktikum gehen. Diese Fragen helfen Ihnen, Ihr Wissen vor dem Vorstellungsgespräch aufzufrischen oder etwas Neues für sich zu lernen. Für praktische Fähigkeiten, studieren Sie weiter.

      Wie erstelle ich ein unveränderliches Objekt in Java? Liste alle Vorteile auf

      Eine unveränderliche Klasse ist eine Klasse, deren Zustand nicht geändert werden kann, nachdem sie erstellt wurde. Hier besteht der Zustand eines Objekts im Wesentlichen aus den in einer Instanz der Klasse gespeicherten Werten, unabhängig davon, ob es sich um primitive Typen oder Referenztypen handelt.

      Um eine Klasse unveränderlich zu machen, müssen die folgenden Bedingungen erfüllt sein:

      1. Stellen Sie keine Setter oder Methoden bereit, die Felder oder Objekte ändern, die auf Felder verweisen. Setter implizieren das Ändern des Zustands eines Objekts, was wir hier vermeiden wollen.
      2. Machen Sie alle Felder final und privat . Felder, die als privat gekennzeichnet sind, sind von außerhalb der Klasse nicht zugänglich, und wenn Sie sie als endgültig kennzeichnen, wird sichergestellt, dass Sie sie nicht einmal versehentlich ändern.
      3. Erlauben Sie Unterklassen nicht, Methoden zu überschreiben. Der einfachste Weg, dies zu tun, besteht darin, die Klasse als final zu deklarieren. Abgeschlossene Klassen in Java können nicht überschrieben werden.
      4. Denken Sie immer daran, dass Ihre Variableninstanzen entweder veränderlich oder unveränderlich sein können. Definieren Sie sie und geben Sie neue Objekte mit kopiertem Inhalt für alle veränderlichen Objekte (Referenztypen) zurück. Unveränderliche Variablen (primitive Typen) können ohne zusätzlichen Aufwand sicher zurückgegeben werden.

      Außerdem müssen Sie die nachfolgenden Vorteile von unveränderlichen Klassen berücksichtigen. Vielleicht brauchen Sie sie für ein Vorstellungsgespräch. Unveränderliche Klassen:

      • einfach zu entwerfen, zu testen und zu verwenden
      • sind automatisch Thread-sicher und haben keine Synchronisationsprobleme
      • benötigen keinen Kopierkonstruktor
      • erlauben Ihnen, den Hashcode "faul zu initialisieren" und den Rückgabewert zwischenzuspeichern
      • erfordern keine sichere Kopie, wenn sie als Feld verwendet werden
      • Gute Kartenschlüssel und Set-Elemente erstellen (diese Objekte sollten ihren Status nicht ändern, wenn sie sich in der Sammlung befinden)
      • Machen Sie ihre Klasse dauerhaft, indem Sie sie einmal erstellen, und sie muss nicht erneut überprüft werden
      • haben immer „Fehleratomarität“, ein Begriff, der von Joshua Bloch geprägt wurde: Wenn ein unveränderliches Objekt eine Ausnahme auslöst, wird es niemals in einem unerwünschten oder undefinierten Zustand verbleiben.

      Sehen Sie sich das Beispiel in diesem Beitrag an.

      Die Java-Spezifikation besagt, dass alles in Java als Wert übergeben wird. In Java gibt es so etwas wie "Pass by Reference" nicht. Diese Bedingungen sind dem Aufrufen von Methoden und dem Übergeben von Variablen als Methodenparameter zugeordnet. Nun, primitive Typen werden immer ohne Verwirrung als Wert übergeben. Aber das Konzept sollte im Zusammenhang mit einem Methodenparameter komplexer Typen verstanden werden.


      Im obigen Beispiel werden die Adressbits der ersten Instanz in eine andere Referenzvariable kopiert, wodurch beide Referenzen auf dieselbe Stelle im Speicher zeigen, an der das Objekt gespeichert ist. Denken Sie daran, dass Sie der ersten Referenz nicht null zuweisen, wenn Sie der zweiten Referenz null zuweisen. Aber eine Zustandsänderung eines Objekts mit einer referenzierten Variablen wird auch in der anderen Referenz widergespiegelt.

      Wozu dient der finally-Block? Garantiert dieser Block die Ausführung seines Codes? Wann wird der finally-Block nicht aufgerufen?

      Der finally-Block wird immer dann aufgerufen, wenn der try-Block existiert. Dadurch wird sichergestellt, dass der finally-Block auch dann aufgerufen wird, wenn eine unerwartete Ausnahme auftritt. Aber finally ist nützlicher als nur die Behandlung von Ausnahmen – dieser Block ermöglicht es Ihnen, Code zu bereinigen, der versehentlich return, Continue oder Break umgangen hat. Das Platzieren von Bereinigungscode in einem finally-Block ist immer eine gute Vorgehensweise, auch wenn keine Ausnahmen erwartet werden.

      Wenn die virtuelle Maschine beendet wird, während der try- oder catch-Block ausgeführt wird, wird der finally-Block nicht ausgeführt. Wenn ein Thread während der Ausführung eines try- oder catch-Blocks unterbrochen oder beendet wird, wird der finally-Block nicht ausgeführt, obwohl die Anwendung noch ausgeführt wird.

      Warum gibt es zwei Date-Klassen, eine im Paket java.util und die andere in java.sql ?

      java.util.Date stellt ein Datum und eine Uhrzeit dar, während java.sql.Date nur ein Datum darstellt. Die Ergänzung zu java.sql.Date ist die Klasse java.sql.Time, die nur die Zeit darstellt.

      Die Klasse java.sql.Date ist eine Unterklasse (Erweiterung) der Klasse java.util.Date. Was hat sich also in java.sql.Date geändert:

      • toString() erzeugt eine andere Stringdarstellung: yyyy-mm-dd
      • die statische Methode valueOf(String) erzeugt ein Datum aus einem String mit obiger Darstellung
      • ausgenommen Getter und Setter für Stunden, Minuten und Sekunden

      Die Klasse java.sql.Date wird in JDBC verwendet und ist so konzipiert, dass sie keine Zeitkomponente enthält, d. h. Stunden, Minuten, Sekunden und Millisekunden müssen null sein ... aber dies wird von der Klasse nicht verlangt.

      Markerschnittstellen erklären.

      Das Marker-Interface-Muster ist ein Entwurfsmuster der Informatik, das von Programmiersprachen verwendet wird liefern Informationen über Objekte zur Laufzeit. Das bietet eine Möglichkeit, Klassenmetadaten zuzuordnen, wenn die Sprache solche Metadaten nicht ausdrücklich unterstützt. Java verwendet dafür Schnittstellen, ohne Methoden anzugeben.

      Ein gutes Beispiel für die Verwendung einer Marker-Schnittstelle in Java ist die Serializable-Schnittstelle. Die Klasse implementiert diese Schnittstelle, um anzuzeigen, dass ihre nichtflüchtigen Daten in einen Bytestrom oder ein Dateisystem geschrieben werden können.

      Das Hauptproblem Eine Markierungsschnittstelle ist, dass eine Schnittstelle eine Konvention für Klassen definiert, die sie implementieren, und dass diese Konvention von allen Unterklassen geerbt wird. Das bedeutet, dass Sie den Token nicht „derealisieren“ können. Wenn Sie im obigen Beispiel eine Unterklasse erstellen, die nicht serialisiert werden soll (vielleicht weil sie sich in einem vorübergehenden Zustand befindet), müssen Sie darauf zurückgreifen, explizit eine NotSerializableException auszulösen.

      Warum ist die Methode main() als public static void deklariert?

      Warum öffentlich? Die Hauptmethode hat den öffentlichen Zugriffsmodifikator, sodass überall und von jedem Objekt darauf zugegriffen werden kann, das diese Methode zum Starten der Anwendung verwenden möchte. Hier sage ich nicht, dass JDK/JRE einen ähnlichen Grund haben, da java.exe oder javaw.exe (für Windows) den Java Native Interface (JNI)-Aufruf verwenden, um die Methode auszuführen, sodass sie sie unabhängig vom Zugriffsmodifikator trotzdem aufrufen können .

      Warum statisch? Nehmen wir an, dass unsere Hauptmethode nicht statisch ist. Um nun eine beliebige Methode aufzurufen, benötigen Sie eine Instanz der Klasse. Recht? Java erlaubt überladene Konstruktoren, das wissen wir alle. Welches sollte dann verwendet werden und woher kommen die Parameter für den überladenen Konstruktor?

      Warum ungültig? Der Rückgabewert in der virtuellen Maschine, die diese Methode tatsächlich aufruft, hat keine Verwendung. Das einzige, was die Anwendung dem aufrufenden Prozess mitteilen möchte, ist eine normale oder abnormale Beendigung. Dies ist bereits mit System.exit(int) möglich. Ein Wert ungleich Null impliziert eine abnormale Beendigung, ansonsten ist alles in Ordnung.

      Was ist der Unterschied zwischen dem Erstellen eines Strings als new() und eines Literals (mit doppelten Anführungszeichen)?

      Wenn wir einen String mit new() erstellen, wird dieser im Heap erstellt und auch dem String-Pool hinzugefügt, während der mit dem Literal erstellte String nur im String-Pool erstellt wird.

      Sie müssen mehr über das String-Pool-Konzept wissen, um diese oder ähnliche Fragen zu beantworten. Mein Rat ist, die Saitenklasse und den Saitenpool gut zu lernen.

      Wie funktioniert die Methode substring() der Klasse String?

      Wie in anderen Programmiersprachen sind Strings in Java Zeichenfolgen. Diese Klasse ist eher eine Hilfsklasse für die Arbeit mit dieser Sequenz. Die Zeichenfolge wird durch die folgende Variable bereitgestellt:

      /** Der Wert wird zur Zeichenspeicherung verwendet. */ /** Wert wird zum Speichern von Zeichen verwendet */ privater finaler Zeichenwert ; Die folgenden Variablen werden verwendet, um in verschiedenen Szenarien auf dieses Array zuzugreifen /** Der Offset ist der erste Index des verwendeten Speichers. */ /** Der Offset ist der erste zu verwendende Index des Speichers. */ privater finaler int-Offset; /** Die Anzahl ist die Anzahl der Zeichen im String. */ /** Die Anzahl ist die Anzahl der Zeichen in der Zeichenfolge. */ private final int count;

      Jedes Mal, wenn wir einen Teilstring aus einer vorhandenen Stringinstanz erstellen, setzt die Methode substring() nur die Variablen offset und count auf neue Werte. Das interne Zeichenarray wird nicht modifiziert. Dies ist eine mögliche Quelle für ein Speicherleck, wenn die Methode substring() nachlässig verwendet wird:

      Der ursprüngliche Wert von value wird nicht verändert. Wenn Sie also einen String mit 10000 Zeichen erstellen und 100 Teilstrings mit jeweils 5-10 Zeichen erstellen, enthalten alle 101 Objekte dasselbe Zeichenarray mit 10000 Zeichen. Dies ist zweifellos eine Verschwendung von Speicher.

      Dies kann vermieden werden, indem der Code wie folgt geändert wird:

      Ersetzen Sie original.substring(beginIndex) durch new String(original.substring(beginIndex)) , wobei original die ursprüngliche Zeichenfolge ist.

      Erklären Sie, wie HashMap funktioniert. Wie wird das Problem der Duplikate gelöst?

      Die meisten von Ihnen werden sicherlich zustimmen, dass HashMap derzeit das beliebteste Interviewthema ist. Wenn mich jemand fragt, „Wie funktioniert HashMap?“, antworte ich einfach: „Nach dem Hash-Prinzip“. So einfach wie es ist.

      Hashing ist also im Wesentlichen eine Möglichkeit, jeder Variablen / jedem Objekt einen eindeutigen Code zuzuweisen, nachdem eine Formel / ein Algorithmus auf seine Eigenschaften angewendet wurde.

      Die Definition einer Map lautet: "Ein Objekt, das Schlüssel an Werte bindet." Ganz einfach, oder? HashMap enthält also eine eigene innere Klasse Entry , die wie folgt aussieht:

      Die statische Klasse Entry implementiert Map . Eintrag( final K key; V value; Entry next; final int hash; …//More code goes here )

      Wenn jemand versucht, ein Schlüssel-Wert-Paar in eine HashMap einzufügen, passiert Folgendes:

      • Zunächst wird das Schlüsselobjekt gegen null geprüft. Wenn der Schlüssel null ist, wird der Wert in der Positionstabelle gespeichert. Denn der Hashcode für null ist immer 0.
      • Dann besteht der nächste Schritt darin, den Hash-Wert zu berechnen, indem die Methode hashCode() für die Schlüsselvariable aufgerufen wird. Dieser Hash wird verwendet, um den Index in das Array zu berechnen, um das Entry-Objekt aufzunehmen. Die JDK-Entwickler waren sich bewusst, dass die Methode hashCode() schlecht geschrieben sein und einen sehr großen oder sehr kleinen Wert zurückgeben könnte. Um dieses Problem zu lösen, führten sie eine weitere hash()-Methode ein und übergaben den Hashcode des Objekts an diese Methode, um diesen Wert in den Größenbereich des Index des Arrays umzuwandeln.
      • Die Methode indexFor(hash, table.length) wird nun aufgerufen, um die exakte Position zum Speichern des Entry-Objekts zu berechnen.
      • Jetzt der Hauptteil. Da wir wissen, dass zwei unterschiedliche Objekte denselben Hashcode-Wert haben können, wie können zwei unterschiedliche Objekte am selben Ort in einem Archiv [einem so genannten Mülleimer] gespeichert werden?

      Die Antwort ist LinkedList . Wie Sie sich erinnern, hat die Entry-Klasse eine „next“-Eigenschaft. Diese Eigenschaft zeigt immer auf das nächste Objekt in der Kette. Dieses Verhalten ist LinkedList sehr ähnlich.

      Bei Hashcode-Übereinstimmungen werden Entry-Objekte also in Form von LinkedList gespeichert. Wenn ein Eintrag an einem bestimmten Index platziert werden muss, prüft HashMap, ob an dieser Stelle ein anderer Eintrag vorhanden ist? Wenn dort kein Eintrag vorhanden ist, wird unser Objekt an diesem Ort gespeichert.

      Wenn sich bereits ein anderes Objekt in unserem Index befindet, wird dessen nächstes Feld geprüft. Wenn es null ist, wird unser Objekt zum nächsten Knoten in der LinkedList . Wenn next nicht null ist, wird diese Prozedur wiederholt, bis ein NULL-Next-Feld gefunden wird.

      Was passiert, wenn wir einen weiteren Schlüsselwert hinzufügen, der dem zuvor hinzugefügten entspricht? Es ist logisch, dass es den alten Wert ersetzen sollte. Wie kommt es dazu? Nachdem der Positionsindex für das Entry-Objekt bestimmt wurde, ruft HashMap durch Iteration über die LinkedList an unserem Index die Methode equals() für den Schlüsselwert für jedes Entry-Objekt auf. Alle diese Entry-Objekte in der LinkedList haben denselben Hashcode-Wert, aber die Methode equals() testet auf wahre Gleichheit. Wenn Schlüssel. gleich (k) wird Stimmt, dann werden beide als dasselbe Objekt behandelt. Dadurch wird nur das Wertobjekt innerhalb des Entry-Objekts ersetzt.

      Somit stellt HashMap die Eindeutigkeit der Schlüssel sicher.

      Unterschiede zwischen Schnittstellen und abstrakten Klassen?

      Dies ist eine sehr häufige Frage, wenn Sie sich für einen Junior-Programmierer bewerben. Die wichtigsten Unterschiede sind unten aufgeführt:

      • In Java-Schnittstellen sind Variablen a priori final . Abstrakte Klassen können nicht-finale Variablen enthalten.
      • Eine Schnittstelle in Java kann definitiv keine Implementierung haben. Eine abstrakte Klasse kann Instanzen von Methoden haben, die das Basisverhalten implementieren.
      • Schnittstellenmember müssen öffentlich sein. Eine abstrakte Klasse kann Zugriffsmodifikatoren jeglicher Art haben.
      • Eine Schnittstelle muss mit dem Schlüsselwort implements implementiert werden. Eine abstrakte Klasse muss mit einem Schlüsselwort erweitert werden erweitert.
      • In Java kann eine Klasse viele Schnittstellen implementieren, aber nur von einer abstrakten Klasse erben.
      • Eine Schnittstelle ist völlig abstrakt und kann nicht instanziiert werden. Eine abstrakte Klasse kann auch keine Instanzen der Klasse haben, kann aber aufgerufen werden, wenn die Methode main() existiert.
      • Eine abstrakte Klasse ist etwas schneller als eine Schnittstelle, da eine Schnittstelle eine Suche erwartet, bevor sie eine überschriebene Methode in Java aufruft. In den meisten Fällen ist dies ein kleiner Unterschied, aber wenn Sie eine zeitkritische Anwendung schreiben, müssen Sie auch diese Tatsache berücksichtigen.
    1. Wann überschreiben Sie die Methoden hashCode() und equals()?

      Die hashCode()- und equals()-Methoden werden in der Object-Klasse definiert, die die übergeordnete Klasse aller Java-Objekte ist. Aus diesem Grund erben alle Java-Objekte die Basisimplementierung dieser Methoden.

      Die Methode hashCode() wird verwendet, um einen eindeutigen ganzzahligen Wert für ein bestimmtes Objekt zu erhalten. Dieser Wert wird verwendet, um den Speicherort des Korbs zu bestimmen, wenn das Objekt in einer Datenstruktur wie einer HashTable gespeichert werden muss. Standardmäßig gibt die Methode hashCode() eine ganzzahlige Darstellung der Speicheradresse zurück, an der das Objekt gespeichert ist.

      Die Methode equals() dient, wie der Name schon sagt, der einfachen Objektäquivalenz. Die grundlegende Implementierung des Verfahrens besteht darin, die Referenzen der beiden Objekte zu prüfen, um zu sehen, ob sie äquivalent sind.

      Beachten Sie, dass es normalerweise notwendig ist, die Methode hashCode() immer dann zu überschreiben, wenn die Methode equals() überschrieben wird. Dies ist notwendig, um die allgemeine Konvention der hashCode-Methode zu unterstützen, die besagt, dass gleiche Objekte gleiche Hashcodes haben müssen.

      Die Methode equals() muss die Gleichheit der Beziehung bestimmen (sie muss rekursiv, symmetrisch und transitiv sein). Außerdem muss es persistent sein (wenn sich das Objekt nicht geändert hat, muss die Methode denselben Wert zurückgeben). Außerdem sollte o.equals(null) immer zurückgegeben werden FALSCH.

      hashCode() muss auch stabil sein (wenn sich das Objekt unter den Bedingungen der Methode equals() nicht geändert hat, muss es weiterhin den gleichen Wert zurückgeben.

      Die Beziehung zwischen den beiden Methoden ist: immer wenn a.equals(b) , dann muss a.hashCode() dasselbe sein wie b.hashCode() .

    Viel Erfolg beim Studium!! Autor des Artikels Lokesh Gupta Originaler Artikel Links zu anderen Teilen: