- Saya akan melewatkan pertanyaan-pertanyaan yang bersinggungan dengan rangkaian artikel ini agar tidak menduplikasi informasi sekali lagi. Saya sarankan membaca materi ini, karena berisi pertanyaan wawancara Java Core yang paling umum (populer).
- Pertanyaan tentang DOU disajikan dalam bahasa Ukraina, tetapi saya akan menjawab semuanya di sini dalam bahasa Rusia.
- Jawabannya bisa dijelaskan lebih detail, tapi saya tidak akan melakukannya, karena jawaban setiap pertanyaan bisa memakan waktu satu artikel utuh. Dan mereka tidak akan menanyakan Anda secara detail pada wawancara mana pun.
11. Sebutkan semua metode kelas Object
Kelas Object memiliki 11 metode:- Class<?> getClass() — mendapatkan kelas dari objek saat ini;
- int hashCode() — mendapatkan kode hash dari objek saat ini;
- boolean sama dengan(Obj objek) - perbandingan objek saat ini dengan objek lain;
- Klon objek() - membuat dan mengembalikan salinan objek saat ini;
- String toString() — mendapatkan representasi string dari suatu objek;
- void notify() - membangkitkan satu thread yang menunggu di monitor objek ini (pemilihan thread dilakukan secara acak);
- void notifyAll() - membangunkan semua thread yang menunggu di monitor objek ini;
- void wait() - mengalihkan thread saat ini ke mode standby (membekukannya) pada monitor saat ini, hanya berfungsi di blok yang disinkronkan hingga beberapa notify atau notifyAll membangunkan thread;
- void wait(long timeout) - juga membekukan thread saat ini pada monitor saat ini (pada monitor yang disinkronkan saat ini), tetapi dengan pengatur waktu untuk keluar dari status ini (atau lagi: hingga notify atau notifyAll bangun);
- void wait(long timeout, int nanos) - metode yang mirip dengan yang dijelaskan di atas, tetapi dengan pengatur waktu yang lebih tepat untuk keluar dari pembekuan;
- void finalize() - sebelum menghapus objek ini, pengumpul sampah memanggil metode ini (akhirnya). Ini digunakan untuk membersihkan sumber daya yang ditempati.
12. Apa perbedaan antara coba-dengan-sumber daya dan coba-tangkap-akhirnya ketika berhadapan dengan sumber daya?
Biasanya, saat menggunakan try-catch-finally, blok terakhir digunakan untuk menutup sumber daya. Java 7 memperkenalkan jenis operator baru try-with-resources , analog dari try-catch-finally untuk membebaskan sumber daya, tetapi lebih ringkas dan mudah dibaca. Mari kita ingat seperti apa bentuk try-catch-finally :String text = "some text......";
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter("someFileName"));
bufferedWriter.write(text);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Sekarang mari kita tulis ulang kode ini, tetapi menggunakan try-with-resources :
String text = "some text......";
try(BufferedWriter bufferedWriter =new BufferedWriter(new FileWriter("someFileName"))) {
bufferedWriter.write(text);
} catch (IOException e) {
e.printStackTrace();
}
Ini menjadi lebih mudah, bukan? Selain penyederhanaan, ada beberapa poin:
-
Dalam try-with-resources , sumber daya yang dideklarasikan dalam tanda kurung (yang akan ditutup) harus mengimplementasikan antarmuka AutoCloseable dan satu-satunya metodenya, close() .
Metode close dieksekusi secara implisit pada akhirnya blok , jika tidak, bagaimana program akan memahami dengan tepat cara menutup sumber daya tertentu?
Namun, kemungkinan besar, Anda jarang akan menulis implementasi sumber daya Anda sendiri dan metode penutupannya.
-
Urutan eksekusi blok:
- coba blokir .
- Akhirnya tersirat .
- Blok tangkapan yang menangkap pengecualian pada langkah sebelumnya.
- Akhirnya eksplisit .
Sebagai aturan, pengecualian yang muncul lebih rendah dalam daftar mengganggu pengecualian yang muncul lebih tinggi.
13. Apa yang dimaksud dengan operasi bitwise?
Operasi bitwise adalah operasi pada string bit yang mencakup operasi logis dan pergeseran bitwise. Operasi logis:-
bitwise AND - membandingkan nilai bit, dan dalam prosesnya, bit apa pun yang disetel ke 0 (salah) menetapkan bit yang sesuai dalam hasil sebagai 0. Artinya, jika dalam kedua nilai yang dibandingkan bitnya adalah 1 (benar), maka hasilnya juga akan menjadi 1.
Dilambangkan sebagai - DAN , &
Contoh: 10111101 & 01100111 = 00100101
-
bitwise OR adalah operasi kebalikan dari operasi sebelumnya. Setiap bit yang disetel ke 1 akan menghasilkan bit yang sama dengan 1. Oleh karena itu, jika bit tersebut adalah 0 pada kedua nilai yang dibandingkan, bit yang dihasilkan juga akan menjadi 0.
Dilambangkan sebagai - ATAU , |
Contoh: 10100101 | 01100011 = 11100111
-
bitwise NOT - diterapkan pada satu nilai, membalik (membalikkan) bit. Artinya, bit-bit yang tadinya 1 akan menjadi 0; dan yang tadinya 0 akan menjadi 1.
Dilambangkan sebagai - BUKAN , ~
Contoh: ~10100101 = 01011010
bitwise eksklusif OR - membandingkan nilai bit, dan jika pada kedua nilai bitnya sama dengan 1, maka hasilnya adalah 0, dan jika pada kedua nilai bitnya 0, maka hasilnya adalah 0. Artinya, agar hasilnya sama dengan 1, hanya satu bit yang harus sama dengan 1, dan bit kedua harus sama dengan 0. Dilambangkan sebagai - XOR , ^
Contoh: 10100101^01100011 = 11000110
- 01100011 >> 4 = 00000110
- 01100011 << 3 = 00011000
14. Kelas standar apa yang tidak dapat diubah yang merupakan objek di Java?
Immutable adalah objek yang tidak mengizinkan parameter aslinya diubah. Ini mungkin memiliki metode yang mengembalikan objek baru dari tipe tertentu, dengan parameter yang ingin Anda ubah. Beberapa objek standar yang tidak dapat diubah:- Sejauh ini objek abadi yang paling terkenal di Java adalah String;
- contoh kelas pembungkus yang membungkus tipe standar: Boolean, Character, Byte, Short, Integer, Long, Double, Float;
- objek yang biasanya digunakan terutama untuk bilangan BESAR - BigInteger dan BigDecimal;
- objek yang merupakan unit dalam stacktrace (misalnya, dalam pengecualian stacktrace) StackTraceElement;
- objek dari kelas File - dapat mengubah file, tetapi pada saat yang sama file itu sendiri tidak dapat diubah;
- UUID - yang sering digunakan sebagai id unik untuk elemen;
- semua objek kelas dari paket java.time;
- Lokal - digunakan untuk menentukan wilayah geografis, politik, atau budaya.
15. Apa kelebihan benda yang tidak dapat diubah dibandingkan benda biasa?
- Objek seperti itu aman bila digunakan dalam lingkungan multi-thread . Dengan menggunakannya, Anda tidak perlu khawatir kehilangan data karena kondisi thread race. Berbeda dengan bekerja dengan objek biasa: dalam hal ini, Anda harus berpikir dengan sangat hati-hati dan menyusun mekanisme untuk menggunakan objek dalam lingkungan paralel.
- Objek yang tidak dapat diubah adalah kunci yang baik dalam peta, karena jika Anda menggunakan objek yang dapat diubah dan kemudian objek tersebut mengubah statusnya, hal ini dapat membingungkan saat menggunakan HashMap: objek tersebut akan tetap ada, dan jika Anda menggunakan berisiKey() mungkin tidak ada ditemukan.
- Objek yang tidak dapat diubah sangat bagus untuk menyimpan data yang tidak dapat diubah (konstan) yang tidak boleh diubah saat program sedang berjalan.
- “Atomisitas menuju kegagalan” - jika objek yang tidak dapat diubah memunculkan pengecualian, objek tersebut tetap tidak akan berada dalam kondisi (rusak) yang tidak diinginkan.
- Kelas-kelas ini mudah untuk diuji.
- Mekanisme tambahan seperti copy konstruktor dan implementasi kloning tidak diperlukan.
Pertanyaan tentang OOP
16. Apa kelebihan OOP secara umum dibandingkan pemrograman prosedural?
Jadi, kelebihan OOP:- Aplikasi yang kompleks lebih mudah untuk ditulis daripada pemrograman prosedural, karena semuanya dipecah menjadi modul-modul kecil - objek yang berinteraksi satu sama lain - dan sebagai hasilnya, pemrograman bermuara pada hubungan antar objek.
- Aplikasi yang ditulis menggunakan OOP jauh lebih mudah untuk dimodifikasi (asalkan konsep desainnya diikuti).
- Karena data dan operasi di dalamnya merupakan satu kesatuan, mereka tidak tersebar ke seluruh aplikasi (yang sering terjadi dengan pemrograman prosedural).
- Enkapsulasi informasi melindungi data paling penting dari pengguna.
- Dimungkinkan untuk menggunakan kembali kode yang sama dengan data yang berbeda, karena kelas memungkinkan Anda membuat banyak objek, yang masing-masing memiliki nilai atributnya sendiri.
- Warisan dan polimorfisme juga memungkinkan Anda menggunakan kembali dan memperluas kode yang ada (daripada menduplikasi fungsi serupa).
- Ekstensibilitas aplikasi lebih mudah dibandingkan dengan pendekatan prosedural.
- Pendekatan OOP memungkinkan untuk mengabstraksikan detail implementasi.
17. Beritahu kami apa saja kekurangan yang ada pada OOP
Sayangnya, mereka juga hadir:- OOP membutuhkan banyak pengetahuan teoritis yang perlu dikuasai sebelum Anda dapat menulis apapun.
- Ide-ide OOP tidak begitu mudah untuk dipahami dan diterapkan dalam praktik (Anda harus berjiwa filsuf).
- Saat menggunakan OOP, kinerja perangkat lunak sedikit berkurang karena organisasi sistem yang lebih kompleks.
- Pendekatan OOP memerlukan lebih banyak memori, karena semuanya terdiri dari kelas, antarmuka, metode, yang memakan lebih banyak memori daripada variabel biasa.
- Waktu yang diperlukan untuk analisis awal lebih besar dibandingkan analisis prosedural.
18. Apa yang dimaksud dengan polimorfisme statis dan dinamis
Polimorfisme memungkinkan objek berperilaku berbeda untuk kelas atau antarmuka yang sama. Ada dua jenis polimorfisme, yang juga dikenal sebagai pengikatan awal dan pengikatan akhir . Polimorfisme statis, atau pengikatan sebelumnya:- terjadi pada waktu kompilasi (di awal siklus hidup program);
- memutuskan metode mana yang akan dieksekusi pada waktu kompilasi;
- Metode kelebihan beban adalah contoh polimorfisme statis;
- pengikatan awal mencakup metode privat, statis, dan terminal;
- pewarisan tidak terlibat dalam pengikatan awal;
- Polimorfisme statis tidak melibatkan objek tertentu, tetapi informasi tentang kelas, yang tipenya direpresentasikan di sebelah kiri nama variabel.
- terjadi saat runtime (saat program sedang berjalan);
- polimorfisme dinamis menentukan implementasi spesifik apa yang akan dimiliki suatu metode pada saat runtime;
- penggantian metode adalah contoh polimorfisme dinamis;
- pengikatan akhir adalah penetapan objek tertentu, referensi tipenya, atau superkelasnya;
- pewarisan dikaitkan dengan polimorfisme dinamis.
GO TO FULL VERSION