Data Engineering Interviews — Hazırlık, Soru Tipleri ve Mülakat Stratejileri
1. GİRİŞ
Data engineering mülakatları, sadece teknik yetenekleri değil aynı zamanda sistem düşüncesini, operasyonel olgunluğu ve iletişim becerilerini ölçer. Bugünün veri platformları bulut servisleri, streaming, lakehouse ve MLOps entegrasyonunu içerdiği için mülakatlar da bu geniş yelpazeyi kapsar. Bu makalede hangi soruların sıklıkla sorulduğunu, hangi konularda derinleşmeniz gerektiğini, nasıl örnek çözümler hazırlamanız gerektiğini ve gerçek mülakatlarda başarı elde etmenin yollarını ele alacağız.
Neden bugün önemli?
- Veri mühendisleri sadece veri taşıyan değil; veri ürünleri tasarlayan, güvenilirlik ve ölçeklenebilirlik sağlayan mühendisler haline geldi.
- Şirketler veri platformuyla doğrudan iş sonuçlarını iyileştirebilecek kişileri arıyor; bu yüzden mülakatlar derin sistem soruları içerir.
- Bulut‑native araçların yaygınlaşmasıyla birlikte pratik bilgi (Cloud infra, managed services) kritik bir yetkinlik oldu.
Kimler için?
- Junior ve senior veri mühendisleri
- Backend geliştiriciler veri mühendisliğine geçiş yapmak isteyenler
- Teknik işe alım yöneticileri ve mentörler
2. KAVRAMSAL TEMELLER
2.1 Mülakat kategorileri
- Telefon/ön eleme: Temel SQL, sistem geçmişi, CV doğrulama.
- Teknik kodlama: SQL, Python/Java/Scala, algoritma problemleri (genelde veri odaklı örnekler).
- Sistem tasarımı: Dağıtık sistemler, veri platformu tasarımı, ingestion/processing/storage örnekleri.
- Behavioral / kültür: Takım çalışması, incident yönetimi, etki ve karar süreçleri.
- Take‑home assignment: Gerçekçi küçük bir pipeline veya ETL görevi.
2.2 Değerlendirilen yetkinlikler
- SQL uzmanlığı ve gerçek dünya optimizasyon bilgisi
- Dağıtık sistem konseptleri (partitioning, replication, consistency)
- Data modeling ve storage engine trade‑offs
- Orkestrasyon ve production readiness (idempotency, retries, monitoring)
- İletişim ve problem‑çözme yaklaşımı
3. NASIL ÇALIŞIR? — MÜLAKATA HAZIRLIK STRATEJİLERİ
3.1 CV ve portföy hazırlığı
- Projeleri kısa ve net ifadelerle yazın: problem, çözüm, teknoloji, sonuç (metrikler varsa paylaşın).
- Pipeline örnekleri, dbt modelleri, GitHub bağlantıları, ve varsa terraform/infra kodu ekleyin.
- Take‑home veya open source katkılarınızı vurgulayın; kod kalitesi ve dokümantasyon dikkat çeker.
3.2 Teknik hazırlık — SQL
SQL genellikle en kritik konudur. Complex joins, window functions, aggregation, partition pruning, execution plan yorumlama ve optimizasyon örnekleri üzerinde pratik yapın. Örnek sorular:
- Bir satış tablosunda son 7 günün moving average'ını nasıl hesaplar ve bunu partitioned bir tablonun üzerinde performanslı yaparsınız?
- Deduplication: Aynı entity için en son kaydı nasıl seçersiniz? (ROW_NUMBER() over partition kullanımı vs join teknikleri)
- Partition pruning ve predicate pushdown neden önemlidir? Örnek verin.
3.3 Teknik hazırlık — Kodlama ve veri yapıları
Veri mühendisleri için Python ya da Java ile pratik yapın. Algoritma soruları genelde veri boyutuna göre optimize edilmiş çözümler ister: streaming median, approximate counting (HyperLogLog), sliding window top‑k gibi. Ayrıca işlenebilir sample veri setleriyle küçük ETL görevleri yapın.
3.4 Sistem tasarımı hazırlığı
En sık çıkan soru: "Büyük ölçekli bir veri pipeline'ı nasıl tasarlarsınız?" Hazırlanırken şu adımları netleştirin:
- İş gereksinimleri ve SLO'lar (freshness, throughput, latency)
- Ingestion pattern (CDC vs batch vs streaming)
- Processing engine seçimi (Spark vs Flink vs Beam), state ve checkpointing stratejileri
- Storage format ve partitioning: Parquet/ORC, compaction, file sizing
- Orchestration: DAG, retries, backfills, SLA alerts
- Monitoring ve lineage: hangi metrikler aranır?
3.5 Production readiness konuları
- Idempotency, exactly‑once düşüncesi, transactional sinks
- Schema evolution ve contract testing
- Reprocessing & backfill stratejileri
- Security: IAM, encryption, PII handling
4. GERÇEK DÜNYA MÜLAKAT ÖRNEKLERİ
4.1 Örnek: SQL performans sorusu
Soru: "Orders tablosunda user_id bazında son 30 günün günlük toplamlarını ve 7 günlük hareketli ortalamasını nasıl hesaplarsınız?" Çözümde window functions ve partitioning kullanılmalı, ayrıca büyük veri kümelerinde nasıl optimize edileceği anlatılmalı (partition by day, predicate pushdown, pre-aggregation).
4.2 Örnek: Sistem tasarımı
Soru: "Gerçek zamanlı fraud detection pipeline'ı tasarla." Ana başlıklar: event ingestion (Kafka), feature computation (Flink stateful), model scoring (online model server veya embedded model), alerting (rule engine + notification), replay/forensics için long‑term storage. Tartışma: latency hedefleri, state store tercihi, hotspot ve partitioning stratejileri.
4.3 Örnek: Take‑home assignment
Genelde gerçek bir dataset verilir (ör. e‑ticaret clickstream) ve adaydan bir pipeline tasarlayıp (ETL/ELT) dokümante etmesi, dbt modeli veya Spark job'ı ile çözmesi istenir. Değerlendirme kriterleri: kod kalitesi, testler, reproducibility, README ve deployment talimatları.
5. AVANTAJLAR VE SINIRLAMALAR (MÜLAKAT STRATEJİLERİ)
Avantajlı yaklaşımlar
- Problemi temiz bir şekilde tanımlayıp adım adım çözmek—ve her adımda trade‑off'ları tartışmak.
- İş gereksinimlerini (SLO'lar) erken belirtmek—tasarım tercihlerinin nedenlerini buna bağlamak.
- Operational düşünceyi göstermek: monitoring, alerting, rollback planları ve cost consideration.
Sınırlar ve tuzaklar
- Detaya gereğinden fazla dalmak ve sorunun ana hedefini kaçırmak.
- Çok teorik cevaplar verip pratik operasyonel konuları atlamak (ör. checkpointing, retries).
- Belirsiz varsayımlar yapıp bunları belirtmemek—tüm varsayımlar açıkça ifade edilmeli.
6. ALTERNATİFLER VE KARŞILAŞTIRMA
Bu tabloda mülakatlarda sıkça tartışılan bazı teknolojik seçimler karşılaştırılmıştır:
| Seçim | Avantaj | Dezavantaj |
|---|---|---|
| Spark (batch) | Olgun ekosistem, büyük batch işler | Higher latency, stateful stream sınırlamaları |
| Flink (stream) | Düşük latency, güçlü state management | Operasyonel karmaşıklık |
| Snowflake / BigQuery | Managed, hızlı sorgu, düşük ops | Maliyet, vendor lock‑in |
| Kafka | High throughput, replay yeteneği | Ops ve yönetim karmaşıklığı |
7. EN İYİ PRATİKLER (MÜLAKAT İÇİN)
7.1 Sunum ve iletişim
- Her teknik cevabı kısa bir özet + detaylandırma şeklinde verin: önce high level, sonra low level.
- Varsayımlarınızı açıkça söyleyin ve alternatifleri tartışın.
- Diagram kullanabiliyorsanız beyaz tahta veya shared doc üzerinde basit sketch'ler çizin.
7.2 Problem çözme yaklaşımı
- Adım adım ilerleyin: Requirements → Constraints → Design → Failure modes → Monitoring/Runbook.
- Performans ve maliyet trade‑off'larını karşılaştırın.
7.3 Teknik derinlik
- SQL planlarını okuyabildiğinizi, partitioning ve indexing etkilerini anlatın.
- State management, checkpoint, watermark gibi streaming kavramlarını örneklerle açıklayın.
- CI/CD, testing ve infra as code konularında pratik deneyimlerinizi paylaşın.
8. SIK YAPILAN HATALAR
- Çok teorik cevap verip pratik adımları atlamak.
- SQL optimizasyonu ve execution plan konularını hafife almak.
- Production readiness (monitoring, backfill, rollback) konularını göz ardı etmek.
- Take‑home assignment'te dokümantasyon eksikliği — kod yazmak kadar README ve deployment adımları önemlidir.
9. GELECEK TRENDLER
9.1 Mülakatların evrimi
Mülakatlar artık daha pratik ve production‑odaklı hale geliyor: take‑home'lerin oranı artıyor, değerlendirme gerçek dünya use‑case'lerine dayandırılıyor. Ayrıca otomasyonla desteklenen kod gözden geçirme süreçleri yaygınlaşıyor.
9.2 AI destekli hazırlık
AI tabanlı interaktif platformlar (code interview sandbox, SQL açıklayıcı araçları) adayların pratik yapmasını kolaylaştırıyor. Ancak gerçek dünya deneyimini taklit etmek için kendi dataset'lerinizle projeler yapmanız hâlâ kritik.
EK BÖLÜMLER
Sık Sorulan Sorular (FAQ)
- 1. SQL için en önemli konseptler nelerdir?
Window functions, execution plan okuma, partition pruning, index ve join stratejileri.
- 2. Sistem tasarımı sorularına nasıl hazırlanmalıyım?
Pattern tabanlı çalışın: ingestion, processing, storage, serving, monitoring adımlarını hep aynı çerçevede tartışın.
- 3. Take‑home assignment'te nelere dikkat edilmeli?
Kod kalitesi, testler, README ve deployment adımları; ayrıca edge case'leri düşünün.
- 4. Stream vs batch hangi durumlarda tercih edilir?
Latency gereksinimi varsa stream; deterministik toplu hesaplar ve complex joins için batch daha uygundur.
- 5. Teknik sorularda varsayımları nasıl yönetmeliyim?
Varsayımlarınızı açıkça belirtin ve alternatif senaryolarda tasarımınızı nasıl değiştireceğinizi tartışın.
- 6. Mülakat sırasında stresle başa çıkma önerileri?
Soruyu tekrarlayın, küçük parçalara bölün, yüksek seviyede özet verin ve ardından detaylara inin; interaktif olun.
- 7. Başarılı bir data engineering portföyü nasıl görünür?
Çalışır pipeline'lar, dbt modelleri, DAG örnekleri, monitoring dashboard'ları ve açık kaynak kodu içermelidir.
- 8. Junior konum için nelere öncelik vermeliyim?
SQL ve temel ETL/ELT kavramları, Linux ve version control; ayrıca küçük bir proje ile pratik gösterin.
Anahtar Kavramlar
- Window functions: Zaman veya partition bazlı rolling hesaplar için kullanılır.
- Partitioning: Veri fiziksel bölümlenmesi, sorgu performansını etkiler.
- Checkpointing: Stream state dayanıklılığı için snapshot alma.
- Idempotency: Yeniden çalışma durumunda yan etki yaratmama garantisi.
Öğrenme Yol Haritası
- 0–1 ay: SQL ustalığı, basic Linux, Git, küçük ETL projeleri.
- 1–3 ay: Python/Scala ile veri işleme, Parquet, columnar storage, küçük Spark job'ları.
- 3–6 ay: Streaming concepts, system design practice, orchestration (Airflow/Dagster) ve monitoring.
- 6–12 ay: Production readiness: infra as code, CI/CD, contract testing, cost optimization ve domain projeleri.