Pertanyaan & Jawaban Wawancara Serialisasi Java [Untuk Pemula & Berpengalaman]
Diterbitkan: 2020-09-25Java adalah salah satu bahasa pemrograman terbaik di dunia. Kami cukup beruntung melihat Java berkembang dari waktu ke waktu dan menjadi bahasa yang sangat populer seperti yang kita kenal sekarang. Perbaikan ini, yang dibuat di Java, menyebabkan dimasukkannya beberapa fitur yang sangat penting yang menentukan bagaimana kita menulis program hari ini. Salah satu fitur tersebut adalah Serialization.
Pada intinya, serialisasi hanyalah sebuah mekanisme yang digunakan untuk menyimpan suatu objek ke dalam memori. Jadi, ketika kita mengatakan bahwa kita membuat serial sebuah objek, kita berarti bahwa kita mengubah objek tersebut dari statusnya, yang menjadi aliran byte. Konversi dari keadaan aslinya ke aliran byte ini membuat penulisan objek ini ke file menjadi mudah.
File ini kemudian dapat diangkut ke mana pun kita inginkan, dan untuk mengakses objek dan fitur-fiturnya, yang perlu kita lakukan hanyalah melakukan de-serialize objek. De-serialisasi, seperti namanya, adalah kebalikan dari serialisasi. Di sini, kami mengonversi aliran byte ke status asli objek untuk menggunakan objek.
Serialisasi memungkinkan pengembang untuk menulis kode mereka dengan tingkat fleksibilitas tertentu. Kemampuan untuk mengambil objek dan menggunakannya dengan properti aslinya di tempat lain sangat penting dalam alur kerja saat ini. Tidak heran perekrut ingin karyawan potensial mereka tahu lebih banyak tentang serialisasi objek di java.
Apakah Anda telah menggunakan serialisasi dalam proyek Anda atau tidak, Anda tidak bisa begitu saja mengabaikan pentingnya hal itu. Jadi, untuk membantu Anda dalam upaya Anda menjadi pengembang java profesional, kami telah mengumpulkan beberapa pertanyaan wawancara serialisasi java yang menarik, yang akan Anda temukan di bawah.
Pertanyaan Wawancara Serialisasi Java
Q1. Apa yang dimaksud dengan Serialisasi dalam konteks bahasa pemrograman Java?

