Java Interview Questions: OOP, Collections, Concurrency & Database
Java Interview Questions on OOP Concepts
- What is the difference between loose coupling and tight coupling?
İki nesne birbirine çok fazla bağlıysa, yani biri değiştiğinde diğerini de değiştirmek gerekiyorsa tight coupling; değiştirmek gerekmiyorsa, birbirinden bağımsızsa loose coupling deriz.
- Cohesion and coupling
Cohesion is defined as the degree of relationship between elements of the same module. Coupling is defined as the degree of interdependence between the modules.
- SOLID
- Single Responsibility Principle (Tek servis tek iş yapar)
- Open/Closed Principle (Yeni class için açık, modify için kapalı bir kod)
- Liskov Substitution Principle (Parent ve child classlar yer değiştirdiğinde aynı özellikleri gösterecek şekilde hiyerarşi tasarlanmalı)
- Interface Segregation Principle (Tek bir interface yerine işlerin bölünerek birden fazla interface'e ayrılması)
- Dependency Inversion (Üst seviye class, alt seviye classlara bağımlı olmamalı)
Abstract Class vs Interface
Abstract class içinde normal method kullanabiliriz; interface'de ise sadece soyut method bulunur (body olmaz). Interface'ler genellikle sıfat isimleriyle adlandırılır ve bir class'ın ne yapması gerektiğini belirtir.
Aggregation, Association, Composition
- Association: İki nesne arasında has-a ilişkisi.
- Composition: Bir nesne diğer nesnenin lifecycle'ını yönetiyorsa; o öldüğünde diğeri de ölüyorsa.
- Aggregation: Bir nesne diğerine bağlıdır, ancak biri öldüğünde diğeri ölmez.
Java Interview Questions on Collections
- List: Sıralı (ordered)
- Set: Sırasız (unordered)
- Map: Key-value yaklaşımı
- Synchronized collection: Bütün collection'ı kilitler; tek bir thread'de güncellenir, multithread'de verimli çalışmaz.
- Concurrent collection: Sadece değiştirilen kısma lock atar; multithreaded çalışabilir.
- LinkedList over ArrayList: İlk ve son elemana erişim sık ise LinkedList iyidir.
- ConcurrentHashMap vs Hashtable: Concurrent vs synchronized collections arasındaki farkla aynıdır.
Java Interview Questions on Concurrency
- notify: Sadece bir thread'e uyandırma mesajı gönderir. notifyAll: Bütün thread'lere gönderir.
- Race condition: İki thread aynı anda shared data'ya erişip çalıştırmaya çalışırsa oluşur; lock konularak erişim kısıtlanabilir.
- Deadlock: İki thread'in ihtiyaç duyduğu kaynak başka bir yerde kilitliyse ve ilerleme durmuşsa oluşur.
Java Interview Questions on Database
- SQL injection: Parametrized query kullanarak, password hashing yaparak ve database input'unu filtreleyerek önlenir.
- WHERE (pre-filter) ve HAVING (post-filter) farkı.
ACID
- Atomicity: Transaction bir bütündür; birden fazla database modify ediliyorsa aynı anda başarılı veya başarısız olur.
- Consistency: Tutarlılık; verilerin tüm database'lerde tutarlı ve eşit olması.
- Isolation: Bir transaction'ın diğerinden etkilenmemesi.
- Durability: Sistem arızasında transaction'ın bir önceki duruma geri getirilmesi.
- DROP: Tüm collection veya tabloyu siler.
- TRUNCATE: Tümünü siler.
- DELETE: Bir veya daha fazla kaydı siler.
Aggregate window functions: SUM, COUNT, AVG, MAX, MIN.
SAGA Pattern
Distributed transaction management yönetir. Saga execution controller yönetir; sıkıntı durumunda tüm sistemin rollback yapmasını sağlar.