JavaRush /Blog Jawa /Random-JV /Top 13 pitakonan babagan serialisasi ing wawancara
Dmitry Vasilyev
tingkat
Саратов

Top 13 pitakonan babagan serialisasi ing wawancara

Diterbitake ing grup
Terjemahan artikel https://javarevisited.blogspot.com/2011/04/top-10-java-serialization-interview.html Apa serialisasi ing Jawa? Serialisasi minangka salah sawijining konsep penting sing arang banget digunakake minangka solusi kanggo nyimpen kahanan program lan mulane API iki asring diabaikan dening pangembang. Nanging, ing pengalamanku, serialisasi minangka topik sing penting banget ing wawancara basa Jawa. Meh saben Interview aku wis pinanggih duwe siji utawa loro pitakonan bab serialization, lan aku wis ndeleng calon aran ora nyaman bab lack of pengalaman ing wilayah iki sawise sawetara pitakonan ing topik iki. Padha ora ngerti carane serialize obyek ing Jawa, padha ora menowo karo conto saka serialization lan ora bisa nerangake mekanika sawijining karya, prabédan antarane transient lan variabel molah malih, padha ora ngerti carane akeh cara antarmuka Serializable. wis. Apa antarmuka panandha? Apa tujuane? Apa bedane implementasine Externalizable lan Serializable ing Jawa? Napa java ora ngganti Serializable karo @Serializable sawise ngenalake anotasi? Ing artikel iki, kita bakal nutupi pitakonan kanggo pamula lan pangembang majeng, sing bisa migunani kanggo kabeh wong: saka junior nganti pangembang senior. Umume proyek komersial nggunakake basis data, file sing dipetakan ing memori , utawa mung file datar kosong kanggo nyedhiyakake kekuwatan sing luwih gedhe, nanging sawetara sing gumantung ing proses serialisasi Jawa. Ing kasus apa wae, kiriman iki dudu tutorial - mung babagan pitakonan sing kudu dijlentrehake dhewe sadurunge arep wawancara Jawa lan kaget karo istilah sing ora dingerteni dhewe. Kanggo sing ora ngerti serialisasi Jawa babar pisan: “Serialization in Java yaiku proses sing digunakake kanggo serialize obyek ing Jawa kanthi nyimpen status obyek ing file kanthi ekstensi .ser lan nggawe maneh status obyek. saka berkas iki. Proses mbalikke iki diarani deserialization. sepulka Java Serialization API nyedhiyakake pangembang mekanisme standar kanggo serializing obyek nggunakake antarmuka Serializable lan Externalizable. Miturut cara, artikel iki minangka tutugan saka artikel sadurunge ( dudu aku, penerjemah, nanging penulis asli Inggris) : 20 pitakonan wawancara babagan pola desain lan 10 pitakonan wawancara babagan pola Singleton ing Jawa . Dadi, ayo padha lunga! Apa serialisasi ing Jawa? Serialisasi obyek ing Jawa yaiku proses sing digunakake kanggo ngowahi obyek menyang format binar sing bisa disimpen ing disk utawa dikirim liwat jaringan menyang mesin virtual Java liyane sing mlaku; proses mbalikke nggawe obyek saka stream biner disebut deserialization. Java nyedhiyakake API sing kalebu java.io.Serializable, java.io.Externalizable, ObjectInputStream lan ObjectOutputStream etc. Programer bebas nggunakake mekanisme serialisasi standar sing digunakake Jawa adhedhasar struktur kelas, nanging uga bisa nggunakake format binar khusus dhewe, sing asring dianjurake minangka praktik paling apik serialisasi amarga format binar serial dadi bagean saka API sing diekspor ing kelas. lan duweni potensi bisa ngilangi enkapsulasi ing Jawa sing diwenehake dening lapangan pribadi lan paket-pribadi . Umumé, informasi iki bakal cukup kanggo miwiti. Kepiye carane nggawe serialisasi kelas Jawa? Iku gampang banget. Kelas sampeyan mung kudu ngleksanakake antarmuka java.io.Serializable lan JVM bakal ngurus serializing obyek ing format standar. Kaputusan kanggo nggawe kelas serializable kudu digawe sedhela amarga, sanajan biaya short-term nggawe kelas serializable kurang, biaya long-term pinunjul lan duweni potensi mbatesi kemampuan kanggo nggawe modifikasi luwih kanggo implementasine. Iki kedaden amarga, kaya sembarang API umum, wangun serialized saka obyek dadi bagéan saka API umum, lan nalika sampeyan ngganti struktur kelas dening ngleksanakake antarmuka nambah, nambah utawa mbusak sembarang lapangan potensial bisa break serialization gawan. Nanging, iki bisa diminimalisir kanthi nggunakake format binar khusus, nanging isih mbutuhake akeh gaweyan kanggo njamin kompatibilitas mundur. Salah sawijining conto carane serialisasi bisa mbatesi kemampuan sampeyan kanggo ngowahi kelas yaiku kolom SerialVersionUID. Yen sampeyan ora kanthi tegas ngumumake SerialVersionUID, mesin virtual ngasilake adhedhasar struktur kelas, sing gumantung ing antarmuka sing ditindakake dening kelas lan sawetara faktor liyane sing bisa diganti. Ayo dadi ngomong sampeyan ngleksanakake antarmuka beda minangka gantos kanggo JVM, kang bakal generate SerialVersionUID beda kanggo versi anyar saka file kelas, lan nalika nyoba kanggo mbukak obyek lawas serialized dening versi lawas saka program, sampeyan bakal entuk. InvalidClassException. Pitakonan 1) Apa bedane antarmuka Serializable lan Externalizable ing Jawa? Iki minangka pitakonan wawancara serialisasi Jawa sing paling kerep ditakoni. Antarmuka Externalizable menehi cara writeExternal () lan readExternal (), sing menehi kita keluwesan kanggo kontrol serialization tinimbang gumantung ing mekanisme standar. Implementasine antarmuka Externalizable sing tepat bisa ningkatake kinerja aplikasi kanthi signifikan. Pitakonan 2) Carane akeh cara ora Serializable duwe? Yen ora ana cara, apa tujuane antarmuka Serializable? Antarmuka serializable ana ing paket java.io lan dadi inti saka mesin serialisasi Jawa. Ora ana cara lan uga diarani antarmuka panandha ing Jawa. Nalika kelas ngleksanakake antarmuka java.io.Serializable, dadi serializable. Iku prasaja. Pitakonan 3) Apa serialVersionUID? Apa sing kedadeyan yen sampeyan ora nemtokake? Salah sawijining pitakonan wawancara serialisasi Jawa sing paling disenengi. SerialVersionUID minangka pengenal sing dilebokake ing obyek nalika serialisasi, biasane kode hash obyek kasebut. Sampeyan bisa nggunakake alat serialver kanggo njaluk serialVersionUID obyek serialized. SerialVersionUID digunakake kanggo kontrol versi obyek. Sampeyan uga bisa nemtokake serialVersionUID ing file kelas kanthi manual. Akibat saka ora nemtokake serialVersionUID iku yen sampeyan nambah utawa ngganti sembarang lapangan ing kelas, kelas wis serialized ora bisa mbalekake amarga serialVersionUID kui kanggo kelas anyar bakal beda saka lapangan padha obyek serialized lawas. Proses serialization Jawa gumantung ing serialVersionUID bener kanggo mulihake negara obyek serialized lan mbuwang java.io.InvalidClassException yen ana mismatch. Kanggo mangerteni sing luwih lengkap babagan serialversionuid, ndeleng kene . Pitakonan 4) Nalika serializing, sampeyan pengin sawetara anggota ora serialized? Kepiye carane entuk iki? Pitakonan wawancara serialisasi liyane sing asring ditakoni. Kadhangkala wong uga takon carane variabel transien digunakake, apa variabel transien lan statis serialized utawa ora, lan liya-liyane, dadi yen sampeyan ora pengin lapangan apa wae dadi bagean saka negara obyek, nyatakake minangka statis utawa transient gumantung. ing kabutuhan, lan iku ora bakal klebu ing proses serialization Jawa. Pitakonan 5) Apa sing kedadeyan yen salah sijine anggota kelas ora ngleksanakake antarmuka Serializable? Salah sawijining pitakonan prasaja babagan proses serialisasi ing Jawa. Yen sampeyan nyoba kanggo serialize obyek saka kelas sing nindakake Serializable, nanging obyek kalebu referensi kanggo kelas sing ora Serializable, banjur NotSerializableException bakal di buwang ing runtime, lan mulane aku tansah sijine SerializableAlert (bagean komentar ing sandi . kode), salah sawijining teknik ngomentari kode sing paling apik yaiku nglatih pangembang kanggo ngelingi kasunyatan iki nalika nambah lapangan anyar ing kelas Serializable. Pitakonan 6) Yen kelas bisa serializable nanging superclass ora, apa sing bakal dadi negara variabel conto sing diwarisake saka superclass sawise deserialization? Proses serialisasi Jawa mung diterusake ing hierarki obyek anggere kelas kasebut ngetrapake antarmuka Serializable lan nilai-nilai variabel sing diwarisake saka superclass bakal diwiwiti kanthi nelpon konstruktor superclass sing ora bisa serial sajrone proses deserialization. Sawise chain konstruktor wis diwiwiti, ora ana cara kanggo mungkasi, supaya sanajan kelas sing luwih dhuwur ing hirarki (ora) ngleksanakake antarmuka Serializable , konstruktor bakal dieksekusi. Pitakonan wawancara serialisasi iki bisa uga angel banget, nanging yen sampeyan wis ngerti konsep kunci, ora bakal angel. Pitakonan 7) Apa sampeyan bisa ngatur proses serialisasi utawa ngilangi proses serialisasi standar ing Jawa? Jawabane ya, sampeyan bisa. Kita kabeh ngerti yen kanggo serialize obyek, diarani ObjectOutputStream.writeObject (saveThisObject) lan kanggo maca obyek, diarani ObjectInputStream.readObject (), nanging ana siji liyane sing diwenehake dening Mesin Virtual Jawa - nemtokake rong cara iki. ing kelas sampeyan. Yen sampeyan nemtokake ing kelas, JVM bakal nelpon loro cara iki tinimbang nggunakake mekanisme serialization standar. Ing kene sampeyan bisa ngatur prilaku serialisasi lan deseralisasi obyek kanthi nindakake tugas preprocessing utawa postprocessing. Wigati dimangerteni manawa cara kasebut kudu pribadi kanggo ngindhari warisan, overriding, utawa overloading. Amarga mung Java Virtual Machine sing bisa nelpon cara pribadi, integritas kelas sampeyan bakal dilestarekake lan serialisasi bakal bisa digunakake kaya biasane. Mratelakake panemume, iki minangka salah sawijining pitakonan paling apik sing bisa dijaluk ing wawancara Serialisasi Jawa. Pitakonan tindak lanjut sing apik yaiku: kenapa sampeyan kudu nyedhiyakake formulir serial khusus kanggo obyek sampeyan? Pitakonan 8) Upaminipun superclass saka kelas anyar ngleksanakake antarmuka Serializable, carane kita bisa supaya serializing kelas anyar? Salah sawijining pitakonan wawancara sing angel babagan Serialisasi ing Jawa. Yen superclass kelas wis ngleksanakake antarmuka Serializable ing Jawa, banjur kelas turunan uga Serializable, wiwit sampeyan ora bisa ora ngleksanakake antarmuka tiyang sepah, lan iku ora tenan bisa kanggo nggawe kelas Non Serializable. Nanging, ana cara kanggo ngindhari serialisasi kanggo kelas anyar iki. Kanggo nindakake iki, sampeyan kudu ngleksanakake writeObject () lan readObject () cara lan uncalan NotSerializableException saka cara iki. Pitakonan iki biasane ditakoni minangka pitakonan tambahan nalika wawancara maju. Soal 9) Tata cara apa wae kang digunakake sajrone proses serialisasi lan deseralisasi ing basa Jawa? Iki minangka pitakonan sing umum banget ing serialisasi. Apa sing dikandhakake wawancara ing kasus iki? Apa sampeyan menowo karo nggunakake readObject (), writeObject (), readExternal () lan writeExternal () utawa ora. serialization Jawa wis rampung dening kelas java.io.ObjectOutputStream. Kelas iki minangka stream sing disaring sing dibungkus stream byte tingkat ngisor kanggo nangani mesin serialisasi. Kanggo nyimpen sembarang obyek nggunakake mekanisme serialization, kita nelpon ObjectOutputStream.writeObject (saveThisObject) lan deserialize obyek sing, kita nelpon cara ObjectInputStream.readObject (). Nelpon cara writeObject () miwiti proses serialization. Siji bab penting kanggo Wigati bab cara readObject () iku digunakake kanggo maca bait lan nggawe lan bali obyek saka bita, kang siji kudu matak kanggo jinis bener. Pitakonan 10) Upaminipun sampeyan duwe kelas sing wis serialized lan disimpen, lan banjur ngowahi kelas kanggo nambah lapangan anyar. Apa sing kedadeyan yen sampeyan deserialize obyek sing wis serialized? Iku gumantung ing kelas wis serialVersionUID dhewe utawa ora. Kaya sing dingerteni saka pitakonan ing ndhuwur, yen kita ora nyedhiyakake serialVersionUID ing kode kita, kompiler java bakal ngasilake dhewe lan biasane padha karo kode hash obyek kasebut. Sawise nambah sembarang lapangan anyar, ana kasempatan sing serialVersionUID anyar kui kanggo versi kelas ora cocog obyek wis serialized, kang API bakal uncalan java.io.InvalidClassException. Menawi mekaten, dianjurake kanggo duwe serialVersionUID dhewe ing kode, kang tansah padha kanggo kelas padha. Pitakonan 11) Apa owah-owahan sing kompatibel lan ora kompatibel ing mekanisme serialisasi Jawa? Masalah nyata yaiku ngganti struktur kelas kanthi nambahake lapangan, metode utawa mbusak lapangan utawa metode kanthi obyek sing wis serial. Miturut spesifikasi Java Serialization, nambahake lapangan utawa metode apa wae sing cocog karo owah-owahan lan ganti. Kanggo dhaptar lengkap owah-owahan sing kompatibel lan ora kompatibel, aku saranake maca Spesifikasi Serialisasi Jawa. Pitakonan 12) Apa kita bisa nransfer obyek serial liwat jaringan? Ya, sampeyan bisa ngliwati obyek serial liwat jaringan amarga obyek serial Jawa iku kumpulan bita sing bisa liwati ing sembarang cara. Sampeyan uga bisa nyimpen obyek serialized ing disk utawa ing database minangka Blob a. Pitakonan 13) Jinis variabel apa wae sing ora serialisasi sajrone serialisasi Jawa? Pitakonan iki kadhangkala dijaluk kanthi beda, nanging tujuane padha: kanggo ngerteni apa pangembang Jawa ngerti spesifik babagan serializing variabel statis lan transien. Wiwit variabel statis kagungane kelas lan dudu obyek, padha ora bagean saka negara obyek, supaya padha ora tetep sak proses serialization Jawa. Amarga serialisasi Jawa mung nyimpen kahanan obyek lan dudu obyek kasebut, variabel transien uga ora kalebu ing proses serialisasi lan dudu bagean saka negara serialisasi obyek kasebut. Sawise pitakonan iki, bisa uga pewawancara bakal takon: Yen sampeyan ora nyimpen nilai-nilai variabel kasebut, banjur apa nilai variabel kasebut sawise deserializing lan nggawe ulang obyek iki? Lan iki, kanca-kanca, pikirake dhewe :) Artikel asline ana ing kene .
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION