yoklateknik mülakat

Backend Java Stdlib Http Mülakat Soruları

75 doğrulanmış Backend Java Stdlib Http 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 Stdlib HttpZorluk 1
Java'da ArrayList ile LinkedList hakkında hangi ifade doğrudur?
  • aLinkedList, get(index) ile ArrayList ile aynı şekilde O(1) rastgele erişim sağlar.
  • bArrayList, get(index) ile O(1) rastgele erişim sağlar; LinkedList ise get(index) için listeyi düğüm düğüm dolaşmak zorundadır.
  • cArrayList içeride çift yönlü bağlı liste olduğu için başa ekleme O(1)'dir.
  • dHer iki sınıf da elemanları sabit boyutlu bir dizide tutar, bu yüzden hiçbiri başlangıç kapasitesinin ötesine büyüyemez.
Açıklama:ArrayList, yeniden boyutlandırılabilir bir dizi üzerine kuruludur, bu yüzden get(index) doğrudan dizi erişimidir — O(1). LinkedList çift yönlü bağlı bir listedir, bu yüzden get(index) baştan ya da sondan (hangisi yakınsa) dolaşmak zorundadır — en kötü durumda O(n). Başa ekleme LinkedList için ucuzdur (O(1)) ama ArrayList için pahalıdır (O(n), elemanları kaydırır).
Java Stdlib HttpZorluk 2
HashSet ile TreeSet arasındaki temel davranışsal fark nedir?
  • aHashSet elemanları doğal sıraya göre sıralı tutar; TreeSet ekleme sırasını tutar.
  • bTreeSet yinelenen elemanlara izin verir, HashSet vermez.
  • cTreeSet elemanları (Comparable ya da constructor'a verilen bir Comparator ile) sıralı tutar; HashSet hiçbir sıralama garantisi vermez.
  • dHashSet elemanların Comparable implemente etmesini gerektirir, TreeSet gerektirmez.
Açıklama:TreeSet bir red-black tree üzerine kuruludur ve elemanları doğal sıralarına (Comparable) ya da constructor'a verilen bir Comparator'a göre sıralı tutar. HashSet bir HashMap üzerine kuruludur ve hiçbir sıralama garantisi vermez — iterasyon sırası hash bucket düzenine bağlıdır. Her iki set de yinelenenleri reddeder (equals/hashCode ya da compareTo==0'a göre). Elemanları sıralamak için Comparable ya da Comparator'a ihtiyaç duyan HashSet değil TreeSet'tir.
Java Stdlib HttpZorluk 2
Sıralama yapmadan, entry'leri gezerken ekleme sırasını koruyan bir Map'e ihtiyacın var. Hangi implementasyon en uygun?
  • aLinkedHashMap, çünkü hash tablosunun yanında entry'lerin ekleme sırasında çift yönlü bağlı bir listesini tutar.
  • bTreeMap, çünkü her zaman elemanların eklendiği sırada iterasyon yapar.
  • cHashMap, çünkü Java 8'den beri tüm Map implementasyonları için ekleme sırası garanti eder.
  • dBurada tüm Map implementasyonları aynı şekilde çalışır, çünkü Map'in hiçbir zaman tanımlı bir iterasyon sırası yoktur.
Açıklama:LinkedHashMap, HashMap'i extend eder ve ek olarak tüm entry'leri boydan boya geçen çift yönlü bağlı bir liste tutar, bu yüzden iterasyon sırası ekleme sırasıyla (ya da yapılandırılmışsa erişim sırasıyla) eşleşir. TreeMap, ekleme sırasına göre değil Comparable/Comparator'a göre key'e göre sıralar. Düz HashMap hiçbir iterasyon sırası garantisi vermez — bu Java 8'de hiç değişmedi.
Java Stdlib HttpZorluk 2
class Employee implements Comparable<Employee> {
    String name;
    int age;

    Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int compareTo(Employee other) {
        return Integer.compare(this.age, other.age);
    }
}

List<Employee> list = new ArrayList<>(List.of(
    new Employee("Ana", 35),
    new Employee("Bo", 22),
    new Employee("Cy", 29)
));
Collections.sort(list);
System.out.println(list.get(0).name);

Bu ne yazdırır?
  • aAna
  • bBo
  • cCy
  • dEmployee equals()'ı override etmediği için ClassCastException fırlatır.
Açıklama:compareTo, Integer.compare ile age'e göre karşılaştırır, bu yüzden Collections.sort(list) çalışanları age'e göre artan sıraya dizer: Bo (22), Cy (29), Ana (35). Sıralamadan sonra list.get(0) Bo'dur. Comparable'ın Collections.sort tarafından doğru kullanılması için equals()'ın override edilmesi gerekmez — burada ClassCastException oluşmaz.
Java Stdlib HttpZorluk 2
List<String> words = new ArrayList<>(List.of("banana", "fig", "apple", "kiwi"));
words.sort(Comparator.comparing(String::length).thenComparing(Comparator.naturalOrder()));
System.out.println(words);

Bu ne yazdırır?
  • a[apple, banana, fig, kiwi]
  • b[banana, apple, fig, kiwi]
  • c[fig, kiwi, apple, banana]
  • d[kiwi, fig, banana, apple]
Açıklama:Comparator.comparing(String::length) öncelikle string uzunluğuna göre sıralar: fig(3), kiwi(4), apple(5), banana(6). thenComparing(naturalOrder()) yalnızca eşit uzunluklar için tie-breaker'dır ve burada hiçbir iki kelime aynı uzunluğu paylaşmadığı için bir etkisi yoktur. Sonuç [fig, kiwi, apple, banana]'dır.
Java Stdlib HttpZorluk 1
List<Integer> nums = List.of(1, 2, 3);
nums.add(4);

Bu çalıştığında ne olur?
  • aGayet güzel derlenir ve sessizce 4'ü alttaki listeye ekler.
  • bDerlenir ama add çağrısını sessizce yok sayar.
  • cÇalışma zamanında ClassCastException fırlatır.
  • dÇalışma zamanında UnsupportedOperationException fırlatır.
Açıklama:List.of(...) değişmez (immutable) bir liste implementasyonu döndürür. Herhangi bir yapısal değiştirme metodu (add, remove, set, clear) çalışma zamanında UnsupportedOperationException fırlatır — kod derlenir çünkü List arayüzü hâlâ add()'i tanımlar, ama immutable implementasyon çağrıyı reddeder.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla