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

Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa. Bagian 8

Diterbitake ing grup
Praktek utawa teori? Apa sing luwih penting? Akeh sing bakal ujar manawa, mesthi, latihan luwih penting. Kaya, latihan sekuat sampeyan bisa lan sampeyan bakal seneng. Aku wani ora setuju karo iki. Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 1Sajrone wawancara, ora ana sing bakal ngerti carane apik sampeyan ing latihan. Sampeyan bakal dijaluk kanthi lengkap kanthi tepat miturut teori. Lan mung banjur, yen sampeyan ngliwati kabeh babak wawancara lan mlebu proyek kasebut, sampeyan bakal nggunakake katrampilan praktis. Sampeyan bisa mbantah: kadhangkala dheweke menehi tugas tes lan latihan isih dibutuhake. Aku ora mbantah, sok-sok diwenehi, nanging kasunyatane KADANG-KADANG, nanging wawancara teoretis tansah ditindakake. Apa sampeyan ngrasakake bedane? Mulane, sampeyan kudu duwe dhasar teoretis sing padhet ing sikilmu, sing bakal terus dikuatake saiki. Yaiku, kita bakal terus nganalisis pitakon-pitakon sing asring ditakokake sajrone wawancara.

71. Apa mengkono yen kita ora ngalahake toString () cara kanggo Enum?

Ayo kita duwe enum ing ngisor iki :
public enum Role {
   STUDENT,
   TEACHER,
   DIRECTOR,
   SECURITY_GUARD;
}
Ayo nampilake siswa ing console kanthi nelpon toString() ing dheweke :
System.out.println(Role.STUDENT.toString());
Asil ing konsol:
SISWA
Yaiku, kanthi standar, toString () kanggo enum yaiku jeneng konstanta kasebut.

72. Iku bisa kanggo nemtokake konstruktor nang Enum?

Iya tenanan. Liwat konstruktor, nilai variabel enum internal disetel. Minangka conto, ayo nambah rong kolom menyang enum sadurunge - ageFrom lan ageTo - kanggo nuduhake kisaran 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 pangembang Jawa sing paling umum. Ayo dadi miwiti karo kasunyatan sing nalika kita mbandhingaké nilai prasaja ( int , char , pindho ...), kita nindakaken nggunakake == , amarga variabel ngemot nilai tartamtu lan kita bisa mbandhingaké. Lan variabel primitif ora obyek lengkap - padha ora oleh warisan saka Obyek lan ora padha () cara . Nalika kita pirembagan bab mbandhingaké variabel sing nuduhake obyek, == mung bakal mbandhingaké Nilai saka referensi - apa padha deleng obyek padha utawa ora. Lan sanajan siji obyek identik liyane, comparison liwat == bakal menehi asil negatif ( palsu ), amarga iki obyek beda. Nalika sampeyan ngerti, cara sing padha () digunakake kanggo mbandhingake variabel referensi . Iki minangka salah sawijining metode standar kelas Obyek , sing dibutuhake kanggo mbandhingake obyek kanthi lengkap. Nanging kudu njlentrehake langsung: supaya cara iki bisa digunakake kanthi bener, kudu didefinisikan maneh kanthi nulis persis carane obyek saka kelas iki kudu dibandhingake. Kajaba sampeyan ngilangi metode kasebut, kanthi standar bakal mbandhingake obyek kanthi == . Ing IntelliJ IDEA , sampeyan bisa ngilangi kanthi otomatis (nggunakake alat IDEA) -> alt + insert , ing jendhela sing katon, pilih padha () lan hashCode () -> pilih lapangan kelas sing kudu melu -> lan voila, implementasi otomatis saka cara wis rampung. Iki minangka conto saka cara sing digawe kanthi otomatis kanggo kelas Cat sing prasaja 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);
}
Yen kita pirembagan bab prabédan antarane == lan witjaksono kanggo enums , ana ora akeh. Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 2Sawise kabeh, enum nyimpen konstanta, lan sanajan mbandhingake nilai sing padha nggunakake == , kita bakal nampa bener , amarga referensi bakal tansah kanggo obyek sing padha. Inggih, nalika nggunakake witjaksono, kita uga bakal bisa metu fungsi bener, utamané yen sampeyan pindhah menyang awak saka cara witjaksono kanggo enum , sampeyan bakal weruh sing ing kelas Enum implementasine saka cara punika: Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 3Yaiku, nang - comparison lawas apik dening referensi! Kanggo ngringkes: kanggo enum , comparison loro liwat == lan padha bener.Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 4

74. Apa cara ordinal () ing Enum?

Nalika nelpon cara int ordinal () ing unsur enum , kita bakal njaluk nomer ordinal saka nul Nilai iki ing seri umum enumerations. Ayo nggunakake metode iki ing siji unsur saka enum sadurunge sing dibahas - Peran :
System.out.println(Role.DIRECTOR.ordinal());
Dadi, konsol bakal nampilake:
2

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

