JavaRush /Blog Jawa /Random-JV /Analisis pitakonan lan wangsulan saka wawancara kanggo pa...

Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa. Bagean 2

Diterbitake ing grup
Hello maneh kabeh! Kita terus golek jawaban kanggo 250+ pitakonan kanggo pangembang Junior, Tengah lan Senior. Pitakonan kasebut cukup menarik, lan aku seneng nganalisis: ing wektu kasebut sampeyan bisa nemokake kesenjangan ing kawruh teoritis, lan ing papan sing paling ora dikarepake. Analisis pitakonan lan jawaban wawancara.  Bagean 2 - 1Bagean sadurunge bisa ditemokake ing artikel iki . Nanging sadurunge kita miwiti, aku pengin ngelingake sampeyan:
  1. Aku bakal ngliwati pitakonan sing intersect karo seri artikel iki supaya ora duplikat informasi sepisan maneh. Aku nyaranake maca materi iki, amarga ngemot pitakonan wawancara Java Core sing paling umum (populer).
  2. Pitakonan babagan DOU diwenehi ing Ukrainia, nanging aku bakal duwe kabeh ing Rusia.
  3. Jawaban bisa diterangake luwih rinci, nanging aku ora bakal, wiwit banjur jawaban kanggo saben pitakonan bisa njupuk kabeh artikel. Lan dheweke ora bakal takon sampeyan kanthi rinci ing wawancara apa wae.
Yen perlu, aku bakal ninggalake link kanggo sinau luwih jero. Ayo mabur!

11. Sebutake kabeh metode kelas Obyek

Kelas Object duwe 11 metode:
  • Class<?> getClass() — njupuk kelas saka obyek saiki;
  • int hashCode () - njupuk kode hash saka obyek saiki;
  • boolean equals(Object obj) - mbandhingake obyek saiki karo liyane;
  • Klone obyek () - nggawe lan ngasilake salinan obyek saiki;
  • String toString () - njupuk perwakilan string saka obyek;
  • void notify () - awakening siji thread nunggu ing monitor obyek iki (pilihan thread punika acak);
  • void notifyAll () - awakens kabeh Utas nunggu ing monitor obyek iki;
  • void wait () - ngalih thread saiki kanggo mode Enteni (freezes) ing monitor saiki, mung dianggo ing pemblokiran diselarasake nganti sawetara notify utawa notifyAll wakes munggah thread;
  • void wait (long wektu entek) - uga freezes thread saiki ing monitor saiki (ing sing saiki disinkronake), nanging karo wektu kanggo metu saka negara iki (utawa maneh: nganti notifikasi utawa notifyAll tangi);
  • void wait(long timeout, int nanos) - cara sing padha karo sing kasebut ing ndhuwur, nanging kanthi wektu sing luwih tepat kanggo metu saka beku;
  • void finalize () - sadurunge mbusak obyek iki, kolektor uwuh nelpon cara iki (pungkasan). Iki digunakake kanggo ngresiki sumber daya sing dikuwasani.
Kanggo nggunakake metode hashCode , equals​ , clone , toString , lan finalize kanthi bener, kudu ditetepake maneh, kanthi nimbang tugas lan kahanan saiki.

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

Biasane, nalika nggunakake try-catch-finally, blok pungkasan digunakake kanggo nutup sumber daya. Java 7 ngenalake jinis operator try-with-resources anyar , analog saka try-catch-finally kanggo mbebasake sumber daya, nanging luwih kompak lan bisa diwaca. Ayo elinga kaya apa try-catch-final :
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();
}
Iku piye wae dadi luwih gampang, apa ora? Saliyane nyederhanakake, ana sawetara titik:
  1. Ing try-with-resources , sumber daya sing diumumake ing kurung (sing bakal ditutup) kudu ngleksanakake antarmuka AutoCloseable lan mung cara, cedhak () .

    Cara cedhak dieksekusi ing blok pungkasan sing implisit , yen ora, kepiye program bakal ngerti carane nutup sumber daya tartamtu?

    Nanging, paling kamungkinan, sampeyan bakal arang nulis implementasine dhewe saka sumber daya lan cara nutup.

  2. Urutan eksekusi blok:

    1. coba blokir .
    2. Implisit pungkasane .
    3. Blok nyekel sing nyekel pangecualian ing langkah sadurunge.
    4. Eksplisit pungkasane .

    Minangka aturan, pangecualian sing katon luwih murah ing dhaptar ngganggu sing katon luwih dhuwur.

Bayangake kahanan nalika nggunakake try-catch-akhire ana pangecualian ing nyoba sampeyan . Patut, pemblokiran nyekel tartamtu langsung wiwit nglakokaké , kang nulis pangecualian liyane (contone, karo pesen sing njlèntrèhaké kesalahan ing liyane rinci), lan sampeyan pengin cara uncalan pangecualian iki luwih. Sabanjure, eksekusi blok pungkasan , lan pangecualian uga dibuwang. Nanging iki beda. Kang saka loro istiméwa iki cara iki wekasanipun uncalan? Pangecualian dibuwang dening blok pungkasan ! Nanging ana uga siji titik karo try-with-resources . Saiki ayo ndeleng prilaku try-with-resources ing kahanan sing padha. We njaluk pangecualian ing pamblokiran nyoba nalika kita nyoba kanggo nutup sumber daya ing close() cara , sing, ing implisit pungkasanipun . Kang saka pangecualian iki bakal nyekel ? Sing dibuwang dening blok try ! Pangecualian saka pungkasan implisit (saka cara cedhak () bakal digatèkaké. Iki nglirwakake uga disebut exception suppression.

13. Apa operasi bitwise?

Operasi bitwise yaiku operasi ing string bit sing kalebu operasi logis lan shift bitwise. Operasi logika:
  • bitwise AND - mbandhingake nilai bit, lan ing proses kasebut, bit apa wae sing disetel dadi 0 (palsu) nyetel bit sing cocog ing asil minangka 0. Yaiku, yen ing loro nilai kasebut dibandhingake bit 1 (bener), asil uga bakal 1.

    Ditandani minangka - AND , &

    Tuladha: 10111101 & 01100111 = 00100101

  • bitwise UTAWA operasi kuwalik saka sadurunge. Sembarang bit disetel menyang 1 nyetel bit sing padha ing asil minangka 1. Lan, yen bit ana 0 ing loro nilai dibandhingake, bit asil uga bakal 0.

    Ditandani minangka - UTAWA , |

    Tuladha: 10100101 | 01100011 = 11100111

  • bitwise NOT - Applied kanggo siji nilai, flips (inverts) bit. Sing, bit sing 1 bakal dadi 0; lan sing 0 bakal dadi 1.

    Ditandani minangka - NOT , ~

    Tuladha: ~10100101 = 01011010

  • bitwise eksklusif UTAWA - mbandhingake nilai bit, lan yen ing loro nilai bit padha karo 1, banjur asil bakal 0, lan yen ing loro nilai dicokot 0, asil bakal 0. Kanggo asil padha karo 1, mung siji bit kudu padha karo 1, lan kaloro padha karo 0.

    Ditandani minangka - XOR , ^

    Tuladha: 10100101 ^ 01100011 = 11000110

Nggeser bitwise - >> utawa << nggeser bit saka nilai menyang arah sing ditemtokake, kanthi nomer sing ditemtokake. Posisi gratis diisi nol. Tuladhane:
  1. 01100011 >> 4 = 00000110
  2. 01100011 << 3 = 00011000
Ana uga pangecualian nalika nengen nggeser nomer negatif. Nalika sampeyan ngelingi, dicokot pisanan tanggung jawab kanggo tandha, lan yen dicokot iki padha karo 1, banjur nomer negatif. Yen sampeyan mindhah nomer negatif, posisi kosong bakal ora maneh kapenuhan nul, nanging karo siji, amarga iku perlu kanggo njaga bit tandha. Contone: 10100010 >> 2 = 11101000 Ing wektu sing padha, ing Jawa ana tambahan operator shift tengen unsigned >>> Operator iki analog saka >>, nalika pindah, posisi kosong diisi 0, preduli saka apa. nomer negatif utawa positif. Contone: 10100010 >>> 2 = 00101000 Waca liyane babagan operasi bitwise kene . Analisis pitakonan lan jawaban wawancara.  Bagean 2 - 2Minangka conto panggunaan owah-owahan bitwise ing Jawa, sampeyan bisa nyebutake hash () cara HashMap, sing digunakake kanggo nemtokake kode hash internal khusus kanggo kunci: Analisis pitakonan lan jawaban wawancara.  Bagean 2 - 3Cara iki ngidini sampeyan nyebarake data kanthi rata ing HashMap kanggo nyilikake. jumlah tabrakan.

14. Apa kelas immutable standar apa obyek ing Jawa?

Imotable minangka obyek sing ora ngidini paramèter asli diganti. Bisa uga ana cara sing ngasilake obyek anyar saka jinis tartamtu, kanthi paramèter sing pengin diganti. Sawetara obyek sing ora bisa diganti standar:
  • Dening obyek immutable paling misuwur ing Jawa iku String;
  • kedadean kelas pambungkus sing mbungkus jinis standar: Boolean, Character, Byte, Short, Integer, Long, Double, Float;
  • obyek sing biasane digunakake kanggo nomer utamané LARGE - BigInteger lan BigDecimal;
  • obyek sing unit ing stacktraces (Contone, ing stacktrace pangecualian) StackTraceElement;
  • obyek saka kelas File - bisa ngganti file, nanging ing wektu sing padha iku immutable;
  • UUID - sing asring digunakake minangka id unik kanggo unsur;
  • kabeh obyek kelas paket java.time;
  • Lokal - digunakake kanggo nemtokake wilayah geografis, politik, utawa budaya.

15. Apa kaluwihan obyek sing ora bisa diganti tinimbang obyek biasa?

  1. Obyek kuwi aman yen digunakake ing lingkungan multi-threaded . Kanthi nggunakake wong-wong mau, sampeyan ora kudu padha sumelang ing bab rusak data amarga kahanan lomba thread. Ora kaya nggarap obyek biasa: ing kasus iki, sampeyan kudu mikir kanthi ati-ati lan ngupayakake mekanisme kanggo nggunakake obyek kasebut ing lingkungan sing padha.
  2. Obyek sing ora bisa diganti minangka kunci sing apik ing peta, amarga yen sampeyan nggunakake obyek sing bisa diganti banjur obyek kasebut ngganti negara, bisa dadi bingung nalika nggunakake HashMap: obyek kasebut isih ana, lan yen sampeyan nggunakake containsKey () bisa uga ora. ditemokake.
  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. "Atomicity kanggo Gagal" - yen obyek immutable mbuwang pangecualian, iku bakal tetep ing kahanan sing ora dikarepake (rusak).
  5. Kelas-kelas iki gampang dites.
  6. Mekanisme tambahan kayata konstruktor salinan lan implementasi clone ora dibutuhake.

Pitakonan babagan OOP

Analisis pitakonan lan jawaban wawancara.  Bagean 2 - 4

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

Dadi, keuntungan saka OOP:
  1. Aplikasi Komplek luwih gampang kanggo nulis saka program prosedural, amarga kabeh dipérang dadi modul cilik - obyek sing sesambungan karo saben liyane - lan minangka asil, program teka menyang hubungan antarane obyek.
  2. Aplikasi sing ditulis nggunakake OOP luwih gampang diowahi (anggere konsep desain dituruti).
  3. Wiwit data lan operasi ing sawijining entitas siji, padha ora smeared saindhenging aplikasi (sing asring kedaden karo program prosedural).
  4. Enkapsulasi informasi nglindhungi data paling kritis saka pangguna.
  5. Sampeyan bisa nggunakake maneh kode sing padha karo data sing beda, amarga kelas ngidini sampeyan nggawe akeh obyek, sing saben duwe nilai atribut dhewe.
  6. Warisan lan polimorfisme uga ngidini sampeyan nggunakake maneh lan ngluwihi kode sing ana (tinimbang duplikat fungsi sing padha).
  7. Extensibility aplikasi luwih gampang tinimbang karo pendekatan prosedural.
  8. Pendekatan OOP ndadekake bisa abstrak saka rincian implementasine.

17. Marang kita apa shortcomings ana ing OOP

Sayange, dheweke uga ana:
  1. OOP mbutuhake akeh kawruh teoretis sing kudu dikuasai sadurunge bisa nulis apa wae.Analisis pitakonan lan jawaban wawancara.  Bagean 2 - 5
  2. Gagasan OOP ora gampang dingerteni lan ditrapake ing praktik (sampeyan kudu dadi filsuf ing ati).
  3. Nalika nggunakake OOP, kinerja piranti lunak rada suda amarga organisasi sistem sing luwih rumit.
  4. Pendekatan OOP mbutuhake memori luwih akeh, 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 kanggo prosedural.

18. Apa polimorfisme statis lan dinamis

Polimorfisme ngidini obyek tumindak beda kanggo kelas utawa antarmuka sing padha. Ana rong jinis polimorfisme, uga dikenal minangka ikatan awal lan pungkasan . Polimorfisme statis, utawa ikatan sadurungé:
  • dumadi ing wektu kompilasi (awal siklus urip program);
  • mutusake cara sing bakal ditindakake ing wektu kompilasi;
  • Overloading metode minangka conto polimorfisme statis;
  • naleni awal kalebu pribadi, statis, lan cara terminal;
  • warisan ora melu naleni awal;
  • Polimorfisme statis ora kalebu obyek tartamtu, nanging informasi babagan kelas, jinis sing dituduhake ing sisih kiwa jeneng variabel.
Polimorfisme dinamis, utawa ikatan telat:
  • dumadi nalika runtime (nalika program lagi mlaku);
  • polimorfisme dinamis mutusake apa implementasine tartamtu cara bakal duwe ing runtime;
  • metode overriding minangka conto polimorfisme dinamis;
  • late binding punika assignment saka obyek tartamtu, referensi saka jinis, utawa superclass sawijining;
  • warisan digandhengake karo polimorfisme dinamis.
Sampeyan bisa maca liyane babagan beda antarane ikatan awal lan pungkasan ing artikel iki .

19. Netepake prinsip abstraksi ing OOP

Abstraksi ing OOP minangka cara kanggo nyorot sakumpulan karakteristik sing penting saka obyek, ora kalebu rincian sing ora penting. Sing, nalika ngrancang program karo pendekatan OOP, sampeyan fokus ing model ing umum, tanpa delving menyang rincian implementasine. Ing Jawa, antarmuka tanggung jawab kanggo abstraksi . Contone, sampeyan duwe mesin, lan iki bakal dadi antarmuka. Lan macem-macem interaksi karo - contone, miwiti engine, nggunakake gearbox - iki fungsi sing digunakake tanpa arep menyang rincian implementasine. Sawise kabeh, ing wayahe nalika nyopir mobil, sampeyan ora mikir carane persis gearbox nepaki tujuane, utawa carane tombol miwiti engine, utawa persis carane setir nguripake gembong. Lan malah yen implementasine saka siji saka fungsi iki diganti (contone, engine), sampeyan bisa uga ora sok dong mirsani. Iki ora dadi masalah kanggo sampeyan: sampeyan ora ngerti babagan implementasine. Penting kanggo sampeyan yen tumindak kasebut ditindakake. Bener, iki abstraksi saka rincian implementasine. Iki ngendi kita bakal mandheg dina iki: diterusake!Analisis pitakonan lan jawaban wawancara.  Bagean 2 - 6
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION