Pertanyaan & Jawaban Wawancara Hashmap [Untuk Pemula & Berpengalaman]

Diterbitkan: 2020-09-24

Kelas java.util.HashMap sejauh ini merupakan salah satu perpustakaan Java yang paling penting. Jarang ada proyek yang ditulis dalam java, dan tidak menggunakan library HashMap dalam implementasinya. Ini adalah cara struktur data ini diimplementasikan, yang membuat ini hampir tak tergantikan untuk semua program terkait Java. HashMap, dalam definisinya, sangat sederhana. HashMap adalah struktur data yang diimplementasikan menggunakan pendekatan yang sangat tabular.

Benar dikatakan bahwa jika hanya ada satu struktur data, itu harus HashMap. Tidak hanya ini sangat berguna tetapi juga sangat efisien waktu. Pencarian sederhana di HashMap hanya membutuhkan waktu sekitar O(1) (artinya semua pencarian di HashMap dilakukan dalam waktu yang konstan). Anda akan menemukan banyak implementasi HashMap dalam bahasa pemrograman Java, seperti HashTable, konkurenhashmaps, dll. Namun, jika Anda mencari implementasi umum, Anda tidak boleh menyimpang jauh dari HashMap dasar.

Masing-masing implementasi HashMap ini hadir dengan serangkaian fitur dan kasus penggunaannya sendiri. Jika Anda ingin urutan penulisan pemetaan dipertahankan, Anda harus menggunakan Linked HashMap. Jika Anda ingin pemetaan Anda diurutkan, maka Anda harus menggunakan implementasi TreeMap dari HashMap, yang melakukan penyortiran untuk Anda.

Dengan cara yang sama, jika Anda mencari tabel Hash yang kebetulan thread-safe, yang juga dapat digunakan dalam aplikasi bersamaan sambil menjaga skalabilitas, Anda akan melihat HashMap bersamaan.

Seperti yang Anda lihat, ada berbagai cara di mana Anda dapat menggunakan HashMap. Untuk benar-benar mengetahui pentingnya HashMap, Anda harus melihat pertanyaan wawancara untuk setiap profil pekerjaan rekayasa perangkat lunak. Anda tidak akan dapat mengoptimalkan waktu dengan baik jika Anda tidak mengetahui cara mengimplementasikan HashMap dengan benar. Jadi, jika Anda seorang programmer, Anda tidak bisa lepas dari mempelajari seluk beluk HashMap. Jadi kami telah mencantumkan beberapa pertanyaan wawancara hashmap yang luar biasa di bawah ini, yang akan membantu Anda mempersiapkan diri untuk wawancara berikutnya.

Pelajari kursus ilmu data online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Daftar isi

Pertanyaan & Jawaban Wawancara Hashmap

Q1. Bagaimana Anda akan menggunakan metode put() dari HashMap di Java?

Jwb. Metode put() hanya bekerja dengan memanfaatkan prinsip yang dikenal sebagai hashing. Anda akan menggunakan fungsi ini untuk menyimpan objek yang dimaksud ke dalam backend (yang merupakan array memori). Anda harus menggunakan fungsi lain bersama dengan fungsi put() ini untuk dapat memastikan posisi yang tepat dari objek ini di backend. Fungsi hashcode() digunakan sebagai fungsi pembantu untuk put() dengan cara yang telah kita jelaskan sebelumnya.

Jadi, cara kedua fungsi ini bekerja bersama adalah mereka pergi dan mencari kunci yang tersedia dan lokasi memori di backend. Jika mereka bertabrakan, maka objek yang memiliki kedua nilai (artinya nilai dari kedua kunci dan nilai) kemudian ditambahkan ke dalam implementasi dinamis dari daftar, juga dikenal sebagai daftar tertaut. Daftar yang disukai di sini disimpan di lokasi memori, yang ditemukan sebelumnya.

Q2. Apa kebutuhan dasar yang harus dimiliki suatu objek agar dapat digunakan sebagai kunci atau nilai dari HashMap?

Jwb. Baik kunci maupun nilai yang kita gunakan di HashMap apa pun dan implementasinya juga harus memiliki dua fungsi ini yang tertulis di dalamnya. Nama kedua fungsi ini adalah equals() dan hashcode(). Fungsi yang memiliki nama kode hash() digunakan saat kita memasukkan nilai kunci ke dalam HashMap apa pun. Pada saat yang sama, fungsi equals() dipanggil hanya ketika kita mencoba untuk mendapatkan kembali nilai yang telah disimpan di HashMap.

Q3. Katakanlah Anda kehilangan jejak kunci yang telah Anda gunakan di HashMap Anda. Kunci berikutnya yang ingin Anda tambahkan sudah ada di HashMap. Menurut Anda apa yang akan terjadi dalam kasus ini?

Jwb. Jika Anda merasa harus ada kesalahan, Anda tidak akan salah jika kita tidak membicarakan HashMap. Namun, jika Anda menggunakan HashMap dan Anda kebetulan memasukkan kunci yang nilainya sudah ada di hashmap, kompiler java tidak akan menimbulkan kesalahan apa pun. Sebaliknya, apa yang akan terjadi adalah bahwa kompiler hanya akan pergi dan menemukan nilai yang terkait dengan kunci yang Anda masukkan, dan itu hanya akan memperbarui nilai di sana.