Panggunaan jinis enum ing TreeSet lan TreeMap bisa ditampa. Lan kita bisa nulis:
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 nampa output ora ing urutan abjad. Intine yaiku yen kita nggunakake unsur enum kanggo nilai TreeSet ​​utawa minangka kunci kanggo TreeMap , unsur kasebut diurutake miturut urutan alam (urutan sing ditemtokake ing enum ). Pangertosan fitur kasebut mbantu kita nulis kode sing luwih apik.Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 5

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

Kaya sing wis kasebut sadurunge, ordinal () ngasilake nomer ordinal saka nilai ing dhaptar enumerasi umum. Uga, ing analisis saka pitakonan sadurungé, sampeyan weruh sing unsur enumerations, sapisan, contone, ing TreeSet (diurutake pesawat) njupuk urutan kang padha diumumake ing enum . Lan kita ngerti, TreeSet lan TreeMap ngurutake unsur kanthi nelpon cara compareTo () saka antarmuka Comparable . Saka iki kita bisa nganggep sing kelas Enum ngleksanakake antarmuka Comparable , ngleksanakake ing compareTo () cara , ing kang ordinal () digunakake kanggo nyetel urutan urutan. Duwe mlebu kelas Enum , kita ndeleng konfirmasi iki: Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 6Lan awak saka cara dhewe: Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 7Cara ordinal () ora disebut kene. Nanging, variabel ordinal digunakake - nomer ordinal saka unsur ing enumerasi. Cara ordinal () dhewe ora Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 8luwih saka getter kanggo variabel ordinal .

77. Tulisen conto EnumM

Ing pitakonan sing dibahas ing ndhuwur, aku wis menehi conto enum lan aku ora weruh titik kanggo duplikat kode (contone, pitakonan nomer 72 babagan konstruktor ing enum).

78. Apa bisa nggunakake Enum ing kasus ngalih?

Iku bisa lan perlu! Nggoleki praktikku, aku nyathet yen salah sawijining papan sing paling umum kanggo nggunakake enum yaiku konstruksi logis kaya switch . Ing kasus iki, sampeyan bisa nyedhiyani kabeh kemungkinan variasi kasus , lan sawise nulis logika kanggo kabeh nilai enum - lan nggunakake operator standar malah ora perlu! Sawise kabeh, yen sampeyan nggunakake String utawa angka numerik, contone, saka jinis int , sampeyan bisa nampa nilai sing ora dikarepke, kang siji mokal nggunakake enum . Kaya apa saklar kanggo conto sing dibahas sadurunge:
public void doSomething(Role role) {
   switch (role) {
       case STUDENT:
           // некая логика для STUDENT
           break;
       case TEACHER:
           // некая логика для TEACHER
           break;
       case DIRECTOR:
           // некая логика для DIRECTOR
           break;
       case SECURITY_GUARD:
           // некая логика для SECURITY_GUARD
           break;
   }
}

79. Kepiye carane entuk kabeh nilai sing kasedhiya ing conto Enum?

Yen sampeyan perlu kanggo njaluk kabeh kedadean saka enum, ana Nilai () cara sing ngasilake array saka kabeh nilai kasedhiya saka enum tartamtu ing urutan alam (ing urutan padha kasebut ing enum ). Tuladha:
Role[] roles = Role.values();
for (Role role : roles) {
   System.out.println(role);
}
Konsol bakal nampilake output ing ngisor iki:
GURU MAHASISWA DIREKTUR KEAMANAN_PENJAGA

Stream API

80. Apa sing diarani Alur ing Jawa?

Java Stream minangka cara sing relatif anyar kanggo sesambungan karo aliran data, sing ngidini sampeyan ngolah data gedhe kanthi luwih trep lan kompak, uga ngolah data paralel ing antarane sawetara benang, sing bisa nambah kinerja nalika nggunakake. fungsi. Topik iki ora bisa dibahas luwih jero kanthi ringkes, mula aku bakal ninggalake link menyang artikel sing bisa mbantu sampeyan nyilem topik iki.Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 9

81. Apa sifat utama transaksi?

Topik kasebut diarani Stream API, nanging pitakonan babagan transaksi kasebut. Hmm... Kaping pisanan, ayo ngerteni apa transaksi kasebut. Transaksi minangka klompok operasi database sekuensial sing nggambarake unit logis kanggo nggarap data. A transaksi bisa rampung salah siji tanggung lan kasil, ngramut integritas data lan independen saka transaksi liyane mlaku ing podo karo, utawa ora bisa rampung ing kabeh, kang cilik ora duwe efek. Dadi, transaksi duwe papat sifat utama, sing diarani ACID . Ayo kang katon ing carane saben huruf singkatan iki stands for: A - Atomicity - atomicity - property iki njamin sing ora transaksi bakal sebagian direkam ing sistem. Kabeh sub-operasi bakal ditindakake, utawa ora ana sing bakal ditindakake ( kabeh utawa ora ana ). C - Konsistensi - konsistensi minangka properti sing njamin saben transaksi sing sukses mung ngrekam asil sing bener. Yaiku, iki minangka jaminan yen ana transaksi sing sukses, kabeh aturan lan watesan sing ditindakake sistem ing data tartamtu bakal ditindakake, yen ora, transaksi kasebut ora bakal rampung lan data ing sistem bakal bali menyang sadurunge. negara. I - Isolasi - isolasi minangka properti sing nyatakake yen sajrone eksekusi transaksi, transaksi paralel ora kena pengaruhe. Properti iki intensif sumber daya, mula biasane dileksanakake sebagian kanthi ngidini tingkat insulasi tartamtu sing ngrampungake masalah insulasi tartamtu. Kita bakal ngrembug babagan iki kanthi luwih rinci ing pitakonan sabanjure. Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 10D - Kekiatan - properti iki njamin yen pangguna wis nampa konfirmasi saka sistem sing transaksi wis rampung, kang bisa manawa owah-owahan sing wis digawe ora bakal dibatalake amarga sawetara Gagal. Tegese, sampeyan bisa yakin manawa sawetara jinis kegagalan sistem operasi ora bakal nindakake apa-apa kanggo data sampeyan yen sampeyan wis nampa konfirmasi yen wis rampung transaksi sampeyan.

82. Apa tingkat isolasi transaksi?

Kaya sing dakkandhakake sadurunge, nyedhiyakake isolasi ACID minangka proses intensif sumber daya. Mulane, properti iki sebagian wareg. Ana macem-macem tingkat isolasi, lan sing luwih dhuwur level kasebut, luwih gedhe pengaruhe ing produktivitas. Sadurunge pindhah menyang tingkat isolasi transaksi, kita kudu ndeleng macem-macem masalah isolasi transaksi sing ora cukup :
  • maca phantom - nalika sampel sing padha (query sing padha) bola-bali diarani ing transaksi sing padha, data sing ditampa beda-beda, sing kedadeyan amarga sisipan data dening transaksi liyane;

  • maca non-baleni - nalika sampel padha (query padha) wis bola-bali disebut ing transaksi padha, data ditampa beda-beda, kang dumadi amarga owah-owahan (nganyari) lan pambusakan data dening transaksi liyane;

  • maca reged - proses maca data sing ditambahake utawa diganti dening transaksi sing sabanjure ora dikonfirmasi (digulung maneh), yaiku. maca data sing ora bener;

  • nganyari ilang - nalika transaksi beda ngganti data sing padha ing wektu sing padha, kabeh owah-owahan kajaba sing pungkasan bakal ilang (kaya masalah "kondisi balapan" ing lingkungan multi-threaded).

Tingkat isolasi transaksi ditondoi dening masalah isolasi apa sing dilindhungi. Ayo nimbang ing wangun tabel tingkat insulasi lan masalah apa sing dilindhungi:
Tingkat isolasi Phantom maca Wacan sing ora bola-bali Wacan reged Nganyari ilang
SERIALIZED + + + +
REPEATABLE diwaca - + + +
MACA KOMITED - - + +
MACA UNCOMMITTED - - - +
NONE - - - -
Lan aja lali sisih liyane saka duwit receh: sing luwih dhuwur tingkat isolasi, transaksi maneh bakal njupuk kanggo proses (yen sawetara transaksi dileksanakake ing podo karo). Yen sampeyan pengin luwih jero babagan topik iki, kene ana artikel sing apik kanggo miwiti.

83. Apa bedane Statement lan PreparedStatement?

Lan ing kene ora ana transisi sing lancar kanggo fitur teknologi JDBC . Dadi, pisanan, ayo ngerteni apa sejatine Pernyataan kasebut . Iki minangka obyek sing digunakake kanggo ngasilake pitakon SQL. JDBC nggunakake telung jinis - Statement , PreparedStatement lan CallableStatement . Kita ora bakal ndeleng CallableStatement dina iki: ayo ngomong babagan prabédan antarane Statement lan PreparedStatement .
  1. Pranyatan digunakake kanggo nglakokake pitakon SQL sing prasaja tanpa parameter sing dilebokake kanthi dinamis. PrepareStatement digunakake kanthi kemampuan kanggo nglebokake paramèter input kanthi dinamis.

  2. Kanggo nyetel paramèter ing PreparedStatement, paramèter input ing panyuwunan ditulis minangka tandha pitakonan, supaya nilai banjur bisa dilebokake tinimbang nggunakake macem-macem setters, kayata setDouble () , setFloat () , setInt () , setTime () ... . Akibaté, sampeyan ora bakal nglebokake jinis data sing salah menyang pitakon sampeyan.

  3. PreparedStatement wis "precompiled" lan nggunakake caching, supaya eksekusi bisa rada luwih cepet tinimbang takon saka obyek Statement . Akibaté, pitakon SQL sing kerep dieksekusi ditulis minangka obyek PreparedStatement kanggo nambah kinerja .

  4. Statement rentan kanggo injeksi SQL, nalika PreparedStatement nyegah. Waca liyane babagan ngilangi injeksi SQL lan praktik paling apik liyane babagan keamanan Java ing artikel iki .

Yen sampeyan miwiti sinau teknologi nyambungake aplikasi Java menyang Database - JDBC, aku menehi saran supaya sampeyan miwiti artikel iki . Inggih, ing titik iki kita bakal mandheg dina iki.Analisis pitakonan lan wangsulan saka wawancara kanggo pangembang Jawa.  Bagean 8 - 11
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION