JavaRush /Java-Blog /Random-DE /Level 21. Antworten auf Interviewfragen zum Levelthema
zor07
Level 31
Санкт-Петербург

Level 21. Antworten auf Interviewfragen zum Levelthema

Veröffentlicht in der Gruppe Random-DE
Stufe 21. Antworten auf Interviewfragen zum Thema Stufe - 1
  1. Klassenmethoden auflistenObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equalsWarum werden & Methoden benötigt hashCode?

    Wird zum Vergleichen von Objekten verwendet.

    Der Zweck der Methode equalsbesteht darin, durch Vergleich der internen Inhalte der Objekte festzustellen, ob Objekte intern identisch sind. Dies equalsfunktioniert langsam, zunächst werden die Hash-Codes der Objekte verglichen, und wenn die Hash-Codes gleich sind, wird eine Prüfung durchgeführtequals

  3. Was passiert, wenn Sie „equals“ überschreiben, aber nicht überschreiben hashCode?

    Zunächst hashCodeeine Zufallszahl.

    equalsSammlungen in Java suchen/vergleichen sie immer mit der Methode, bevor sie Objekte mit vergleichen hashCode(). Und wenn identische Objekte unterschiedliche haben hashCode, werden die Objekte als unterschiedlich betrachtet – es ist einfach nicht möglich, sie zu vergleichen equals.

  4. Warum sind die Methoden wait, notify, notifyAll?

    Manchmal kann es bei einem Programm zu einer Situation kommen, in der ein Thread in einen Codeblock eingetreten ist synchronized, den Monitor blockiert hat und nicht weiterarbeiten kann, weil Es fehlen noch einige Daten: Beispielsweise wurde die Datei, die verarbeitet werden soll, noch nicht geladen oder ähnliches. Zur Lösung dieses Problems wurde eine Methode erfunden wait(). Der Aufruf dieser Methode bewirkt, dass der Thread den Monitor freigibt und „pausiert“.

    Um die Pause aufzuheben, werden Methoden verwendet notify. notifyAllDie Methode notify„taut“ einen zufälligen Thread auf, die Methode notifyAll– alle „eingefrorenen“ Threads eines bestimmten Monitors.

  5. Wie klont man ein Objekt richtig?

    Zwei Arten des Klonens.

    So klonen Sie ein Standardobjekt:

    • CloneableFügen Sie Ihrer Klasse eine Schnittstelle hinzu
    • Überschreiben Sie die Methode cloneund rufen Sie die Basisimplementierung darin auf:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    Oder Sie schreiben die Implementierung der Methode cloneselbst:

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. Warum wird die Methode benötigt finalize()und wie funktioniert sie?

    Wie Sie sich erinnern, finalize()ist dies eine spezielle Methode, die für ein Objekt aufgerufen wird, bevor der Garbage Collector es zerstört.

    Der Hauptzweck dieser Methode besteht darin, verwendete externe Nicht-Java-Ressourcen freizugeben: Dateien schließen, E/A-Streams usw.

    finalize()Funktioniert instabil.

    Diese Methode wird den in sie gesetzten Erwartungen nicht gerecht. Die Java-Maschine kann die Zerstörung eines Objekts sowie den Aufruf einer Methode finalizebeliebig lange verzögern. Darüber hinaus kann nicht garantiert werden, dass diese Methode überhaupt aufgerufen wird. In vielen Situationen wird aus Gründen der „Optimierung“ nicht aufgerufen.

  7. Was ist der Unterschied final, finally, finalize?

    • final- Modifikator
    • Felder können nicht geändert werden, Methoden werden überschrieben
    • Klassen können nicht vererbt werden
    • Dieser Modifikator gilt nur für Klassen, Methoden und Variablen (auch lokale Variablen).
    • finalAls schreibgeschützt markierte Methodenargumente ; der Versuch, sie zu ändern, führt zu einem Kompilierungsfehler.
    • Переменные final не инициализируются по умолчанию, им необходимо явно присвоить Bedeutung при объявлении oder в конструкторе, иначе – ошибка компиляции
    • Если final переменная содержит ссылку на ein Objekt, ein Objekt может быть изменен, но переменная всегда будет ссылаться на тот же самый ein Objekt
    • Также это справедливо и для массивов, потому что массивы являются ein Objektами, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
    • Если класс объявлен final и abstract (взаимоисключающие понятия), произойдет ошибка компиляции
    • Так Wie final класс не может наследоваться, его методы никогда не могут быть переопределены

    finally — блок в связке try-catch-finally, Code в котором выполнится независимо от того вылетело ли исключение в блоке try oder нет. Используется для освобождения ресурсов.

    finalize — метод в классе Object см 6.

  8. Was такое try-with-resources?

    Это специальная конструкция try, называемая try-with-resources, в которой Обрати внимание – после try следуют круглые скобки, где объявляются переменные и создаются ein Objektы. Эти ein Objektы можно использовать внутри блока try, обозначенного скобками {}. Когда выполнение команд блока try закончится, независимо от того – нормально оно закончилось oder было исключение, для ein Objektа, созданного внутри круглых скобок (), будет вызван метод close();

  9. Чем отличаются методы wait(1000) и sleep(1000)?

    sleep() приостанавливает поток на указанное. состояние меняется на TIMED_WAITING, по истечению — RUNNABLE

    wait() меняет состояние потока на WAITING

    может быть вызвано только у ein Objektа владеющего блокировкой, в противном случае выкинется исключение IllegalMonitorStateException. при срабатывании метода блокировка отпускается, что позволяет продолжить работу другим потокам ожидающим захватить ту же самую блокировку . в случае wait(int) с аргументом состояние будет TIMED_WAITING

  10. В чем отличие i++ и ++i?

    • ++i, i сначала увеличивается на 1, затем участвует в выражении.
    • i++, i сначала участвует в выражении, затем увеличивается на 1.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION