CodeGym /Blog Jawa /Acak /Njelajah pitakonan lan jawaban saka wawancara proyek kang...
John Squirrels
tingkat
San Francisco

Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa. Bagean 2

Diterbitake ing grup
Hello maneh, everyone! Kita terus nggoleki jawaban kanggo pitakonan kanggo pangembang Jawa SMP, menengah lan senior. Pitakonan kasebut super menarik. Aku wong seneng nganalisa wong-wong mau, amarga mbantu aku nemokake kesenjangan ing kawruh teori, lan ing panggonan paling ora dikarepke kadhangkala. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 2 - 1Bagean sadurunge bisa ditemokake ing artikel iki . Nanging sadurunge kita miwiti, aku pengin ngelingake sampeyan:
  1. Aku bakal ngliwati pitakonan sing tumpang tindih karo seri artikel iki supaya ora nggawe duplikat informasi sing ora perlu. Aku nyaranake maca artikel iki amarga padha nutupi pitakonan wawancara Java Core sing paling umum (populer).
  2. Aku bisa njlèntrèhaké jawaban kanthi luwih rinci, nanging ora, amarga saben jawaban bisa nyeret kanggo kabeh artikel. Lan ora ana sing bakal njaluk sampeyan tingkat rinci ing wawancara kerja apa wae.
Aku bakal ninggalake link kanggo sinau luwih jero yen sampeyan pengin. Ayo mabur!

11. Sebutake kabeh metode kelas Obyek

Kelas Object duwe 11 metode:
  1. Class<?> getClass() — njaluk kelas saka obyek saiki;

  2. int hashCode () - njaluk kode hash saka obyek saiki;

  3. boolean equals(Object obj) - mbandhingake obyek saiki karo obyek liyane;

  4. Klone obyek () - nggawe lan bali salinan obyek saiki;

  5. String toString () - entuk perwakilan string saka obyek;

  6. void notify () - tangi siji thread nunggu ing monitor obyek iki (pilihan thread punika acak);

  7. void notifyAll () - tangi kabeh thread nunggu ing monitor obyek iki;

  8. void wait () - nggawe thread saiki ngenteni ing monitor saiki (freeze thread saiki) nganti notifikasi utawa notifyAll telpon wakes munggah thread (mung dianggo ing pemblokiran diselarasake);

  9. void wait(long timeout) - nggawe thread saiki ngenteni ing monitor saiki (ing blok sinkronisasi saiki), nanging karo wektu entek kanggo metu saka negara nunggu (utawa maneh, nganti notifikasi utawa notifyAll telpon wakes munggah thread);

  10. void wait(long timeout, int nanos) - cara iki kaya cara sadurunge, nanging kanthi wektu entek sing luwih tepat;

  11. void finalize () - cara iki disebut (pungkasan) sadurunge obyek dibusak dening uwuh. Iki digunakake kanggo ngresiki sumber daya sing dipikolehi.

Kanggo nggunakake hashCode , equals , clone , toString , lan finalize metode kanthi bener, kudu diganti miturut spesifik tugas saiki.

12. Apa bedane nyoba-kanggo-sumber daya lan nyoba-nyekel-akhire nalika nggarap sumber daya?

Biasane, nalika nggunakake try-catch-finally , blok pungkasan digunakake kanggo nutup sumber daya. Java 7 ngenalake statement try-with-resources anyar . Iku analog kanggo nyoba-nyekel-pungkasane kanggo mbebasake sumber daya, nanging luwih kompak lan bisa diwaca. Ayo kelingan kaya apa coba-nyekel-akhire :
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();
   }
}
Saiki ayo nulis maneh kode iki, nanging nggunakake try-with-resources :
String text = "some text......";
try(BufferedWriter bufferedWriter =new BufferedWriter(new FileWriter("someFileName"))) {
   bufferedWriter.write(text);
} catch (IOException e) {
   e.printStackTrace();
}
Saiki sing luwih prasaja, apa ora? Saliyane kode sing luwih prasaja, ana sawetara poin liyane sing kudu dicathet:
  1. Ing try-with-resources , sumber daya sing diumumake ing kurung (sumber daya sing bakal ditutup) kudu ngleksanakake antarmuka AutoCloseable lan cara cedhak () tunggal .

    Cara cedhak dieksekusi ing blok pungkasan sing implisit , yen ora, kepiye program bakal nemtokake cara nutup sumber daya?

    Nanging sampeyan bisa uga arang nulis implementasine sumber daya dhewe lan cara nutup.

  2. Blok dieksekusi kanthi urutan iki:

    1. Blok nyoba .
    2. Sing implisit pungkasane diblokir.
    3. Blok nyekel , sing nyekel pangecualian sing kedadeyan ing langkah sadurunge.
    4. Eksplisit pungkasane diblokir.

    Minangka aturan, pangecualian sing dibuwang ing ngisor dhaptar ngganggu sing dibuwang luwih dhuwur.

Bayangake yen sampeyan nggunakake try-catch-finally lan sampeyan entuk pangecualian ing blok try . Banjur pemblokiran nyekel sing ditemtokake langsung wiwit nglakokaké, kang kita wis ditulis istiméwa liyane (contone, karo pesen sing njlèntrèhaké kesalahan ing luwih rinci), lan sampeyan pengin cara uncalan pangecualian iki munggah. Banjur blok pungkasan dieksekusi, lan pangecualian uga dibuwang. Nanging wektu iki beda. Kang saka loro istiméwa iki cara iki wekasanipun uncalan? Pangecualian sing dibuwang dening blok pungkasan ! Nanging saiki kita wis teka menyang titik liyane babagan nyoba-karo-sumber daya . Ayo dipikirake carane nyoba-karo-sumber daya tumindak ing kahanan sing padha. We njaluk pangecualian ing nyoba pemblokiran nalika nyoba kanggo nutup sumber daya ing cedhak () cara, IE ing implisit pungkasan pemblokiran. Kang saka pangecualian iki bakal nyekel pamblokiran nyekel ? Sing dibuwang dening blok try ! Pangecualian saka pemblokiran pungkasan implisit (saka cara ilang () bakal digatèkaké. Iki nglirwakake pangecualian uga disebut pangecualian suppression.

13. Apa operasi bitwise?

Operasi bitwise yaiku operasi ing urutan bit. Iki kalebu operasi logis lan owah-owahan bitwise. Operator logika:
  • bitwise AND - Mbandhingake nilai bit. Sembarang bit disetel menyang 0 (palsu) nyetel bit sing cocog ing asil dadi 0. Yaiku, yen bit 1 (bener) ing loro nilai sing dibandhingake, mula bit sing diasilake uga bakal dadi 1.

    Ditandani minangka AND utawa &

    Tuladha: 10111101 & 01100111 = 00100101

  • bitwise UTAWA - Operasi iki ngelawan saka sing sadurunge. Sembarang bit disetel menyang 1 nyetel bit sing cocog ing asil kanggo 1. Mulane, yen bit 0 ing loro nilai dibandhingake, banjur bit asil uga bakal 0.

    Ditandani minangka UTAWA utawa |

    Tuladha: 10100101 | 01100011 = 11100111

  • bitwise NOT - Operator iki ditrapake kanggo nilai siji. Iku flips (inverts) bit. Sing, bit sing 1 dadi 0; lan sing 0 dadi 1.

    Ditandani minangka NOT utawa ~

    Tuladha: ~10100101 = 01011010

  • bitwise eksklusif UTAWA - Mbandhingake nilai bit. Yen loro bit 1, banjur bit asil 0. Yen loro bit 0, banjur bit asil 0. Ing tembung liyane, supaya bit asil dadi 1, mung siji bit kudu 1, lan bit liyane kudu 0.

    Ditandani minangka XOR utawa ^

    Tuladha: 10100101 ^ 01100011 = 11000110

Bitwise shifts ( >> lan << ) nggeser bit operand menyang arah sing ditemtokake, kanthi jumlah panggonan sing ditemtokake. Posisi kosong diisi karo nol. Tuladhane:
  1. 01100011 >> 4 = 00000110
  2. 01100011 << 3 = 00011000
Pangecualian yaiku nalika sampeyan mindhah angka negatif menyang tengen. Nalika sampeyan bakal kelingan, bit pisanan saka nomer mlebu nuduhake tandha. Yen bit iki 1, banjur nomer negatif. Yen sampeyan ngalih nomer negatif, posisi kosong ora kapenuhan nul, nanging karo siji, amarga bit tandha kudu wadi. Contone: 10100010 >> 2 = 11101000 Yen ngandika, Jawa duwe tambahan unsigned operator shift tengen (>>>). Operator iki mirip karo >>, nanging nalika dipindhah, posisi kosong diisi 0, preduli saka operan kasebut minangka nomer negatif utawa nomer positif. Contone: 10100010 >>> 2 = 00101000 Waca liyane babagan operasi bitwise kene . Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 2 - 2Sampeyan bisa njupuk cara hash () ing HashMaps minangka conto owah-owahan bitwise ing Jawa. Cara iki digunakake kanggo nemtokake hashcode internal khusus tombol: Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 2 - 3Cara iki ngidini sampeyan nyebarake data kanthi rata ing HashMap, supaya bisa nyuda jumlah tabrakan.

14. Benda baku apa wae kang ana ing basa Jawa?

Objek ora bisa diganti yen ora ngidini nilai asline diganti. Bisa uga ana cara sing ngasilake obyek anyar saka jinis sing padha kanthi nilai sing beda. Sawetara obyek sing ora bisa diganti standar kalebu:
  • temtu, jinis immutable paling misuwur Jawa iku String;
  • conto kelas pambungkus sing mbungkus jinis standar: Boolean, Karakter, Byte, Short, Integer, Long, Double, Float;
  • obyek BigInteger lan BigDecimal, kang biasane digunakake kanggo nomer utamané BIG;
  • obyek StackTraceElement sing nggawe tilak tumpukan (contone, tilak tumpukan saka pangecualian);
  • obyek saka kelas File - bisa ngowahi file, nanging ing wektu sing padha obyek kasebut tetep ora owah;
  • UUID, sing asring digunakake kanggo ngenali unsur kanthi unik;
  • kabeh obyek saka kelas ing paket java.time;
  • Objek lokal, sing digunakake kanggo ngenali wilayah geografis, politik, utawa budaya.

15. Apa kaluwihan saka obyek immutable saka obyek biasa?

  1. Obyek sing ora bisa diganti aman digunakake ing lingkungan multithreaded . Padha nggawe supaya sampeyan ora kudu padha sumelang ing bab mundhut data amarga kahanan lomba. Iki beda karo nalika sampeyan nggarap obyek biasa. Ing kasus kasebut, sampeyan kudu mikir lan nggawe mekanisme sing apik nalika nggunakake obyek ing lingkungan sing padha.

  2. Obyek sing ora bisa diganti apik minangka kunci ing peta. Yen sampeyan nggunakake obyek sing bisa diowahi minangka tombol HashMap banjur owah-owahan negara obyek, banjur struktur data bisa bingung: obyek isih ana, nanging yen sampeyan nggunakake containsKey (), sampeyan ora bisa nemokake.

  3. Obyek sing ora bisa diganti apik banget kanggo nyimpen data sing ora bisa diganti (konstan) sing ora bisa diganti nalika program lagi mlaku.

  4. Kauntungan liyane yaiku atomicity kegagalan. Yen obyek immutable mbuwang pangecualian, ora bakal ditinggalake ing kahanan sing ora dikarepake (rusak).

  5. Kelas-kelas iki gampang dites.

  6. Sampeyan ora mbutuhake mekanisme tambahan kayata konstruktor salinan utawa implementasi kloning obyek.

Pitakonan babagan OOP

16. Apa kaluwihan OOP ing umum lan dibandhingake karo program prosedural?

Oke, keuntungan OOP:
  1. Aplikasi Komplek luwih gampang kanggo nulis nggunakake OOP saka program prosedural wiwit kabeh wis bejat mudhun menyang modul cilik - obyek sing sesambungan karo saben liyane - lan minangka asil, program wis suda kanggo sesambetan antarane obyek.

  2. Aplikasi sing ditulis nganggo OOP luwih gampang diowahi (nalika prinsip desain diamati kanthi bener).

  3. Amarga data lan operasi data dadi siji entitas, ora diolesi ing kabeh aplikasi (sing asring ana ing program prosedural).

  4. Prinsip enkapsulasi nglindhungi data sing paling kritis saka pangguna.

  5. Kode sing padha bisa digunakake maneh karo data sing beda amarga kelas ngidini sampeyan nggawe akeh obyek, saben duwe nilai dhewe.

  6. Warisan lan polimorfisme uga ngidini sampeyan nggunakake maneh lan ngluwihi kode sing wis ana (tinimbang duplikat fungsi sing padha).

  7. Nggedhekake aplikasi luwih gampang tinimbang karo pendekatan prosedural.

  8. Pendekatan OOP ndadekake bisa ngilangi rincian implementasine.

17. Marang kita apa cacat OOP wis

Sayange, padha uga ana:
  1. OOP mbutuhake akeh kawruh teoretis sing kudu dikuasai sadurunge bisa nulis apa wae.

  2. Gagasan OOP ora gampang dingerteni lan ditrapake ing praktik (sampeyan kudu dadi filsuf cilik ing ati).

  3. OOP nyuda kinerja program rada amarga tambah kerumitan sistem.

  4. Pendekatan OOP mbutuhake memori luwih amarga kabeh kasusun saka kelas, antarmuka, cara, sing njupuk memori luwih akeh tinimbang variabel biasa.

  5. Wektu sing dibutuhake kanggo analisis awal luwih gedhe tinimbang pendekatan prosedural.

18. Apa polimorfisme statis versus polimorfisme dinamis?

Polimorfisme ngidini obyek saka kelas utawa antarmuka sing padha tumindak kanthi beda. Ana rong jinis polimorfisme, sing uga dikenal minangka ikatan awal lan pungkasan. Polimorfisme statis, utawa ikatan awal:
  • dumadi ing wektu kompilasi (awal siklus urip program);
  • mutusake cara sing bakal ditindakake ing wektu kompilasi;
  • overloading cara minangka conto polimorfisme statis;
  • naleni awal kalebu pribadi, statis, lan cara final;
  • warisan ora melu naleni awal;
  • polymorphism statis ora ndherek obyek tartamtu, nanging informasi bab jinis kelas sing katon ing sisih kiwa jeneng variabel.
Polimorfisme dinamis, utawa ikatan telat:
  • dumadi nalika runtime (nalika program lagi mlaku);
  • polimorfisme dinamis mutusake cara implementasine tartamtu sing bakal ditindakake nalika runtime;
  • metode overriding minangka conto polimorfisme dinamis;
  • telat naleni tegese nemtokake obyek tartamtu, referensi saka jinis, utawa superclass sawijining;
  • warisan digandhengake karo polimorfisme dinamis.

19. Nyedhiyani definisi prinsip abstraksi ing OOP

Ing OOP, abstraksi minangka cara kanggo ngisolasi sakumpulan karakteristik sing migunani saka obyek, nanging ora kalebu rincian sing ora penting. Sing, nalika ngrancang program karo pendekatan OOP, sampeyan fokus ing model umum, tanpa arep menyang rincian implementasine. Ing Jawa, abstraksi diwujudake liwat antarmuka . Contone, sampeyan duwe mobil lan bakal dadi antarmuka. Lan macem-macem interaksi karo - contone, miwiti engine, pindah pindah - iku fungsi, kang digunakake tanpa delving menyang rincian implementasine. Pancen, nalika sampeyan lagi nyopir, sampeyan ora mikir persis carane gearbox nepaki tujuane, utawa carane tombol miwiti engine, utawa carane persis setir nguripake gembong. Lan yen sampeyan ngganti implementasine saka sawetara fungsi (contone, engine), sampeyan bisa uga ora sok dong mirsani. Ora masalah kanggo sampeyan: sampeyan ora nliti rincian implementasine. Sing penting kanggo sampeyan yaiku tumindak kasebut ditindakake. Intine, iki abstraksi rincian implementasine. Ing titik iki, kita bakal mandheg dina iki: diterusake!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION