yoklateknik mülakat

Backend Java Generics Interfaces Mülakat Soruları

75 doğrulanmış Backend Java Generics Interfaces mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Java Generics InterfacesZorluk 1
Java generics'te "type erasure" (tip silinmesi) en iyi hangisiyle tanımlanır?
  • aDerleyici her tip argümanı için ayrı özelleşmiş bir sınıf üretir, C++ template'lerine benzer şekilde.
  • bDerleyici generic tipleri derleme zamanında kontrol eder, ardından tip parametresi bilgisini siler; bu bilgi çalışma zamanı bytecode'unda bulunmaz.
  • cJVM, generic tip parametrelerini runtime'da kontrol eder ve uyuşmazlıkta hata fırlatır.
  • dDerleyici tam tip argümanını bytecode metadata'sı olarak saklar, böylece reflection her zaman doğrudan okuyabilir.
Açıklama:Java generics, type erasure ile uygulanır: derleyici derleme zamanında tip güvenliğini denetler, ardından tip parametrelerini siler ve üretilen bytecode'da bunların yerine sınırlarını (ya da Object'i) koyar. Bu yüzden generic tip bilgisi çoğunlukla runtime'da mevcut değildir.
Java Generics InterfacesZorluk 1
List list = new ArrayList(); şeklinde tip argümanı vermeden yazıyorsunuz. Bu raw type kullanımının riski nedir?
  • aHer açıdan List<Object> ile tamamen aynı davranır, pratik bir fark yoktur.
  • bGüncel Java sürümlerinde derleme hatasıdır, bu yüzden risk oluşmaz.
  • cYalnızca liste oluşturulduktan sonra boş bırakılırsa sorun çıkarır.
  • dDerleyici artık o liste için eleman tipini kontrol edemez; runtime'da ClassCastException riski doğar.
Açıklama:Raw type'lar o değişken için generic tip kontrolünü devre dışı bırakır. Derleyici unchecked uyarısı verir; yanlış tip eklenen kod sorunsuz derlenebilir ama daha sonra bir eleman okunup cast edildiğinde ClassCastException ile patlayabilir.
Java Generics InterfacesZorluk 1
class Box<T> {
    private T value;
    Box(T value) { this.value = value; }
    T get() { return value; }
}

public class Main {
    public static void main(String[] args) {
        Box<String> box = new Box<>("hello");
        System.out.println(box.get().length());
    }
}

Bu program ne yazdırır?
  • a5
  • bhello
  • cDerleme hatası: generic tip T üzerinde length() çağrılamaz.
  • dRuntime hatası: ClassCastException.
Açıklama:Box<String> T'yi String'e bağlar, yani box.get() bir String döndürür ve "hello" üzerinde .length() çağırmak 5 verir. Generic tip çağrı noktasında tamamen çözüldüğü için bu kod sorunsuz derlenir ve çalışır.
Java Generics InterfacesZorluk 2
class Pair<T extends Comparable<T>> {
    T first, second;
    Pair(T a, T b) { first = a; second = b; }
    T max() { return first.compareTo(second) >= 0 ? first : second; }
}

public class Main {
    public static void main(String[] args) {
        Pair<Integer> p = new Pair<>(3, 7);
        System.out.println(p.max());
    }
}

Bu ne yazdırır?
  • a3
  • bDerleme hatası: Integer, T extends Comparable<T> sınırını sağlamaz.
  • c7
  • dRuntime hatası: compareTo üzerinde NullPointerException.
Açıklama:Integer, Comparable<Integer>'ı implemente eder ve sınırı sağlar, bu yüzden bu kod derlenir. first.compareTo(second) 3'ü 7 ile karşılaştırır, sonuç negatiftir, dolayısıyla max() second'ı, yani 7'yi döndürür.
Java Generics InterfacesZorluk 1
Java'da functional interface'i hangi ifade doğru tanımlar?
  • aTam olarak bir soyut (abstract) metodu olan interface; default ve static metot sayısı sınırsız olabilir.
  • bDefault ve static metotlar dahil, toplamda tam olarak bir metodu olan interface.
  • cKod tabanının herhangi bir yerinde lambda ifadesiyle birlikte kullanılan herhangi bir interface.
  • dKaç tane soyut metot bildirdiğine bakılmaksızın @FunctionalInterface ile işaretlenmiş bir interface.
Açıklama:Functional interface, tam olarak bir soyut metoda sahiptir (lambda ya da metot referansının hedefi); default ve static metotlar bu sınıra dahil edilmez. @FunctionalInterface sadece bu kuralı zorlayan bir derleyici kontrolüdür — iki ya da daha fazla soyut metot varsa interface'i tek başına functional yapmaz.
Java Generics InterfacesZorluk 2
import java.util.function.Predicate;

public class Main {
    public static void main(String[] args) {
        Predicate<String> isLong = s -> s.length() > 3;
        System.out.println(isLong.test("hi"));
    }
}

Ne yazdırılır?
  • atrue
  • bDerleme hatası: Predicate, süslü parantez içinde bir return ifadesi gerektirir.
  • c2
  • dfalse
Açıklama:Predicate<String>, boolean test(T t) metodunu tanımlar. Lambda "hi".length() > 3, yani 2 > 3 kontrolünü yapar; bu false'tur.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla