- Saya akan melewatkan pertanyaan-pertanyaan yang tumpang tindih dengan rangkaian artikel ini agar tidak menggandakan informasi yang tidak perlu. Saya sarankan membaca artikel ini karena mencakup pertanyaan wawancara Java Core yang paling umum (populer).
- Saya dapat menjelaskan jawabannya secara lebih rinci, tetapi saya tidak akan melakukannya, karena setiap jawaban dapat berlarut-larut di seluruh artikel. Dan tidak ada seorang pun yang akan menanyakan tingkat detail seperti itu kepada Anda dalam wawancara kerja mana pun.
11. Sebutkan semua metode kelas Object
Kelas Object memiliki 11 metode:-
Class<?> getClass() — mendapatkan kelas objek saat ini;
-
int hashCode() — dapatkan kode hash dari objek saat ini;
-
boolean sama dengan(Object obj) — membandingkan objek saat ini dengan objek lain;
-
Object clone() — membuat dan mengembalikan salinan objek saat ini;
-
String toString() — mendapatkan representasi string dari objek;
-
void notify() — membangunkan satu thread yang menunggu di monitor objek ini (pilihan thread acak);
-
void notifyAll() — membangunkan semua thread yang menunggu di monitor objek ini;
-
void wait() — membuat thread saat ini menunggu di monitor saat ini (membekukan thread saat ini) hingga panggilan notify atau notifyAll membangunkan thread (hanya berfungsi di blok yang disinkronkan);
-
void wait(long timeout) — membuat thread saat ini menunggu di monitor saat ini (pada blok tersinkronisasi saat ini), tetapi dengan batas waktu untuk keluar dari status menunggu (atau sekali lagi, hingga panggilan notify atau notifyAll membangunkan thread);
-
void wait(long timeout, int nanos) — cara ini sama seperti cara sebelumnya, namun dengan batas waktu yang lebih tepat;
-
void finalize() — metode ini dipanggil (akhirnya) sebelum objek dipindahkan oleh pengumpul sampah. Ini digunakan untuk membersihkan sumber daya yang diperoleh.
12. Apa perbedaan antara coba-dengan-sumber daya dan coba-tangkap-akhirnya ketika bekerja dengan sumber daya?
Biasanya, saat menggunakan try-catch-finally , blok terakhir digunakan untuk menutup sumber daya. Java 7 memperkenalkan pernyataan coba-dengan-sumber daya yang baru . Hal ini analog dengan try-catch-finally untuk membebaskan sumber daya, namun 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();
}
Nah, itu lebih sederhana, bukan? Selain kode yang lebih sederhana, ada beberapa hal lain yang perlu diperhatikan:
-
Dalam try-with-resources , sumber daya yang dinyatakan dalam tanda kurung (sumber daya yang akan ditutup) harus mengimplementasikan antarmuka AutoCloseable dan satu-satunya metode close() .
Metode close dieksekusi secara implisit pada akhirnya blok , jika tidak, bagaimana program mengetahui cara menutup sumber daya?
Namun Anda mungkin jarang menulis implementasi sumber daya Anda sendiri dan metode penutupannya.
-
Blok dieksekusi dalam urutan ini:
- Blok percobaan .
- Yang implisit akhirnya diblokir.
- Blok catch , yang menangkap pengecualian yang terjadi pada langkah sebelumnya.
- Yang eksplisit akhirnya diblokir.
Sebagai aturan, pengecualian yang ditempatkan lebih rendah dalam daftar mengganggu pengecualian yang ditempatkan lebih tinggi.
13. Apa yang dimaksud dengan operasi bitwise?
Operasi bitwise adalah operasi pada urutan bit. Ini mencakup operasi logis dan pergeseran bitwise. Operator logika:-
bitwise AND — Membandingkan nilai bit. Setiap bit yang disetel ke 0 (salah) akan menyetel bit terkait pada hasil menjadi 0. Artinya, jika sebuah bit bernilai 1 (benar) pada kedua nilai yang dibandingkan, maka bit yang dihasilkan juga akan bernilai 1.
Dilambangkan sebagai DAN atau &
Contoh: 10111101 & 01100111 = 00100101
-
bitwise OR — Operasi ini kebalikan dari operasi sebelumnya. Setiap bit yang disetel ke 1 akan menyetel bit yang sesuai dalam hasil menjadi 1. Oleh karena itu, jika bit tersebut adalah 0 pada kedua nilai yang dibandingkan, maka bit yang dihasilkan juga akan menjadi 0.
Dilambangkan sebagai ATAU atau |
Contoh: 10100101 | 01100011 = 11100111
-
bitwise NOT — Operator ini diterapkan pada satu nilai. Ini membalik (membalikkan) bit-bitnya. Artinya, bit yang tadinya 1 menjadi 0; dan yang tadinya 0 menjadi 1.
Dilambangkan sebagai TIDAK atau ~
Contoh: ~10100101 = 01011010
-
bitwise eksklusif OR — Membandingkan nilai bit. Jika kedua bit adalah 1, maka bit yang dihasilkan adalah 0. Jika kedua bit adalah 0, maka bit yang dihasilkan adalah 0. Dengan kata lain, agar bit yang dihasilkan menjadi 1, salah satu bitnya harus 1, dan bit lainnya harus 0.
Dilambangkan sebagai XOR atau ^
Contoh: 10100101^01100011 = 11000110
- 01100011 >> 4 = 00000110
- 01100011 << 3 = 00011000
14. Objek standar apa yang tidak dapat diubah yang ada di Java?
Suatu objek tidak dapat diubah jika tidak mengizinkan nilai aslinya berubah. Ini mungkin memiliki metode yang mengembalikan objek baru dengan tipe yang sama dengan nilai berbeda. Beberapa objek standar yang tidak dapat diubah meliputi:- tidak diragukan lagi, tipe kekal Java yang paling terkenal adalah String;
- contoh kelas pembungkus yang membungkus tipe standar: Boolean, Character, Byte, Short, Integer, Long, Double, Float;
- Objek BigInteger dan BigDecimal, yang biasanya digunakan terutama untuk bilangan BESAR;
- Objek StackTraceElement yang membentuk jejak tumpukan (misalnya, jejak tumpukan pengecualian);
- sebuah objek dari kelas File — ia dapat memodifikasi file, tetapi pada saat yang sama objek itu sendiri tetap tidak berubah;
- UUID, yang sering digunakan untuk mengidentifikasi elemen secara unik;
- semua objek kelas dalam paket java.time;
- Objek lokal, yang digunakan untuk mengidentifikasi wilayah geografis, politik, atau budaya.
15. Apa kelebihan benda yang tidak dapat diubah dibandingkan benda biasa?
-
Objek yang tidak dapat diubah aman digunakan dalam lingkungan multithread . Mereka membuatnya agar Anda tidak perlu khawatir kehilangan data karena kondisi balapan. Ini berbeda dibandingkan saat Anda bekerja dengan objek biasa. Dalam hal ini, Anda harus memikirkan dan menemukan mekanisme yang baik saat menggunakan objek dalam lingkungan paralel.
-
Objek yang tidak dapat diubah dapat digunakan sebagai kunci dalam peta. Jika Anda menggunakan objek yang bisa diubah sebagai kunci HashMap dan kemudian status objek berubah, maka struktur datanya bisa menjadi kacau: objek akan tetap ada, namun jika Anda menggunakan berisiKey(), Anda mungkin tidak menemukannya.
-
Objek yang tidak dapat diubah sangat bagus untuk menyimpan data yang tidak dapat diubah (konstan) yang tidak boleh diubah saat program sedang berjalan.
-
Keuntungan lainnya adalah kegagalan atomisitas. Jika objek yang tidak dapat diubah memunculkan pengecualian, objek tersebut tidak akan dibiarkan dalam keadaan yang tidak diinginkan (rusak).
-
Kelas-kelas ini mudah untuk diuji.
-
Anda tidak memerlukan mekanisme tambahan seperti konstruktor salinan atau implementasi kloning objek.
Pertanyaan tentang OOP
16. Apa kelebihan OOP secara umum dan dibandingkan dengan pemrograman prosedural?
Oke, kelebihan OOP:-
Aplikasi yang kompleks lebih mudah untuk ditulis menggunakan OOP daripada pemrograman prosedural karena semuanya dipecah menjadi modul-modul kecil — objek yang berinteraksi satu sama lain — dan sebagai hasilnya, pemrograman direduksi menjadi hubungan antar objek.
-
Aplikasi yang ditulis dengan OOP jauh lebih mudah untuk dimodifikasi (bila prinsip desain dipatuhi dengan benar).
-
Karena data dan operasi data membentuk satu kesatuan, keduanya tidak tersebar di seluruh aplikasi (yang sering terjadi dalam pemrograman prosedural).
-
Prinsip enkapsulasi melindungi data paling penting dari pengguna.
-
Kode yang sama dapat digunakan kembali dengan data yang berbeda karena kelas memungkinkan Anda membuat banyak objek, masing-masing dengan nilainya sendiri.
-
Warisan dan polimorfisme juga memungkinkan Anda menggunakan kembali dan memperluas kode yang ada (daripada menduplikasi fungsi serupa).
-
Memperluas aplikasi lebih sederhana dibandingkan dengan pendekatan prosedural.
-
Pendekatan OOP memungkinkan untuk mengabstraksikan detail implementasi.
17. Beritahu kami apa saja kekurangan yang dimiliki OOP
Sayangnya, mereka juga ada:-
OOP membutuhkan banyak pengetahuan teoritis yang harus dikuasai sebelum Anda bisa menulis apapun.
-
Ide-ide OOP tidak begitu mudah untuk dipahami dan diterapkan dalam praktik (Anda harus berjiwa filsuf).
-
OOP sedikit mengurangi kinerja program karena meningkatnya kompleksitas sistem.
-
Pendekatan OOP memerlukan lebih banyak memori karena semuanya terdiri dari kelas, antarmuka, metode, yang memakan lebih banyak memori daripada variabel biasa.
-
Waktu yang dibutuhkan untuk analisis awal lebih besar dibandingkan dengan pendekatan prosedural.
18. Apa yang dimaksud dengan polimorfisme statis versus polimorfisme dinamis?
Polimorfisme memungkinkan objek dari kelas atau antarmuka yang sama berperilaku berbeda. Ada dua jenis polimorfisme, yang juga dikenal sebagai pengikatan awal dan pengikatan akhir. Polimorfisme statis, atau pengikatan awal:- 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 final;
- pewarisan tidak terlibat dalam pengikatan awal;
- polimorfisme statis tidak melibatkan objek tertentu, melainkan informasi tentang tipe kelas yang muncul di sebelah kiri nama variabel.
- terjadi saat runtime (saat program sedang berjalan);
- polimorfisme dinamis menentukan implementasi spesifik mana yang akan dimiliki suatu metode saat runtime;
- penggantian metode adalah contoh polimorfisme dinamis;
- pengikatan terlambat berarti menugaskan objek tertentu, referensi tipenya, atau superkelasnya;
- pewarisan dikaitkan dengan polimorfisme dinamis.
GO TO FULL VERSION