JavaRush /Java Blog /Random-ID /Level 21. Jawaban pertanyaan wawancara pada topik level
zor07
Level 31
Санкт-Петербург

Level 21. Jawaban pertanyaan wawancara pada topik level

Dipublikasikan di grup Random-ID
Level 21. Jawaban pertanyaan wawancara tentang topik level - 1
  1. Daftar metode kelasObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equalsMengapa & metode diperlukan hashCode?

    Digunakan untuk membandingkan objek.

    Tujuan dari metode ini equalsadalah untuk menentukan apakah objek-objek tersebut identik secara internal dengan membandingkan isi internal objek-objek tersebut. Ini equalsbekerja lambat, pertama-tama kode hash dari objek dibandingkan, dan jika kode hash sama, pemeriksaan dilakukanequals

  3. Apa yang terjadi jika Anda mengganti yang sama tetapi tidak menggantinya hashCode?

    Awalnya hashCode, nomor acak.

    equalsKoleksi di Java selalu mencari/membandingkannya menggunakan metode sebelum membandingkan objek menggunakan hashCode(). Dan jika objek yang identik memiliki objek yang berbeda hashCode, maka objek tersebut akan dianggap berbeda - tidak mungkin membandingkannya dengan menggunakan objek tersebut equals.

  4. Mengapa metodenya wait, notify, notifyAll?

    Kadang-kadang dalam suatu program mungkin ada situasi di mana utas telah memasukkan blok kode synchronized, memblokir monitor dan tidak dapat bekerja lebih jauh, karena beberapa data masih hilang: misalnya file yang seharusnya diproses belum dimuat atau semacamnya. Sebuah metode diciptakan untuk memecahkan masalah ini wait(). Memanggil metode ini menyebabkan thread melepaskan monitor dan "jeda".

    Untuk membatalkan jeda, metode digunakan notify. notifyAllMetode ini notify“mencairkan” satu thread acak, metode ini notifyAll– semua thread “membekukan” monitor tertentu.

  5. Bagaimana cara mengkloning suatu objek dengan benar?

    Dua jenis kloning.

    Untuk mengkloning objek default:

    • Tambahkan antarmuka Cloneableke kelas Anda
    • Ganti metode clonedan panggil implementasi dasar di dalamnya:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    cloneAtau Anda dapat menulis sendiri penerapan metode ini :

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. Mengapa metode tersebut diperlukan finalize()dan bagaimana cara kerjanya?

    Jika Anda ingat, ini finalize()adalah metode khusus yang dipanggil pada suatu objek sebelum pengumpul sampah menghancurkannya.

    Tujuan utama dari metode ini adalah untuk melepaskan sumber daya eksternal non-Java yang terpakai: menutup file, aliran I/O, dll.

    finalize()bekerja tidak stabil.

    Metode ini tidak memenuhi harapan yang diberikan. Mesin Java dapat menunda penghancuran suatu objek, serta pemanggilan suatu metode, finalizeselama yang diinginkan. Selain itu, tidak ada jaminan bahwa metode ini akan dipanggil sama sekali. Dalam banyak situasi, demi “optimasi” hal ini tidak disebut.

  7. Apa bedanya final, finally, finalize?

    • final- pengubah
    • Bidang tidak dapat diubah, metode akan diganti
    • Kelas tidak dapat diwariskan
    • Pengubah ini hanya berlaku untuk kelas, metode dan variabel (juga variabel lokal)
    • Argumen metode yang ditandai sebagai finalhanya dapat dibaca; mencoba mengubahnya akan mengakibatkan kesalahan kompilasi.
    • Переменные final не инициализируются по умолчанию, им необходимо явно присвоить meaning при объявлении or в конструкторе, иначе – ошибка компиляции
    • Если final переменная содержит ссылку на an object, an object может быть изменен, но переменная всегда будет ссылаться на тот же самый an object
    • Также это справедливо и для массивов, потому что массивы являются an objectми, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
    • Если класс объявлен final и abstract (взаимоисключающие понятия), произойдет ошибка компиляции
    • Так How final класс не может наследоваться, его методы никогда не могут быть переопределены

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

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

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

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

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

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

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

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

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

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