Jika Anda pernah mempersiapkan wawancara untuk posisi programmer Java atau mengikuti ujian apa pun (tidak harus pemrograman) untuk mendapatkan sertifikat, kemungkinan besar Anda telah memperhatikan bahwa pertanyaan yang mereka ajukan sangat spesifik. Banyak dari mereka membuat Anda berpikir tentang arsitektur bahasanya, beberapa dirancang untuk pengetahuan yang mendalam. Ada juga yang lebih mirip teka-teki atau bernuansa kekhawatiran yang sangat sulit dirasakan tanpa latihan. Pada artikel ini, pengembang Saraans Singh memberikan beberapa pertanyaan Java seperti itu. Tentu saja dengan jawaban. 1. Apa yang terjadi jika Anda meletakkan pernyataan return atau System.exit() di blok coba/tangkap? Ini adalah pertanyaan "mengejar ketinggalan" yang sangat populer di Java. Triknya adalah banyak programmer percaya bahwa blok tersebut
finally
akan dieksekusi bagaimanapun juga. Pertanyaan ini menantang konsep ini dengan menempatkan pernyataan return
dalam sebuah blok try/catch
atau memanggil dari blok try/catch
pernyataan System.exit ()
. Jawaban atas pertanyaan rumit ini: blok finally
akan dieksekusi ketika sebuah pernyataan ditempatkan return
di blok try/catch
, dan tidak akan dieksekusi ketika dipanggil dari blok try/catch
pernyataan System.exit ()
. 2. Apakah Java mendukung pewarisan berganda? Ini adalah pertanyaan yang sangat rumit. Pewawancara sering berkata: jika C++ dapat mendukung pewarisan berganda langsung, mengapa Java tidak? Jawabannya sedikit lebih rumit daripada yang terlihat, karena Java mendukung pewarisan tipe ganda, karena antarmuka di dalamnya dapat memperluas antarmuka lainnya. Namun bahasa Java tidak mendukung implementasi pewarisan berganda. 3. Jika suatu metode memunculkan pengecualian NullPointerException
di kelas induk, dapatkah metode tersebut ditimpa oleh metode yang memunculkannya RuntimeException
? Pertanyaan rumit lainnya terkait dengan konsep kelebihan beban dan penggantian. Jawaban: Anda dapat dengan aman melemparkan pengecualian kelas induk ke dalam metode yang diganti NullPointerException – RuntimeException
, tetapi Anda tidak dapat melakukan hal yang sama dengan pengecualian tipe yang dicentang Exception
. 4. Bagaimana cara menjamin bahwa thread dapat mengakses sumber daya tanpa mengalami kebuntuan? N
N
Jika Anda tidak pandai menulis kode multi-utas, pertanyaan ini akan sangat rumit bagi Anda. Ini bisa menjadi tantangan bahkan bagi programmer berpengalaman yang belum pernah menangani kebuntuan dan kondisi balapan. Triknya di sini adalah dalam urutannya: kebuntuan dapat dicegah dengan membebaskan sumber daya dalam urutan terbalik saat sumber daya tersebut diperoleh. 5. Apa perbedaan class StringBuffer
dengan StringBuilder
bahasa java? Sebuah pertanyaan klasik tentang bahasa Java, dianggap rumit oleh sebagian pengembang dan sangat sederhana oleh pengembang lainnya. Kelas StringBuilder
diperkenalkan di JDK 1.5 dan satu-satunya perbedaan di antara keduanya adalah metode kelas StringBuffer
, misalnya, length()
atau capacity()
, append()
disinkronkan, sedangkan metode kelas terkait StringBuilder
tidak. Karena perbedaan mendasar ini, penggabungan string StringBuilder
menjadi lebih cepat dengan StringBuffer
. Faktanya, StringBuffer
tidak disarankan untuk menggunakannya, karena dalam 99% kasus penggunaan, penggabungan string dilakukan pada thread yang sama. 6. Apa yang dikembalikan oleh ekspresi 1.0/0.0? Apakah ini akan menimbulkan pengecualian atau menyebabkan kesalahan kompilasi? Pertanyaan rumit lainnya tentang kelas Double
. Meskipun pengembang Java mengetahui tipe data sederhana double dan kelas Double
, ketika melakukan operasi floating-point, mereka tidak cukup memperhatikan Double.INFINITY
, NaN
, -0.0
dan aturan yang mengatur perhitungan aritmatika yang terkait dengannya. Jawaban atas pertanyaan ini sederhana: tidak ada pengecualian ArithmeticException
yang akan dilempar, nilainya akan dikembalikan Double.INFINITY
. 7. Apa yang terjadi jika Anda mencoba memasukkan HashMap
objek kunci ke dalam objek kunci yang sudah ada di dalamnya? Pertanyaan rumit ini adalah bagian dari pertanyaan umum lainnya: bagaimana cara kerjanya HashMap
di Java? HashMap
adalah topik populer untuk pertanyaan yang membingungkan dan rumit tentang bahasa Java. Jawabannya adalah jika Anda mencoba memasukkan kembali kunci ke dalam HashMap
, kunci yang lama akan diganti karena kelas HashMap
tidak mengizinkan kunci duplikat. Dan kunci yang sama berarti kode hash yang sama, sehingga akan berakhir di tempat yang sama di segmen hash. Berdasarkan materi dari Quora
GO TO FULL VERSION