Bir Java programcısı pozisyonu için bir mülakata hazırlandıysanız veya herhangi bir sertifika sınavını geçtiyseniz (programlamayla ilgili olmayabilir), muhtemelen orada sorulan soruların çok özel olduğunu fark etmişsinizdir. Birçoğu sizi dilin tasarımı hakkında düşünmeye zorluyor. Bazıları bilginizin derinliklerini araştırmak için tasarlanmıştır. Her şeyden çok yapboza benzeyen sorular varken, diğerleri pratik yapılmadan algılanması çok zor olan dilin nüanslarıyla ilgili. Bu makalede, geliştirici Sarans Sing, Java hakkında buna benzer birkaç soru sunuyor. Elbette cevaplarla.
1. Bir try/catch bloğuna bir dönüş ifadesi veya System.exit() koyarsam ne olur? Bu çok popüler ve incelikli bir Java sorusudur. İşin püf noktası, birçok programcının bloğun

finally
her zaman yürütüldüğüne inanmasıdır. return
Bir bloğa bir ifade yerleştirerek try/catch
veya System.exit()
bir bloğun içinden arayarak try/catch
, soru bu inanca şüphe uyandırır. Bu zor sorunun cevabı şudur: blok , bir deyim bir bloğa yerleştirildiğinde finally
yürütülür , ancak bir blok içinden çağrıldığında yürütülmez . 2. Java çoklu kalıtımı destekliyor mu? Bu çok zor bir soru. Görüşmeciler sık sık "C++ doğrudan çoklu kalıtımı destekliyorsa Java neden desteklemiyor?" diye soruyor. cevap _return
try/catch
System.exit()
try/catch
Java çoklu tip kalıtımı desteklediğinden, göründüğünden biraz daha karmaşıktır. Sonuçta, bir Java arayüzü diğer arayüzleri genişletebilir. Bununla birlikte, Java, uygulamaların çoklu kalıtımını desteklemez. 3. Bir üst sınıftaki bir yöntem NullPointerException
s atarsa, s atan bir yöntem tarafından geçersiz kılınabilir mi RuntimeException
? Bu, aşırı yükleme ve geçersiz kılma ile ilgili başka bir zor sorudur. Yanıt: Geçersiz kılınan bir yöntem, 'ın üst sınıfı olan RuntimeException'ı güvenli bir şekilde atabilir NullPointerException
, ancak aynısını, gibi işaretli bir istisna türüyle yapamazsınız Exception
. 4. İş parçacıklarının kilitlenme olmadan kaynaklara erişebileceğini nasıl garanti edersiniz ?N
N
Çok iş parçacıklı kod yazmak sizin uzmanlığınız değilse, gerçekten bu soruya rastlayabilirsiniz. Kilitlenmeler ve yarış koşullarıyla karşılaşmamış deneyimli bir programcı için bile zor olabilir. Buradaki tüm numara sırayla: Kaynakları alındıkları sıranın tersi sırayla serbest bırakarak kilitlenmeleri önleyebilirsiniz. 5. Java'daki ve sınıfları arasındaki fark nedir ? StringBuffer
StringBuilder
Bu, bazı geliştiricilerin zor, diğerlerinin ise çok basit bulduğu klasik bir Java dili sorusudur. Sınıf StringBuilder
, JDK 1.5'te göründü. Bu sınıflar arasındaki tek fark, , ve StringBuffer
gibi yöntemlerin senkronize olması, karşılık gelen yöntemlerin iselength()
capacity()
append()
StringBuilder
değiller. StringBuilder
Bu temel fark, dize birleştirmenin ile ile olduğundan daha hızlı olduğu anlamına gelir StringBuffer
. Aslında, StringBuffer
dize birleştirme zamanın %99'unda aynı iş parçacığı üzerinde gerçekleştirildiği için kullanılması önerilmez. 6. 1.0/0.0 ifadesini değerlendirmenin sonucu nedir? Bir istisna mı yoksa bir derleme hatası mı üretecek? Bu, sınıfla ilgili başka bir zor soru . Java geliştiricileri, ilkel bir çift veri türünün ve bir sınıfın varlığından haberdardır , ancak kayan nokta işlemlerini gerçekleştirirken , , , ve ilişkili aritmetik hesaplamaları yöneten kurallara yeterince dikkat etmezler . Bu sorunun cevabı basit: Bir
Double
Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
NaN
-0.0
ArithmeticException
atılmayacak; ifade olarak değerlendirilir Double.POSITIVE_INFINITY
. 7. Zaten o anahtarı içeren bir anahtara bir anahtar eklemeye çalışırsanız ne olur ? HashMap
Bu zor soru, sık sorulan başka bir sorunun parçasıdır: HashMap
Java'da nasıl çalışır? HashMap
Java ile ilgili kafa karıştırıcı ve aldatıcı soruların popüler bir kaynağıdır. İşte cevap: a'ya bir anahtarı yeniden yerleştirmeye çalışırsanız , sınıf yinelenen anahtarlara izin vermediğinden HashMap
eski anahtar değiştirilecektir . HashMap
Ve aynı anahtar aynı hash kodunu alacak, bu da hash kovasında aynı yerde olacağı anlamına geliyor. Quora malzemelerine dayalı
GO TO FULL VERSION