- Saya akan melangkau soalan yang bersilang dengan siri artikel ini supaya tidak menduplikasi maklumat sekali lagi. Saya mengesyorkan membaca bahan-bahan ini, kerana ia mengandungi soalan wawancara Teras Java yang paling biasa (popular).
- Soalan mengenai DOU dibentangkan dalam bahasa Ukraine, tetapi saya akan mempunyai segala-galanya di sini dalam bahasa Rusia.
- Jawapannya boleh diterangkan dengan lebih terperinci, tetapi saya tidak akan melakukannya, sejak itu jawapan kepada setiap soalan boleh mengambil keseluruhan artikel. Dan mereka tidak akan bertanya kepada anda secara terperinci pada sebarang temu duga.
11. Namakan semua kaedah kelas Objek
Kelas Objek mempunyai 11 kaedah:- Class<?> getClass() — mendapatkan kelas objek semasa;
- int hashCode() — mendapatkan kod cincang objek semasa;
- boolean equals(Object obj) - perbandingan objek semasa dengan yang lain;
- Klon objek() - mencipta dan memulangkan salinan objek semasa;
- String toString() — mendapatkan perwakilan rentetan objek;
- void notify() — membangkitkan satu utas menunggu pada monitor objek ini (pemilihan benang adalah rawak);
- void notifyAll() - membangkitkan semua benang yang menunggu pada monitor objek ini;
- void wait() - menukarkan benang semasa kepada mod siap sedia (membekukannya) pada monitor semasa, berfungsi hanya dalam blok yang disegerakkan sehingga sesetengah memberitahu atau memberitahuSemua membangkitkan benang;
- void wait(long timeout) - juga membekukan benang semasa pada monitor semasa (pada semasa disegerakkan), tetapi dengan pemasa untuk keluar dari keadaan ini (atau sekali lagi: sehingga memberitahu atau memberitahuSemua bangun);
- void wait(long timeout, int nanos) - kaedah yang serupa dengan yang diterangkan di atas, tetapi dengan pemasa yang lebih tepat untuk keluar dari pembekuan;
- void finalize() - sebelum memadamkan objek ini, pengumpul sampah memanggil kaedah ini (akhirnya). Ia digunakan untuk membersihkan sumber yang diduduki.
12. Apakah perbezaan antara cuba-dengan-sumber dan cuba-tangkap-akhirnya apabila berurusan dengan sumber?
Biasanya, apabila menggunakan try-catch-finally, blok terakhir digunakan untuk menutup sumber. Java 7 memperkenalkan jenis pengendali try-with-resources baharu , analog try-catch-finally untuk membebaskan sumber, tetapi lebih padat dan boleh dibaca. Mari kita ingat rupa 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 semula kod 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();
}
Ia entah bagaimana menjadi lebih mudah, bukankah anda fikir? Sebagai tambahan kepada penyederhanaan, terdapat beberapa perkara:
-
Dalam try-with-resources , sumber yang diisytiharkan dalam kurungan (yang akan ditutup) mesti melaksanakan antara muka AutoCloseable dan satu-satunya kaedahnya, close() .
Kaedah tutup dilaksanakan dalam implisit finally block , jika tidak, bagaimanakah program akan memahami dengan tepat cara menutup sumber yang diberikan?
Tetapi, kemungkinan besar, anda jarang akan menulis pelaksanaan sumber anda sendiri dan kaedah penutupannya.
-
Urutan pelaksanaan blok:
- cuba blok .
- Tersirat akhirnya .
- Blok tangkapan yang menangkap pengecualian dalam langkah sebelumnya.
- Eksplisit akhirnya .
Sebagai peraturan, pengecualian yang kelihatan lebih rendah dalam senarai mengganggu pengecualian yang kelihatan lebih tinggi.
13. Apakah operasi bitwise?
Operasi bitwise ialah operasi pada rentetan bit yang merangkumi operasi logik dan anjakan bitwise. Operasi logik:-
bitwise DAN - membandingkan nilai bit, dan dalam proses, mana-mana bit yang ditetapkan kepada 0 (palsu) menetapkan bit yang sepadan dalam hasilnya sebagai 0. Iaitu, jika dalam kedua-dua nilai yang dibandingkan bit adalah 1 (benar), keputusan juga akan menjadi 1.
Ditandakan sebagai - DAN , &
Contoh: 10111101 & 01100111 = 00100101
-
bitwise ATAU ialah operasi songsang yang sebelumnya. Mana-mana bit yang ditetapkan kepada 1 menetapkan bit yang serupa dalam keputusan sebagai 1. Dan dengan itu, jika bit itu adalah 0 dalam kedua-dua nilai yang dibandingkan, bit yang terhasil juga akan menjadi 0.
Ditandakan sebagai - ATAU , |
Contoh: 10100101 | 01100011 = 11100111
-
bitwise NOT - digunakan pada satu nilai, membalikkan (menyongsangkan) bit. Iaitu, bit yang 1 akan menjadi 0; dan yang 0 akan menjadi 1.
Ditandakan sebagai - NOT , ~
Contoh: ~10100101 = 01011010
bitwise exclusive ATAU - membandingkan nilai bit, dan jika dalam kedua-dua nilai bit adalah sama dengan 1, maka hasilnya akan menjadi 0, dan jika dalam kedua-dua nilai bit adalah 0, hasilnya akan menjadi 0. Iaitu, untuk hasilnya sama dengan 1, hanya satu daripada bit mesti sama dengan 1, dan yang kedua adalah sama dengan 0. Ditandakan sebagai - XOR , ^
Contoh: 10100101 ^ 01100011 = 11000110
- 01100011 >> 4 = 00000110
- 01100011 << 3 = 00011000
14. Apakah kelas tidak berubah standard yang merupakan objek dalam Java?
Tidak boleh ubah ialah objek yang tidak membenarkan parameter asalnya ditukar. Ia mungkin mempunyai kaedah yang mengembalikan objek baharu bagi jenis tertentu, dengan parameter yang anda mahu ubah. Beberapa objek tidak berubah standard:- Setakat ini objek tidak berubah yang paling terkenal di Jawa ialah String;
- contoh kelas pembalut yang membalut jenis standard: Boolean, Character, Byte, Short, Integer, Long, Double, Float;
- objek yang biasanya digunakan untuk nombor BESAR terutamanya - BigInteger dan BigDecimal;
- objek yang merupakan unit dalam surih tindanan (contohnya, dalam surih tindanan pengecualian) StackTraceElement;
- objek kelas Fail - boleh menukar fail, tetapi pada masa yang sama ia sendiri tidak boleh diubah;
- UUID - yang sering digunakan sebagai id unik untuk elemen;
- semua objek kelas pakej java.time;
- Tempatan - digunakan untuk menentukan wilayah geografi, politik atau budaya.
15. Apakah kelebihan objek tidak berubah berbanding objek biasa?
- Objek sedemikian selamat apabila digunakan dalam persekitaran berbilang benang . Dengan menggunakannya, anda tidak perlu risau tentang kehilangan data disebabkan keadaan perlumbaan benang. Tidak seperti bekerja dengan objek biasa: dalam kes ini, anda perlu berfikir dengan teliti dan menyusun mekanisme untuk menggunakan objek dalam persekitaran selari.
- Objek tidak boleh ubah ialah kunci yang baik dalam peta, kerana jika anda menggunakan objek boleh ubah dan kemudian objek menukar keadaannya, ia boleh menjadi mengelirukan apabila menggunakan HashMap: objek masih akan ada, dan jika anda menggunakan containsKey() ia mungkin tidak dijumpai.
- Objek tidak berubah sangat bagus untuk menyimpan data tidak berubah (malar) yang tidak boleh diubah semasa program berjalan.
- "Atomicity to failure" - jika objek tidak berubah melemparkan pengecualian, ia masih tidak akan kekal dalam keadaan yang tidak diingini (pecah).
- Kelas-kelas ini mudah untuk diuji.
- Mekanisme tambahan seperti pembina salinan dan pelaksanaan klon tidak diperlukan.
Soalan tentang OOP
16. Apakah kelebihan OOP secara umum dan berbanding dengan pengaturcaraan prosedur?
Jadi, kelebihan OOP:- Aplikasi yang kompleks lebih mudah untuk ditulis daripada pengaturcaraan prosedur, kerana semuanya dipecahkan kepada modul kecil - objek yang berinteraksi antara satu sama lain - dan akibatnya, pengaturcaraan turun kepada hubungan antara objek.
- Aplikasi yang ditulis menggunakan OOP adalah lebih mudah untuk diubah suai (selagi konsep reka bentuk diikuti).
- Memandangkan data dan operasi di atasnya membentuk satu entiti, ia tidak disapu sepanjang aplikasi (yang sering berlaku dengan pengaturcaraan prosedur).
- Enkapsulasi maklumat melindungi data paling kritikal daripada pengguna.
- Anda boleh menggunakan semula kod yang sama dengan data yang berbeza, kerana kelas membolehkan anda mencipta banyak objek, yang setiap satunya mempunyai nilai atributnya sendiri.
- Warisan dan polimorfisme juga membolehkan anda menggunakan semula dan melanjutkan kod sedia ada (bukannya menduplikasi fungsi serupa).
- Kebolehlanjutan aplikasi yang lebih mudah berbanding dengan pendekatan prosedur.
- Pendekatan OOP memungkinkan untuk abstrak daripada butiran pelaksanaan.
17. Beritahu kami apakah kekurangan yang terdapat dalam OOP
Malangnya, mereka juga hadir:- OOP memerlukan banyak pengetahuan teori yang perlu dikuasai sebelum anda boleh menulis apa-apa.
- Idea OOP tidak begitu mudah untuk difahami dan diaplikasikan dalam amalan (anda perlu menjadi seorang ahli falsafah di hati).
- Apabila menggunakan OOP, prestasi perisian berkurangan sedikit disebabkan oleh organisasi sistem yang lebih kompleks.
- Pendekatan OOP memerlukan lebih banyak memori, kerana semuanya terdiri daripada kelas, antara muka, kaedah, yang mengambil lebih banyak memori daripada pembolehubah biasa.
- Masa yang diperlukan untuk analisis awal adalah lebih besar daripada analisis prosedur.
18. Apakah itu polimorfisme statik dan dinamik
Polimorfisme membenarkan objek berkelakuan berbeza untuk kelas atau antara muka yang sama. Terdapat dua jenis polimorfisme, juga dikenali sebagai pengikatan awal dan lewat . Polimorfisme statik, atau pengikatan lebih awal:- berlaku pada masa penyusunan (awal kitaran hayat program);
- memutuskan kaedah mana yang hendak dilaksanakan pada masa penyusunan;
- Kaedah terlebih beban ialah contoh polimorfisme statik;
- pengikatan awal termasuk kaedah persendirian, statik dan terminal;
- pewarisan tidak terlibat dalam pengikatan awal;
- Polimorfisme statik tidak melibatkan objek tertentu, tetapi maklumat tentang kelas, jenis yang diwakili di sebelah kiri nama pembolehubah.
- berlaku semasa runtime (semasa program sedang berjalan);
- polimorfisme dinamik menentukan pelaksanaan khusus kaedah yang akan ada pada masa jalan;
- kaedah mengatasi adalah contoh polimorfisme dinamik;
- pengikatan lewat ialah penetapan objek tertentu, rujukan jenisnya, atau superclassnya;
- pewarisan dikaitkan dengan polimorfisme dinamik.
GO TO FULL VERSION