JavaRush /Blog Java /Random-PL /Poziom 21. Odpowiedzi na pytania podczas rozmowy kwalifik...
zor07
Poziom 31
Санкт-Петербург

Poziom 21. Odpowiedzi na pytania podczas rozmowy kwalifikacyjnej na temat poziomu

Opublikowano w grupie Random-PL
Poziom 21. Odpowiedzi na pytania z rozmowy kwalifikacyjnej na temat poziomu - 1
  1. Lista metod klasObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equalsDlaczego & metody są potrzebne hashCode?

    Służy do porównywania obiektów.

    Celem tej metody equalsjest określenie, czy obiekty są wewnętrznie identyczne, poprzez porównanie wewnętrznej zawartości obiektów. Działa to equalspowoli, najpierw porównuje się kody mieszające obiektów, a jeśli kody mieszające są równe, sprawdza się, czyequals

  3. Co się stanie, jeśli zastąpisz równa się, ale nie zastąpisz hashCode?

    Początkowo hashCodeliczba losowa.

    equalsKolekcje w Javie zawsze wyszukują/porównują je przy użyciu metody przed porównaniem obiektów przy użyciu metody hashCode(). A jeśli identyczne obiekty mają różne cechy hashCode, wówczas obiekty te zostaną uznane za różne – po prostu nie będzie możliwe porównanie przy ich użyciu equals.

  4. Dlaczego są to metody wait, notify, notifyAll?

    Czasami w programie może wystąpić sytuacja, w której wątek wprowadził blok kodu synchronized, zablokował monitor i nie może dalej pracować, ponieważ nadal brakuje niektórych danych: na przykład plik, który powinien przetworzyć, nie został jeszcze załadowany lub coś w tym rodzaju. Wynaleziono metodę rozwiązania tego problemu wait(). Wywołanie tej metody powoduje, że wątek zwalnia monitor i „wstrzymuje”.

    Aby wznowić, stosuje się metody notify. notifyAllMetoda notify„odmraża” jeden losowy wątek, metoda notifyAll– wszystkie „zamrożone” wątki danego monitora.

  5. Jak poprawnie sklonować obiekt?

    Dwa rodzaje klonowania.

    Aby sklonować obiekt domyślny:

    • Dodaj interfejs Cloneabledo swojej klasy
    • Zastąp metodę clonei wywołaj w niej podstawową implementację:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    cloneMożesz też sam napisać implementację metody :

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. Dlaczego ta metoda jest potrzebna finalize()i jak działa?

    Jeśli pamiętasz, finalize()jest to specjalna metoda wywoływana na obiekcie, zanim moduł zbierający elementy bezużyteczne go zniszczy.

    Głównym celem tej metody jest zwolnienie używanych zewnętrznych zasobów innych niż Java: plików zamykających, strumieni we/wy itp.

    finalize()działa niestabilnie.

    Metoda ta nie spełnia pokładanych w niej oczekiwań. Maszyna Java może opóźniać zniszczenie obiektu, a także wywołanie metody, finalizetak długo, jak chce. Co więcej, nie gwarantuje to, że metoda ta w ogóle zostanie wywołana. W wielu sytuacjach w imię „optymalizacji” nie jest to wywoływane.

  7. Jaka jest różnica final, finally, finalize?

    • final- modyfikator
    • Pola nie mogą być zmieniane, metody są nadpisywane
    • Klasy nie mogą być dziedziczone
    • Ten modyfikator dotyczy tylko klas, metod i zmiennych (także zmiennych lokalnych)
    • Argumenty metod oznaczone jako finaltylko do odczytu; próba ich zmiany zakończy się błędem kompilacji.
    • Переменные final не инициализируются по умолчанию, им необходимо явно присвоить oznaczający при объявлении Lub в конструкторе, иначе – ошибка компиляции
    • Если final переменная содержит ссылку на obiekt, obiekt может быть изменен, но переменная всегда будет ссылаться на тот же самый obiekt
    • Также это справедливо и для массивов, потому что массивы являются obiektами, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
    • Если класс объявлен final и abstract (взаимоисключающие понятия), произойдет ошибка компиляции
    • Так Jak final класс не может наследоваться, его методы никогда не могут быть переопределены

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

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

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

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

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

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

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

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

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

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