Kitap
Backend mülakat kitabı
Her bölüm konuyu nedenleriyle anlatır, quiz sorularını çözer, aynı soruya junior, mid ve senior cevapları karşılaştırır ve sorulmayan ama sorulabilecek konuları ekler.
Giriş
Java
~40 dk
1. OOP ve nesne tasarımı
Java'nın metot seçim modelini, abstract class/interface/sealed tasarım kararlarını, composition'ın neden kalıtımdan güvenli olduğunu, gerçek immutability'yi ve equals/hashCode sözleşmesinin hash tabanlı koleksiyonlardaki karşılığını mekanizmasıyla öğretir.
~40 dk
2. Dilin ince noktaları
finally ve try-with-resources'ın gerçek semantiğini, generics'te invariance/PECS/type erasure'ı, String pool ve immutability'nin mekanizmasını, döngüde birleştirmenin maliyetini ve Java'nın neden her zaman pass-by-value olduğunu kod okuma sorularını çözebilecek derinlikte öğretir.
~45 dk
3. JVM, bellek ve garbage collection
JVM'in bellek alanlarını, bir nesnenin doğumundan toplanmasına kadar yaşam döngüsünü, generational GC'nin mantığını, G1 ve ZGC'yi, bellek sızıntısı türlerini ve teşhis araçlarını, ve JVM'in Kubernetes container'ında bellek ve CPU'yu nasıl gördüğünü production problemi çözebilecek derinlikte öğretir.
~40 dk
4. Lambda ve Stream
Functional interface'lerden Gatherers'a kadar lambda, method reference, Stream işlem modeli, Collectors, Optional ve parallel stream'i mekanizmasıyla ve tuzaklarıyla öğretir.
~50 dk
5. Concurrency
Java Memory Model'den virtual thread'lere kadar görünürlük, atomiklik, kilitler, ConcurrentHashMap, thread pool'lar, CompletableFuture ve deadlock'u mekanizmasıyla ve production sonuçlarıyla öğretir.
Spring
~45 dk
6. Spring IoC, DI ve bean yaşam döngüsü
Spring container'ının bean'leri nasıl tanımladığını, bağladığını, proxy'lediğini ve yok ettiğini; scope, state ve AOP tuzaklarını mekanizmasıyla öğretir.
~45 dk
7. Spring Boot
Spring Boot'un Framework'e neyi eklediğini, auto-configuration'ın koşullarla nasıl geri çekildiğini, konfigürasyonun hangi sırayla ezildiğini ve Actuator, probe'lar, graceful shutdown ile servisin production'a nasıl hazırlandığını öğretir.
~50 dk
8. Transaction yönetimi ve JPA
@Transactional'ın proxy ve transaction manager üzerinden nasıl çalıştığını, rollback ve propagation kurallarının hangi production hatalarını ürettiğini, JPA persistence context'inin içini, N+1 ve sayfalama tuzaklarını ve optimistic/pessimistic locking seçimini öğretir.
Veri
~45 dk
9. SQL sorguları
Live coding'de SQL yazarken doğru sonucu veren, NULL ve fan-out tuzaklarına düşmeyen, eşzamanlılığa dayanıklı sorguları neden öyle yazdığını açıklayarak kurmayı öğretir.
~45 dk
10. PostgreSQL
PostgreSQL'in index'leri nasıl kullandığını, planı nasıl okuyacağını, MVCC ile izolasyon seviyelerinin gerçek davranışını ve eşzamanlı yazmalarda veri kaybını önleyen kilitleme tekniklerini mekanizmasıyla öğretir.
~40 dk
11. NoSQL, arama ve CAP
Couchbase, Elasticsearch ve Redis'in içeride nasıl çalıştığını, birden fazla veri deposunu nasıl senkron tutacağını ve CAP/PACELC ile tutarlılık kararlarını doğru terimlerle anlatmayı öğretir.
Dağıtık Sistemler
~45 dk
12. Kafka
Kafka'nın log modelini, replication ile dayanıklılığı, producer ve consumer group mekaniğini, teslimat semantiğini ve Spring Kafka'da retry/DLT ile hata yönetimini production gözüyle öğretir.
~50 dk
13. Saga, Transactional Outbox ve Idempotency
Servis başına veritabanı olan bir sistemde 2PC olmadan tutarlılığı Saga, Transactional Outbox, idempotent consumer ve idempotency key ile nasıl sağlayacağını, flash sale örnek projesi üzerinden öğretir.
~40 dk
14. Dayanıklılık
Yavaşlayan bir bağımlılığın tüm sistemi nasıl çökerttiğini Little's law ile hesaplamayı, timeout, retry, circuit breaker, bulkhead, rate limiter ve fallback'i Resilience4j ile doğru sırada ve doğru değerlerle kurmayı öğretir.
Operasyon
Zanaat
~45 dk
16. Test stratejisi, Mockito, Testcontainers ve TDD
Hangi davranışın hangi seviyede test edileceğini, JUnit 5, AssertJ, Mockito ve Spring test dilimleriyle doğru testi yazmayı, Testcontainers ile gerçek altyapıda doğrulamayı ve live coding'de TDD'yi görünür biçimde uygulamayı öğretir.
~45 dk
17. SOLID, design pattern'ler ve refactoring
SOLID ilkelerini gerçek ihlal ve düzeltmeleriyle, sık sorulan pattern'leri Spring'deki karşılıklarıyla ve güvenli refactoring adımlarını anlatır; refactoring odaklı live coding formatına en yakın iki kata'yı (kargo ücreti ve ödeme sağlayıcıları) adım adım çözer.
~45 dk
18. REST API tasarımı, validasyon ve hata yönetimi
Kaynak odaklı URL'den status kodu seçimine, idempotency key'den ETag'e, Bean Validation'dan ProblemDetail'e kadar production kalitesinde bir HTTP API'nin nasıl tasarlandığını ve neden öyle tasarlandığını öğretir.
Live Coding
~40 dk
19. Live coding algoritmaları
Live coding'de gelen algoritma sorusuna nasıl yaklaşılacağını, Java koleksiyonlarının maliyetini ve backend'e özgü klasik soruların (rate limiter, LRU, merge intervals, top-K ve sık kalıplar) test edilmiş çözümlerini öğretir.
~40 dk
20. Sistem tasarımı, code review ve mülakat davranışı
Bir sistem tasarımı sorusunu (flash sale checkout) çerçeveyle çözmeyi, İngilizce anlatmayı, bir PR'ı önceliklendirerek review etmeyi, iyi commit atmayı ve live coding ile davranışsal sorularda nasıl davranılacağını öğretir.
Gerçek Mülakattan
~40 dkMülakatta soruldu
21. Gerçek mülakatta sorulanlar
Bir backend live coding mülakatında sorulan sekiz soruya mülakatta sesli söylenecek senior cevapları verir ve dead letter queue kavramını Kafka, RabbitMQ ve SQS üzerinden baştan sona anlatır.
~60 dkMülakatta soruldu
22. Case
Bir live coding mülakatında sorulan deposit/withdraw/exchange case'ini netleştirme sorularından kapasite hesabına, veri modelinden race condition çözümlerine, 3rd party kur servisinden test ve operasyona kadar, gerçek PostgreSQL üzerinde ölçülmüş sonuçlarla adım adım çözer.
~50 dkMülakatta soruldu
23. Production'da hata ayıklama
Mikroservislerde bir isteği loglarda ve trace'te uçtan uca izlemeyi (traceId, W3C traceparent, Micrometer Tracing, MDC, context propagation), merkezi log mimarisini ve production'da bir hatayı ilk dakikadan postmortem'e kadar sistematik araştırmayı öğretir.
~50 dkMülakatta soruldu
24. Spring'in iç yüzü
Bir Spring Boot uygulamasının main metodundan trafiğe açılana kadar geçen yolu kaynak kodu seviyesinde izler: annotation'ların nasıl okunduğunu, reflection'ın nerede ve ne pahasına kullanıldığını, component scan'in sınıfları yüklemeden nasıl bulduğunu ve ApplicationContext'in aslında ne olduğunu öğretir.