Jika Anda menggunakan fungsi put() untuk menambahkan nilai ke dalam hashmap, nilai kembalian fungsi ini akan menjadi nilai lama yang terkait dengan kunci tersebut. Jadi, mari kita asumsikan bahwa untuk kunci A, Anda memiliki nilai tersimpan 1. Jika sekarang Anda memasukkan nilai A menjadi, katakanlah 50, maka nilai yang akan dikembalikan oleh fungsi put() akan menjadi 1 , dan nilai akhir yang disimpan dalam kunci A adalah 50.

Q4. Jika diperlukan untuk menyimpan nilai nol. Apakah Anda dapat menggunakan HashMap dalam kasus itu?

Jwb. Ya, kami akan dapat menggunakan hashmap dalam kasus itu tanpa masalah karena hashmaps tidak mengurangi nilai yang dapat Anda simpan. Anda dapat menyimpan nilai nol sebanyak yang diinginkan hati Anda di peta hash apa pun.

Q5. Bagaimana tabrakan ditangani dengan implementasi hashmap di Jawa?

Jwb. Pustaka kode java.util.HashMap menggunakan metode chaining untuk menangani tabrakan. Cara kerja rantai ini adalah setiap entri baru ke peta hash, yang berisi pasangan kunci dan nilai akan disimpan dalam daftar tertaut, dan daftar ini kemudian akan disimpan di tempat data peta hash yang ada berada (lokasi bucket) .

Jika semua kunci yang Anda miliki di hashmap Anda ternyata memiliki kode hash yang sama, maka hashmap Anda tidak akan lagi menjadi hashmap. Ini akan diubah menjadi daftar tertaut. Waktu pencarian akan bertambah untuk orde satu (o(1)), yaitu waktu konstan, ke orde N (O(N)) yaitu waktu linier.

Q6. Apakah Anda dapat menyimpan kunci yang memiliki nilai nol dalam implementasi hashmap Java?

Jwb. Ya, dalam implementasi Java dari hashmap, Anda akan dapat menyimpan kunci dengan nilai nol. Tetapi Anda hanya dapat menyimpan satu kunci seperti itu, yang akan selalu disimpan di awal daftar ember. Hashmap tidak akan memanggil fungsi kode hash() di sini karena jika fungsi itu digunakan pada kunci nol, itu akan menimbulkan kesalahan Pengecualian Null Pointer. Anda harus menggunakan fungsi get alih-alih menggunakan nilai null sebagai kunci jika Anda ingin indeks pertama hashmap Anda dikembalikan kepada Anda.

Baca: Pengurutan dalam Struktur Data: Kategori & Jenis

Q7. Struktur data mana yang menurut Anda dirancang untuk ditiru oleh hashmap?

Jwb. Hashmap seharusnya meniru tampilan dan fungsionalitas struktur data tabel hash. Struktur data tabel hash adalah pilihan ideal Anda jika Anda ingin menyimpan nilai dalam bentuk pasangan kunci dan nilai. Alasan utama mengapa tabel hash ini lebih disukai adalah karena waktu pencarian. Jadi, jika Anda memiliki kunci yang ingin Anda cari, maka hanya dalam urutan satu atau waktu yang konstan, Anda akan bisa mendapatkan kembali nilai yang Anda inginkan.

Q8. Karena hashmap bukan salah satu dari struktur data inti seperti struktur atau array. Menurut Anda apa yang terjadi di bawah tenda setiap kali Anda membuat hashmap? Kombinasi struktur data mana yang menurut Anda memberi kami peta hash?

Jwb. Meskipun hashmap sebenarnya mewakili sebuah hashtable, tetapi di bawah tenda, itu tidak langsung diimplementasikan. Kami menggunakan dua struktur data terkenal untuk menghirup kehidupan ke dalam peta hash. Kami menggunakan daftar tertaut dan array. Daftar tertaut digunakan untuk menyimpan pasangan kunci dan nilai secara dinamis, dan larik digunakan untuk menyimpan semua daftar tertaut ini ke dalamnya; bersama-sama, mereka membentuk hashmap.

Dari Java 8, jika daftar tertaut menjadi cukup besar, alih-alih daftar tertaut, Java mengimplementasikan pohon pencarian biner sebagai gantinya. Perubahan ini dilakukan untuk menghemat waktu dan meningkatkan kinerja hashmap secara keseluruhan.

Baca Juga: Pertanyaan Wawancara Ilmu Data

Q9. Jika kita ingin menyimpan beberapa nilai di bawah kunci yang sama, menurut Anda apakah itu mungkin dalam implementasi hashmap yang ada di Jawa?

Jwb. Tidak, Anda tidak akan dapat menyimpan kunci duplikat di peta hash. Jika Anda mencoba menyimpan nilai baru dalam kunci yang sudah ada di peta hash, maka peta hash hanya akan menghapus nilai yang sebelumnya disimpan di kunci itu dan menggantinya dengan yang baru.

Ukuran hashmap, dalam hal ini, tidak akan berubah, artinya tidak akan ada penambahan kunci ke dalam hashmap. Fitur ini adalah salah satu alasan kami menggunakan fungsi keyset() untuk mendapatkan kembali semua kunci hashmap dan bahwa fungsi ini mengembalikan satu set dan bukan koleksi (karena dalam satu set semua nilai harus unik).

Q10. Apakah Anda dapat menyimpan nilai duplikat di HashMap?

Jwb. Ya, Anda akan dapat menyimpan nilai duplikat di hashmap. Itulah alasan ketika Anda mengambil semua nilai dari hashmap. Kemudian alih-alih mendapatkan satu set, kami mendapatkan koleksi. Itu tidak memberikan nilai dalam bentuk daftar karena pemesanan tidak dijamin.

Q11. Dalam implementasi Java dari hashmap, apakah ini aman untuk thread?

Jwb. Tidak, vanilla Hashmap sama sekali tidak aman untuk thread di Jawa. Idealnya, Anda harus menghindari membagikan peta hash ke utas yang dapat mengubah nilai dan mengedit peta hash dalam bentuk atau bentuk apa pun. Namun, Anda dapat menggunakan hashmap hanya-baca dan kemudian memasukkannya ke dalam utas. Dengan begitu, nilai-nilai yang terkandung di dalamnya tidak akan berubah.

Q12. Menurut Anda apa yang akan terjadi jika kita menggunakan hashmap dalam aplikasi yang menggunakan multi thread?

Jwb. Jika Anda melewatkan peta hash ke aplikasi yang menggunakan lebih dari satu utas, dan masing-masing utas ini dapat mengubah, menambah, atau menghapus nilai yang disimpan di peta hash, maka data internal yang digunakan untuk membuat peta hash akan rusak . Tautan yang digunakan untuk membentuk hashmap akan hilang, dan kemudian hashmap akan kehilangan strukturnya, dan tujuannya juga akan hilang. Oleh karena itu selalu disarankan agar Anda selalu menggunakan hashmap aman thread jika Anda ingin menggunakannya dalam aplikasi yang berulir.

Q13. Jika kita ingin mengulangi seluruh HashMap di Jawa. Apa saja cara berbeda yang bisa kita lakukan?

Jwb. Ada banyak cara di mana Anda dapat mengulangi hashmap di java; beberapa dari mereka terdaftar di bawah ini:

  1. Anda dapat menggunakan fungsi keySet yang digabungkan dengan variabel iterasi.
  2. Anda dapat menggunakan fungsi enterySet yang digabungkan dengan variabel iterasi.
  3. Anda dapat menggunakan fungsi entrySet dan menggunakannya dengan loop yang disempurnakan.
  4. Anda dapat menggunakan keySet dan mendapatkan metode.

Baca Juga: Struktur & Algoritma Data dengan Python: Semua yang Perlu Anda Ketahui

Apa selanjutnya?

Jika Anda penasaran untuk belajar tentang ilmu data, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktis, bimbingan dengan pakar industri, 1 -on-1 dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.

Bagaimana Hashtable berbeda dari HashMap?

Struktur data yang tidak disinkronkan adalah HashMap. Hashtable, di sisi lain, aman untuk utas dan dapat dibagikan di banyak utas tanpa persyaratan kode sinkronisasi. Hashtable tidak mengizinkan satu kunci nol atau beberapa nilai nol, tetapi HashMap mengizinkan. HashMap harus digunakan sebagai ganti Hashtable di aplikasi non-utas. Sederhananya, HashMap harus digunakan dalam aplikasi utas tunggal atau tidak sinkron.

Apakah lebih cepat menggunakan HashMap atau TreeMap?

Dalam TreeMap, nilai ditentukan oleh kunci. Itu tidak dapat memiliki kunci nol, tetapi dapat memiliki beberapa nilai nol. Ini identik dengan HashMap, kecuali alih-alih urutan menaik, ia mempertahankan urutan menaik (Diurutkan menggunakan urutan alami kuncinya). HashMap menggunakan struktur data berbasis array untuk mengatur komponennya sesuai dengan fungsi hash sebagai implementasi berbasis hashtable. Untuk sebagian besar operasi seperti add(), delete(), dan berisi, HashMap memperkirakan kinerja waktu-konstan dari O(1)(). Akibatnya, ini jauh lebih cepat daripada TreeMap.

Kapan lebih baik menggunakan HashMap daripada ArrayList?

Hanya ketika kunci unik tersedia untuk data yang ingin kita simpan, HashMap masuk akal. Saat mencari sesuatu berdasarkan kunci, kita harus menggunakannya karena waktu akses yang cepat adalah suatu keharusan. Saat menjaga urutan entri yang sama dalam koleksi sangat penting, kita harus menghindari HashMap. Keduanya berbeda satu sama lain dan melayani tujuan yang berbeda. Jika Anda ingin menyimpan objek di Java, gunakan HashMap untuk memetakan kunci ke nilai dan ArrayList sebaliknya.