Mülakat Sorularında
Donup Kalmaya Son!
Kod yazabiliyor ama mülakatta teorik kavram sorulduğunda tıkanıyor musun? Günlük hayat analojileri, nokta atışı mülakat cevapları ve topluluktan gelen gerçek sorularla refleks kazan.
Python (FastAPI & Django) Kavramları
4 TerimPython GIL (Global Interpreter Lock) & Asyncio vs Multiprocessing
CPython'un tek seferde sadece tek bir thread'in bytecode çalıştırmasına izin veren koruma kilidi.
Tek bir mikrofon olan bir toplantı odasıdır. Masada 8 kişi (8 Thread) otursa da mikrofona aynı anda sadece 1 kişi konuşabilir. Gerçek paralellik için yan odaya ayrı insan grubu koymak gerekir (Multiprocessing).
"GIL, CPython'un bellek güvenliği için koyduğu bir kilittir. Ağ ve veritabanı beklemesi gibi I/O işlemlerinde GIL serbest bırakıldığı için Asyncio mükemmel çalışır. Ancak görüntü işleme veya makine öğrenimi gibi CPU işlemlerinde GIL nedeniyle multiprocessing (ProcessPoolExecutor) kullanılmalıdır."
FastAPI Mimarisi: ASGI, Starlette, Pydantic & Dependency Injection
Flask kolaylığı + Go performansı + otomatik Swagger dokümantasyonu.
Sipariş fişini bilgisayarlı tabletle alan akıllı garsondur. Yanlış sipariş verirsen (veri tipi hatalıysa) anında mutfağa gitmeden seni uyarır (Pydantic validasyonu).
"FastAPI, Python tip ipuçlarını (type hints) kullanarak tek seferde hem veri doğrulaması (Pydantic), hem OpenAPI (Swagger) şeması, hem de otomatik serileştirme üretir. Depends() fonksiyonu ile veritabanı oturumları (SQLAlchemy Session) güvenle scoped yönetilir."
Python Generators & Yield: Bellek Dostu Veri Akışı
10 milyon satırlık veriyi RAM'e tek seferde yüklemeden yudum yudum işleme sanatı.
Baraj kapağını aniden açıp şehri su altında bırakmak yerine (List), musluğu açıp ihtiyacın kadar su bardağını doldurmaktır (Generator).
"Generator'lar Python'da Iterator protokolünü uygulayan özel fonksiyonlardır. range() fonksiyonu da bir generator mantığıyla çalışır. GB boyutundaki CSV veya log dosyalarını satır satır okurken RAM tüketimini megabyte seviyesinde sabit tutarlar."
Django ORM Optimizasyonu: select_related vs prefetch_related
Django'da N+1 sorgu felaketini önleyen iki can simidi.
select_related: Tek bir kargo kamyonuna birbiriyle doğrudan bağlı kutuları yüklemektir (SQL JOIN). prefetch_related: Farklı adalardaki malları ayrı kargo uçaklarıyla getirip masada birleştirmektir (IN sorgusu).
"Bire-bir ve bire-çok ilişkilerde tek JOIN ile çekmek için select_related(); çoğa-çok veya ters ilişkilerde kartezyen çarpımdan kaçınmak için prefetch_related() kullanılır. İkisi de döngü içindeki N+1 sorgu problemini engeller."
Topluluk Mülakat Akışı
Adayların dün veya yakın zamanda girdikleri mülakatlarda karşılaştıkları gerçek sorular: