Goldman Sachs Java Backend mülakatı
Bir adayın raporladığı dört turluk Goldman Sachs Java backend sürecindeki core Java, Spring Boot, SQL, güvenlik ve rate limiter soruları; her biri junior, mid ve senior cevaplarla.
Konu özeti
Bu set, LinkedIn'de paylaşılmış tek bir aday raporuna dayanıyor. Rapor tarih vermiyor; teklif "38 LPA" olarak geçtiği için pozisyon Hindistan'da. Goldman Sachs'ın ekipleri ve lokasyonları arasında süreç değişir; burada okuduğun şey "Goldman Sachs her zaman bunu sorar" değil, "bir adaya bunlar soruldu ve banka mülakatlarının tipik derinliği bu" demektir. Soruların kaynağı her soruda Aday raporu olarak işaretli; cevaplar ise bu sitenin kendi anlatımıdır.
Rapordaki turlar:
- Online assessment:
{,}ve*içeren bir string'in dengeli olup olmadığı (joker her şey olabilir) ve en sık geçen k kelime. - DSA + core Java: Bağlı listeyi ikili gruplar halinde ters çevirme; ardından
==veequals(),HashMap'in iç yapısı, çakışma ve treeify, load factor 0,75'in gerekçesi, Java Memory Model, thread safety. - Spring Boot + low-level design: Kullanıcı başına dakikada 5 istek sınırlayan bir rate limiter; stereotype anotasyonları, bean scope ve yaşam döngüsü, Spring Boot'un açılışı,
@Transactional'ın iç işleyişi ve tuzakları. - Güvenlik + veritabanı: SQL sorgu optimizasyonu; API gateway'de kimlik doğrulama, OAuth ve JWT, token süresi, JWT'nin geçersiz kılınması, refresh token akışı.
Nasıl çalışılır? Online assessment için üç problemi süre tutarak çöz: joker karakterli parantez dengesi, en sık geçen K kelime ve ikinci turdaki bağlı listede ikili yer değiştirme. Online assessment'ta kenar durumlar gizli testlerle ölçülür; boş girdi ve eşitlik kuralı en çok puan kaybettiren yerlerdir.
Core Java turu ezber değil, mekanizma ister. "HashMap O(1)'dir" demek yetmez; hash'in nasıl karıştırıldığını, bucket'ın neden ağaca döndüğünü ve 0,75'in neden seçildiğini anlatabilmelisin. Kaynaklar: equals/hashCode ve HashMap için Kitap Bölüm 1, String pool ve == için Kitap Bölüm 2, JMM ve concurrency için Kitap Bölüm 5.
Spring turunda "anotasyon koyunca çalışıyor" cevabı yerine proxy, BeanPostProcessor ve refresh() düzeyinde konuşmak beklenir: Kitap Bölüm 6 (bean'ler ve yaşam döngüsü), Kitap Bölüm 8 (@Transactional) ve Kitap Bölüm 24 (açılış süreci). Rate limiter için önce rate limiter sınıfı pratiğini kodla, sonra dağıtık sürümü dağıtık rate limiter sistem tasarımıyla çalış.
Dördüncü tur için SQL tarafında "index ekle" demeden önce ölçmeyi anlatmalısın: Kitap Bölüm 9 ve Kitap Bölüm 10 (index, EXPLAIN). Güvenlik soruları için güvenlik soru bankası ve bu setteki OAuth/JWT soruları yeterli bir temel verir.
Bankacılık bağlamını unutma: para hesaplarında BigDecimal karşılaştırması, transaction sınırları, token iptali ve rate limiter'ın Redis çöktüğünde ne yapacağı gibi sorular, "çalışıyor" cevabından "hata durumunda ne olur" cevabına geçmeni bekler.
Sorular (19)
HashMap içeride nasıl çalışır?
HashMap'te çakışmalar nasıl yönetilir, Java 8 ile ne değişti?
HashMap'in varsayılan load factor'ı neden 0,75?
Java Memory Model nedir, happens-before ne demek?
Bir sınıfı thread-safe yapmak için hangi yolları kullanırsın?
@Component, @Service ve @Repository arasındaki fark nedir?
Spring bean scope'ları nelerdir, bir bean'in yaşam döngüsünü anlat.
Bir Spring Boot uygulaması başlarken neler olur?
@Transactional içeride nasıl çalışır?
@Transactional'ın en sık tuzakları nelerdir?
Yavaş bir SQL sorgusunu nasıl optimize edersin?
OAuth 2.0 ile JWT arasındaki fark nedir?
Access token'ın süresi (expiration) nasıl çalışır, süreyi nasıl seçersin?
JWT'yi süresi dolmadan geçersiz kılabilir misin?
Refresh token akışı nasıl çalışır, nasıl güvenli tutulur?
API gateway'de kimlik doğrulamayı ve güvenliği nasıl kurarsın?
Kullanıcı başına dakikada en fazla 5 istek kabul eden bir rate limiter tasarla (tek instance).
Aynı rate limiter'ı 20 instance'lı bir serviste nasıl çalıştırırsın?
Çoktan seçmeli (12)
Integer a = 128; Integer b = 128; için a == b ve a.equals(b) varsayılan JVM ayarlarıyla ne döndürür?
Tek doğru cevap var.
Java 21'de HashMap'in bir bucket'ı hangi koşulda bağlı listeden kırmızı-siyah ağaca dönüşür?
Tek doğru cevap var.
HashMap'in varsayılan load factor'ının 0,75 olmasının en doğru gerekçesi hangisidir?
Tek doğru cevap var.
Aşağıdakilerden hangileri Java Memory Model'e göre happens-before ilişkisi kurar? (Birden fazla doğru var.)
Birden fazla doğru olabilir.
@Repository'yi @Component'ten davranış olarak ayıran şey nedir?
Tek doğru cevap var.
Bir singleton servise field injection ile prototype scope'lu bir bean enjekte edildi. Servisin metotları çağrıldıkça ne olur?
Tek doğru cevap var.
Aynı sınıftaki @Transactional olmayan process() metodu, aynı sınıftaki @Transactional save() metodunu this.save() ile çağırıyor. Ne olur?
Tek doğru cevap var.
@Transactional (varsayılan ayarlarla) bir metot java.io.IOException (checked) fırlatıyor. Varsayılan davranış nedir?
Tek doğru cevap var.
Bir JWT hakkında aşağıdakilerden hangisi doğrudur?
Tek doğru cevap var.
Refresh token rotation ve reuse detection kullanan bir sistemde, daha önce kullanılmış (rotate edilmiş) bir refresh token tekrar gelirse önerilen davranış nedir?
Tek doğru cevap var.
Kullanıcı başına 'dakikada en fazla 5 istek' için fixed window sayacının temel sorunu nedir?
Tek doğru cevap var.
PostgreSQL'de SELECT id, amount FROM payments WHERE customer_id = ? AND status = 'PENDING' ORDER BY created_at DESC LIMIT 20 sorgusu için en uygun index hangisidir?
Tek doğru cevap var.