Jwb. Definisi serialisasi mungkin yang paling mendasar namun salah satu pertanyaan yang paling sering diajukan dalam konteks serialisasi Java. Anda harus menjawab pertanyaan ini hampir semua wawancara. Oleh karena itu, Anda harus memiliki definisi yang baik tentang serialisasi Java yang ditanamkan dalam pikiran Anda. Jadi, serialisasi tidak lain adalah bagaimana sebuah objek yang ditulis dalam Java diubah menjadi aliran byte.
Tujuan utama dari ini adalah untuk memungkinkan objek untuk ditransfer ke komputer lain atau untuk menyimpan status objek ke dalam file atau menyimpan status objek ke dalam database. Setelah objek berhasil diserialisasi, maka kita dapat dengan cepat mengembalikan objek ke kejayaannya hanya dengan melakukan de-seri objek.
Q2. Apa cara di mana kita bisa membuat serial objek di Jawa? Tulis program untuk membuat serial dan de-serialize objek.
Jwb. Dalam sebuah wawancara, jika Anda mampu menambah pengetahuan teoretis Anda dengan kemampuan menulis sebuah program, peluang seleksi Anda secara otomatis meningkat. Juga diberikan bahwa dalam wawancara apa pun, Anda akan ditugaskan untuk menulis program dasar (setidaknya program dasar), yang menunjukkan bagaimana serialisasi dan de-serialisasi terjadi. Sebelum Anda pergi dan menulis program ini sendiri, Anda perlu mengingat satu hal penting tentang serialisasi objek di java.
Untuk membuat serial objek, Anda perlu menulis objek yang menggunakan antarmuka kelas java.io.Serializable. Anda perlu memastikan bahwa Anda menggunakan antarmuka Marker untuk objek kelas, yang ingin Anda ceritakan bersambung. Artinya kelas yang dimaksud tidak boleh memiliki metode tertulis di kelas. Kelas ini juga perlu memberi tahu Java Virtual Machine bahwa objek berikutnya harus mengubah bentuk dan membentuk aliran byte.
Kode untuk serialisasi ditulis di bawah ini.
OutputStream fout = new FileOutputStream(“ser.txt”);
ObjectOutput oout = baru ObjectOutputStream(fout);
Sistem. out .println("Proses serialisasi telah dimulai, membuat serial objek karyawan...");
oout.writeObject(objek1);
Kode untuk de-serialisasi ditulis di bawah ini.
InputStream fin= new FileInputStream(“ser.txt”);
ObjectInput oin= new ObjectInputStream(fin);
Sistem. out .println("Proses DeSerialization telah dimulai, menampilkan objek karyawan...");
karyawan emp;
emp=(Karyawan) oin.readObject();
Pelajari: Alokasi Memori di Java: Semua yang Perlu Anda Ketahui
Q3. Apa perbedaan antara antarmuka untuk Serialization dan Externalizable?
Jwb. Pertanyaan ini bisa berarti perbedaan antara Anda dipilih untuk pekerjaan itu atau tidak. Misalkan Anda berhasil menjawab pertanyaan ini dengan cara yang sangat komprehensif. Dalam hal ini, pewawancara pasti akan terkesan dengan pengetahuan Anda tentang subjek ini, dan kemungkinan pemilihan Anda untuk pekerjaan itu secara otomatis akan meroket. Anda akan menemukan semua perbedaan kritis dalam tabel di bawah ini:
Properti di mana kami membandingkan kedua metode ini. | SERIALISASI | EKSTERNALISASI |
Metode yang ada di kelas dua antarmuka yang berbeda ini | Ini terjadi pada antarmuka penanda. Antarmuka penanda tidak dapat memiliki fungsi anggota apa pun. Mereka harus kosong kecuali bahwa mereka harus memiliki instruksi yang ada di dalamnya, yang memberi tahu Java Virtual Machine bahwa objek kelas ini harus diubah menjadi aliran byte. | Ini bukan antarmuka pembuat yang berarti memiliki beberapa metode anggota. Ini memiliki metode yang disebut writeExternal() dan readExternal() |
Apa cara serialisasi default mereka? | Untuk serializable, Anda akan menemukan cara default di mana Anda dapat membuat serial objek yang Anda tulis. Yang perlu Anda lakukan sebagai seorang programmer adalah menemukan cara di mana Anda dapat mengintegrasikan antarmuka ini ke dalam program Anda. | Anda tidak akan menemukan cara default untuk mengimplementasikan serialisasi. Anda perlu menulis metode Anda sendiri atau mengganti yang sudah ada. |
Bagaimana cara mereka mengimplementasikan proses serialisasi? | Anda dapat menyesuaikan cara serialisasi diimplementasikan dalam antarmuka ini. Namun, Anda tidak dapat mengganti metode yang ada. Anda perlu menerapkan metode ini ke dalam kelas Anda sendiri untuk mendapatkan tingkat kebebasan yang Anda inginkan. | Dalam metode ini, Anda perlu mengganti metode default. Jadi jika Anda ingin menerapkan cara yang disesuaikan untuk membuat serial objek, Anda harus memilih antarmuka ini daripada cara default Serializable. |
Apa tingkat kontrol yang mereka tawarkan dalam proses serialisasi, | Anda akan menemukan ruang gerak kecil ketika Anda menggunakan antarmuka ini. Anda juga perlu menulis fungsi default ke dalam kelas Anda untuk mendapatkan hasil maksimal dari metode ini. Namun, Anda tidak wajib melakukannya, artinya Anda masih dapat membuat serial objek dengan antarmuka ini tanpa menulis fungsi default ke dalam kelas kustom Anda. | Antarmuka ini memberikan kontrol yang sangat baik atas seluruh proses. Untuk alasan itu saja, jika Anda menggunakan antarmuka ini, Anda wajib menulis kedua metode tersebut ke dalam kelas khusus Anda. |
Apa konstruktor yang digunakan saat menggunakan de-serialisasi, | Tidak ada konstruktor yang dipanggil selama proses serialisasi. | Ada panggilan yang dibuat ke kontraktor saat membuat serial objek menggunakan antarmuka ini. |
Q4. Tulis sebuah program di mana Anda menerapkan proses kustomisasi serialisasi dan de-serialisasi.

