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. Bagian 8

Diterbitake ing grup
Praktek utawa teori? Apa sing luwih penting? Akeh wong bakal ngomong yen latihan luwih penting. Kaya, latihan nganti srengenge surup lan sampeyan bakal seneng. Aku bakal wani ora setuju karo iki. Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 1Sajrone wawancara, ora ana sing bakal ngerti kepiye keren nalika sampeyan lagi latihan. Nanging, sampeyan bakal dijaluk nduduhake teori sampeyan. Ora nganti mengko yen sampeyan wis ngliwati kabeh lapisan wawancara lan ditugasake menyang proyek, sampeyan bakal ngetrapake katrampilan praktis sampeyan. Sampeyan bisa mbantah, ngandika kadhangkala padha menehi tugas test, supaya laku isih perlu. Aku ora setuju, nanging sing dakkarepake, iki KANGGO, nanging sampeyan kudu nuduhake kawruh teori ing wawancara. Apa sampeyan ngrasakake bedane? Kabeh iki tegese sampeyan kudu duwe dhasar teoretis sing kuat, lan iki sing bakal terus dibangun saiki. Luwih khusus, kita bakal terus ndeleng pitakonan sing asring dijaluk ing wawancara.

71. Apa sing kedadeyan yen kita ora ngilangi metode toString () Enum?

Upaminipun kita duwe enum ing ngisor iki :

public enum Role {
   STUDENT,
   TEACHER,
   DIRECTOR,
   SECURITY_GUARD;
}
Ayo nampilake kolom STUDENT ing konsol kanthi nelpon metode toString () :

System.out.println(Role.STUDENT.toString());
Akibaté, kita entuk output konsol ing ngisor iki:
MAHASISWA
Mangkono, kita weruh yen kanggo enum , implementasine standar toString () ngasilake jeneng konstanta kasebut.

72. Apa sampeyan bisa ngumumake konstruktor ing njero Enum?

Ya mesthi. Konstruktor yaiku sing nyetel nilai kolom internal enum . Minangka conto, ayo nambah rong kolom menyang enum sadurunge ( ageFrom lan ageTo ) kanggo nunjukake rentang umur saben peran:

public enum Role {
   STUDENT(5,18),
   TEACHER(20,60),
   DIRECTOR(40,70),
   SECURITY_GUARD(18,50);
 
   int ageFrom;
   int ageTo;
 
   Role(int ageFrom, int ageTo) {
       this.ageFrom = ageFrom;
       this.ageTo = ageTo;
   }
}

73. Apa bedane == lan padha ()?

Iki minangka salah sawijining pitakonan wawancara sing paling umum dijaluk kanggo para pangembang Java. Kanggo miwiti, nalika mbandhingake nilai prasaja ( int , char , pindho ...), kita nggunakake == , amarga variabel iki ngemot nilai konkrit sing bisa dibandhingake langsung. Apa maneh, variabel primitif dudu obyek lengkap - ora oleh warisan kelas Obyek lan ora duwe metode sing padha () . Yen kita ngomong babagan mbandhingake variabel sing ngrujuk marang obyek, mula kita kudu ngerti yen == mung mbandhingake nilai referensi, yaiku apa sing nuduhake obyek sing padha utawa ora. Sanajan kabeh data ing siji obyek identik karo kabeh data liyane, nggunakake == kanggo mbandhingake bakal ngasilake asil negatif ( palsu ), amarga obyek kasebut kapisah. Nalika sampeyan wis guessed, kita nggunakake padha () cara kanggo mbandhingaké variabel referensi. Iki salah siji saka cara standar kelas Obyek , lan perlu kanggo comparison lengkap obyek. Nanging aku kudu langsung ngomong yen cara iki bisa digunakake kanthi bener, kudu ditindhes kanggo nuduhake persis carane obyek kudu dibandhingake. Yen sampeyan ora ngilangi metode kasebut, sampeyan bakal entuk implementasi standar, sing mbandhingake obyek nggunakake == . Ing IntelliJ IDEA, sampeyan bisa ngilangi kanthi otomatis nggunakake trabasan IDEA: Alt+Insert . Ing jendhela sing katon, pilih padha () lan hashCode () . Banjur pilih lapangan sing kudu dilebokake. Voila! Cara kasebut kanthi otomatis dileksanakake. Iki minangka conto carane metode sing digawe kanthi otomatis nggoleki kelas Cat sing paling gampang kanthi rong kolom - umur int lan jeneng String :