Jwb. Inilah bagian yang sulit. Ini adalah pertanyaan di mana Anda dapat menunjukkan semua pengetahuan pertanyaan sebelumnya melalui skenario kasus penggunaan praktis. Kemampuan Anda untuk dapat menulis program-program ini dengan jelas akan menunjukkan keahlian Anda dan membantu Anda mendapatkan pekerjaan yang Anda inginkan.
Ditulis di bawah ini Anda akan menemukan cara khusus untuk menulis metode writeObject().
private void writeObject(ObjectOutputStream os) {
Sistem. out .println(“Dalam, metode writeObject().”);
coba {
os.writeInt( ini .id);
os.writeObject( ini .nama );
} tangkap (Pengecualian e) {
e.printStackTrace();
}
}
Ditulis di bawah ini Anda akan menemukan implementasi kustom dari de-serliasation.
private void readObject(ObjectInputStream ois) {
Sistem. out .println(“Dalam, metode readObject().”);
coba {
id=ois.readInt();
nama=(String)ois.readObject();
} tangkap (Pengecualian e) {
e.printStackTrace();
}
}
Q5. Bagaimana Anda akan mengimplementasikan Serialization dan de-serialization menggunakan antarmuka Externalizable?
Jwb. Untuk mengimplementasikan serialisasi dan de-serialisasi menggunakan antarmuka yang dapat dieksternalisasi, Anda harus menulis sendiri fungsi writeExternal() dan readExternal(). Anda akan menemukan kode untuk keduanya tertulis di bawah ini.
Menyesuaikan metode writeExternal()
publik kosong writeExternal (ObjectOutput oo) melempar IOException {
Sistem. out .println("di writeExternal()");
oo.writeInt(id);
oo.writeObject(nama);
}
Menyesuaikan metode readExternal()
publik kosong readExternal (ObjectInput in) melempar IOException, ClassNotFoundException {
Sistem. out .println("di readExternal()");
ini .id=in.readInt();
ini .name=(String)in.readObject();
}
Baca tentang: Python vs Java pada tahun 2020: Mana yang Harus Anda Pilih?
Q6. Katakanlah Anda tidak ingin variabel tertentu diserialkan. Apa yang akan Anda lakukan untuk mencegah variabel anggota yang tidak ingin Anda serialkan?
Jwb. Ini adalah pertanyaan yang sangat konseptual. Anda perlu memiliki pengetahuan tentang variabel statis dan non-statis untuk dapat menjawab pertanyaan ini dengan cepat. Misalkan Anda ingin variabel tertentu tidak diserialisasi. Dalam hal ini, Anda harus membuatnya statis karena nilai variabel statis apa pun tidak dapat diubah, dan karenanya karena alasan ini, variabel tersebut juga tidak akan diserialisasi.
Q7. Apa yang Anda maksud dengan serialVersionUID?
Jwb. Untuk setiap kelas yang ingin kita serialkan akan diberikan nomor kelas. Nomor ini, yang diberikan ke setiap kelas, yang akan diserialkan, disebut serialVersionUID. ID ini penting karena, pada saat mendapatkan kembali objek dalam bentuk aslinya, Java Virtual Machine mencari ID, yang terkait dengan objek.
Kemudian dengan cepat merujuk ke ID kelas yang seharusnya diserialisasi. Ketika menemukan kelas yang sesuai dengan objek ini, proses de-serialisasi dimulai.
Q8. Katakanlah kita lupa menyebutkan atau mendefinisikan serialVersionUID. Apa dampak dari tindakan ini terhadap program yang telah kami tulis?
Jwb. Pertanyaan ini adalah pertanyaan mendasar lainnya. Anda akan membutuhkan sepotong pengetahuan yang baik untuk dapat menjawab pertanyaan ini dengan benar. Hal pertama yang perlu kita klarifikasi adalah bahwa serialVersionUID digunakan untuk melakukan kontrol versi objek dalam pertanyaan. Katakanlah tidak ada ID yang ditentukan untuk kelas tersebut, sehingga kompiler Java tidak akan tahu kelas mana yang dimiliki objek tersebut. Pada saat dijalankan atau saat Anda membuat serial objek, tidak akan ada kesalahan apa pun karena ID apa pun tidak perlu ditentukan.

Namun, ketika kita ingin aliran data diubah menjadi objek, maka compiler Java akan membuat kesalahan. Kompiler tidak akan mengetahui kelas mana yang dimiliki objek, dan karenanya tidak akan dapat menemukan dan menghubungkan semua fungsi anggota dan variabel yang terkait dengan objek ini. Karena kompiler akan terjebak dalam langkah ini, itu akan menimbulkan kesalahan ketidakcocokan serialVersionUID (java.io.InvalidClassException).
Q9. Jika kita tidak dapat membuat serial, atau metode serialisasi tidak tersedia, apakah ada metode lain yang dapat digunakan untuk mentransfer objek yang kita tulis melalui jaringan?
Jwb. Ada beberapa metode di mana kita dapat mentransfer objek yang kita tulis melalui jaringan. Anda akan menemukan beberapa di antaranya tercantum di bawah ini.
- Anda dapat mencoba mengonversi objek menjadi file JSON. Tidak terlalu sulit untuk mengubah objek menjadi string JSON, dan ketika Anda telah menulis file JSON, mengubahnya menjadi file kode juga tidak terlalu sulit. Jadi, Anda dapat mentransfer string JSON, yang Anda tulis melalui jaringan.
- Anda juga dapat menggunakan alat Hibernate (ini adalah alat ORM). Alat ini memungkinkan objek untuk bertahan dalam database. Kemudian objek yang ditulis juga bisa sangat mudah dibaca nantinya.
- Anda juga dapat menggunakan teknologi XML. Anda dapat mencoba mengonversi objek menjadi file XML, lalu Anda dapat dengan cepat mentransfer file tersebut melalui jaringan.
Harus Dibaca: 24 Pertanyaan & Jawaban Wawancara Java Teratas
Membungkus
Jika Anda tertarik untuk mempelajari lebih lanjut tentang Java, OOP & pengembangan perangkat lunak full-stack, lihat Diploma PG upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Full-stack yang dirancang untuk profesional yang bekerja dan menawarkan 500+ jam pelatihan yang ketat, 9 + proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan papan atas.