@Override
public boolean equals(final Object o) {
   if (this == o) return true;
   if (o == null || this.getClass() != o.getClass()) return false;
   final Cat cat = (Cat) o;
   return this.age == cat.age &&
           Objects.equals(this.name, cat.name);
}
Nalika nerangake enum , ora ana prabédan praktis antarane == lan padha () . Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 2Sawise kabeh, enum nyimpen konstanta, lan sanajan kita mbandhingake nilai-nilai sing padha nggunakake == , kita bakal bener , amarga referensi sing dibandhingake bakal nuduhake obyek sing padha. Lan nggunakake witjaksono () entuk asil sing bener uga. Yen sampeyan pindhah menyang awak saka cara witjaksono kanggo Enum , sampeyan bakal weruh sing kelas Enum wis implementasine ing ngisor iki: Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 3Nang kita bisa ndeleng comparison lawas apik referensi! Kanggo ngringkes, kanggo enum s, kita bisa mbandhingake kanthi bener nggunakake == lan padha () . Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 4

74. Apa cara ordinal () Enum?

Nalika kita nelpon cara int ordinal () ing lapangan enum , kita njaluk indeks basis nul lapangan ing dhaftar nilai enum. Ayo nelpon metode iki ing lapangan ing enum Peran , sing sadurunge dianggep:

System.out.println(Role.DIRECTOR.ordinal());
Dadi, konsol nampilake:
2

75. Apa Enum bisa digunakake karo TreeSet utawa TreeMap ing Jawa?

Kita bisa nggunakake jinis enum ing TreeSet lan TreeMap . Lan kita bisa nulis iki:

TreeSet<Role> treeSet = new TreeSet<>();
treeSet.add(Role.SECURITY_GUARD);
treeSet.add(Role.DIRECTOR);
treeSet.add(Role.TEACHER);
treeSet.add(Role.STUDENT);
treeSet.forEach(System.out::println);
Lan console bakal nampilake:
GURU MAHASISWA DIREKTUR KEAMANAN_PENJAGA
Kita entuk output, nanging ora miturut abjad. Intine yen kita nggunakake kolom enum minangka nilai TreeSet utawa minangka tombol TreeMap , banjur kolom kasebut diurutake miturut urutan alam (ing urutan sing ditemtokake ing enum ) . Pangerten iki cara kerjane mbantu kita nulis kode sing luwih apik.

76. Kepiye cara ordinal () lan compareTo () Enum?

Kaya kasebut sadurunge, ordinal () ngasilake indeks lapangan ing dhaptar kolom enum. Uga, nalika nimbang pitakonan sadurunge, sampeyan weruh yen kolom enum dilebokake ing TreeSet (yaiku set sing diurutake), padha njupuk urutan sing diumumake ing enum . Lan kita ngerti, TreeSet lan TreeMap ngurutake item kanthi nelpon metode compareTo () antarmuka Comparable sing . Iki marang kita sing kelas Enum ngleksanakake antarmuka Comparable , kang tegese iku ngleksanakake compareTo () cara, kang internal nggunakake cara ordinal () kanggo nemtokake urutan urutan. Arep menyang kelas Enum , kita bisa konfirmasi Panyangka kita: Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 5Lan kene awak saka cara dhewe: Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 6Cara ordinal () ora disebut kene. Nanging, variabel ordinal digunakake, yaiku nomer indeks saka unsur ing enumerasi. Cara ordinal () dhewe Njelajah pitakonan lan jawaban saka wawancara proyek kanggo posisi pangembang Jawa.  Bagean 8 - 7 ora luwih saka getter kanggo variabel ordinal .

77. Tulisen tuladha Enum

Ing pitakonan sing dibahas ing ndhuwur, aku wis menehi conto enum s. Aku ora weruh alesan kanggo duplikat kode kene. Contone, waca Pitakonan 72 babagan konstruktor ing enum.

78. Apa Enum bisa digunakake ing kasus switch?

Iku bisa lan kudu! Nggoleki pengalaman, aku bakal nyathet yen salah sawijining panggunaan enum sing paling umum yaiku ing konstruksi logis kaya pernyataan switch . Ing kasus iki, sampeyan bisa nyedhiyani kabeh kasus bisa s - yen sampeyan nulis logika kanggo saben lapangan enum , sampeyan malah ora perlu klausa standar ! Sawise kabeh, yen sampeyan nggunakake String utawa angka numerik, kayata int , sampeyan bisa uga nampa nilai sing ora dikarepke, nanging iku mokal karo enum . Mangkene pratelan switch kanggo conto ing ndhuwur:

public void doSomething(Role role) {
   switch (role) {
       case STUDENT:
           // some logic for STUDENT
           break;
       case TEACHER:
           // some logic for TEACHER
           break;
       case DIRECTOR:
           // some logic for DIRECTOR
           break;
       case SECURITY_GUARD:
           // some logic for SECURITY_GUARD
           break;
   }
}

79. Kepiye carane bisa entuk kabeh nilai Enum?

Yen sampeyan perlu kanggo njaluk kabeh nilai enum bisa, ana Nilai () cara, kang ngasilake Uploaded kabeh nilai bisa kanggo enum ing urutan alam sing (yaiku, ing urutan kang kasebut ing enum ). Tuladha:

Role[] roles = Role.values();
for (Role role : roles) {
   System.out.println(role);
}
Kita bakal duwe ing console:
GURU MAHASISWA DIREKTUR KEAMANAN_PENJAGA

Stream API

80. Apa sing diarani Alur ing Jawa?

Java Stream API minangka cara sing relatif anyar kanggo sesambungan karo aliran data, ngidini kita ngolah data gedhe kanthi luwih trep lan kompak, uga ngolah data kanthi podo karo sawetara aliran, sing bisa ningkatake kinerja.

81. Sebutake sifat utama transaksi

Topik ing kene yaiku Stream API, nanging pitakonan babagan transaksi. Hmm... Pisanan, ayo padha ngerti apa iku transaksi. Transaksi minangka klompok operasi berurutan ing basis data . Iku nuduhake unit logis saka karya. Transaksi bisa dileksanakake kanthi bebas saka transaksi bebarengan liyane kanthi sakabehe lan kasil, saéngga njaga integritas data, utawa ora dieksekusi babar pisan, mula ora ana pengaruhe. Transaksi duwe papat sifat utama, sing bisa gampang dielingi amarga akronim ACID . Ayo ndeleng apa tegese saben huruf saka akronim iki: A stands for Atomicity . Properti iki njamin yen ora ana transaksi sing sebagian ditindakake ing sistem kasebut. Salah siji kabeh suboperations bakal kaleksanan, utawa ora ana sing bakal kaleksanan ( kabeh utawa ora ana ). С tegese Konsistensi . Properti iki njamin yen saben transaksi sing sukses mung bakal ngasilake asil sing bener. Ing tembung liyane, iki minangka jaminan yen transaksi sukses, kabeh aturan sistem kanggo data tartamtu bakal dituruti. Yen transaksi ora sukses, mula ora bakal dieksekusi lan data sistem bakal bali menyang kahanan sadurunge. Aku stands for Isolasi . Properti iki tegese nalika transaksi dieksekusi, transaksi bebarengan ora kena pengaruhe. Properti iki intensif sumber daya, dadi, minangka aturan, sebagian dileksanakake, ngidini tingkat isolasi tartamtu sing ngatasi masalah isolasi tartamtu. Kita bakal ngrembug babagan iki kanthi luwih rinci ing pitakonan sabanjure. D singkatan saka Durability . Properti iki njamin yen pangguna nampa konfirmasi yen transaksi wis rampung, mula dheweke bisa yakin manawa owah-owahan kasebut ora bakal dibatalake amarga gagal. Yaiku, sampeyan bisa yakin manawa sawetara kegagalan sistem operasi ora bakal nindakake apa-apa kanggo data sampeyan yen sampeyan wis nampa konfirmasi yen transaksi sampeyan wis rampung kanthi sukses.

82. Apa tingkat isolasi transaksi?

Kaya sing dakkandhakake sadurunge, nalika nerangake sifat ACID, mesthekake yen isolasi minangka proses intensif sumber daya. Patut, properti iki sebagian dileksanakake. Ana macem-macem tingkat isolasi: sing luwih dhuwur level kasebut, luwih abot impact ing kinerja. Sadurunge pindhah menyang tingkat isolasi transaksi, kita kudu nimbang macem-macem masalah sing kedadeyan amarga ora cukup isolasi transaksi :
  • phantom maca : nalika panyuwunan sing padha, diarani luwih saka sapisan ing transaksi siji, ngasilake asil sing beda amarga sisipan dening transaksi liyane;

  • nonrepeatable reads : nalika panjalukan sing padha, diarani luwih saka sapisan ing transaksi siji, ngasilake data sing beda amarga owah-owahan (nganyari) lan pambusakan dening transaksi liyane;

  • maca reged : maca data sing durung rampung sing wis ditambahake utawa diowahi dening transaksi lan banjur digulung maneh;

  • nganyari ilang : nalika siji pamblokiran data bebarengan diganti dening transaksi beda, lan kabeh owah-owahan kajaba sing pungkasan ilang (padha karo kondisi lomba ing multithreading).

Kaya sing kedadeyan, tingkat isolasi transaksi ditondoi karo masalah isolasi sing dilindhungi. Coba tabel tingkat isolasi ing ngisor iki lan masalah sing dilindhungi:
Tingkat isolasi Phantom maca Wacan sing ora bisa diulang Reged maca Nganyari ilang
SERIALIZED + + + +
REPEATABLE diwaca - + + +
MACA KOMITED - - + +
MACA UNCOMMITTED - - - +
NONE - - - -
Lan aja lali sisih loncat karo muter awak: sing luwih dhuwur tingkat isolasi, transaksi maneh njupuk kanggo proses (diwenehi eksekusi paralel saka macem-macem transaksi).

83. Apa bedane pratelan lan pratelan sing wis disiapake?

Ing kene kita wis owah kanthi cepet dadi fitur JDBC . Ing acara apa wae, ayo goleki apa tegese Pernyataan . Iki minangka obyek sing digunakake kanggo mbentuk pitakon SQL. JDBC nggunakake telung jinis: Statement , PreparedStatement , lan CallableStatement . Kita ora bakal nganggep CallableStatement dina iki. Nanging, kita ngomong babagan prabédan antarane Statement lan PreparedStatement .
  1. Pranyatan digunakake kanggo nglakokake pitakon SQL sing prasaja tanpa parameter input runtime. PrepareStatement bisa nampa parameter input nalika runtime.

  2. Kanggo nyetel paramèter kanggo PreparedStatement , paramèter input ditulis minangka tandha pitakonan ing request, supaya padha bisa diganti dening sawetara nilai nggunakake macem-macem setters, kayata setDouble () , setFloat () , setInt () , setTime () ... Iki tegese sampeyan ora bakal nglebokake jinis data sing salah menyang panyuwunan.

  3. PreparedStatement wis dikompilasi lan nggunakake caching, supaya bisa dieksekusi rada luwih cepet tinimbang panjaluk sing digawe saka obyek Pernyataan . Akibaté, statement SQL sing kerep dieksekusi digawe minangka obyek PreparedStatement kanggo nambah kinerja.

  4. Pernyataan rentan kanggo injeksi SQL, nanging PreparedStatement nyegah.

Lan kanthi mangkono, kita bakal ngarani dina!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION