En Sık Sorulan 50 Python Mülakat Sorusu ve Detaylı Yanıtları

Python mülakat soruları, adayın dili gerçekten anlayıp anlamadığını ölçen kısa teknik sorulardır. Bu rehberde en sık karşılaştığım 50 soruyu konu gruplarına ayırdım, her birine kısa ve net bir yanıt yazdım, gereken yerlerde de küçük kod örnekleri ekledim. Amacım ezber listesi değil; her yanıtın arkasındaki mantığı göstermek.
2012'den beri web projeleri yönetiyorum ve ekibe geliştirici alırken bu soruların önemli bir kısmını ben de soruyorum. Mimari tarafı merak ediyorsanız micro frontend yazıma, diğer teknik içeriklere ise yazılım kategorisinden ulaşabilirsiniz.
Python mülakat soruları nelerdir ve neyi ölçer?
Python mülakat soruları, veri tiplerinden nesne yönelimli programlamaya, generator yapılarından eşzamanlılığa kadar dilin temel davranışlarını sorgulayan teknik sorulardır. Görüşmeci bu sorularla ezberi değil, kodun neden öyle çalıştığını açıklayabilme becerinizi ve gerçek projede doğru aracı seçip seçemediğinizi ölçer.
Deneyimime göre sorular üç katmanda gelir. İlk katman dil bilgisidir: liste ile tuple farkı, değiştirilebilirlik, kapsam kuralları. İkinci katman tasarımdır: decorator, context manager, sınıf yapısı. Üçüncü katman ise performans ve eşzamanlılıktır. Bu nedenle aşağıdaki gruplar kolaydan zora doğru ilerliyor. Yanıtları Python 3 sürümlerine göre hazırladım; resmi davranış için her zaman Python belgelerine dönebilirsiniz.
Temel kavramlarla ilgili Python mülakat soruları nelerdir?
1. Python yorumlanan bir dil midir?
Kısmen evet. CPython önce kaynak kodu bytecode'a derler, ardından bu bytecode'u sanal makinede satır satır çalıştırır. Yani ortada bir derleme adımı var, ancak makine koduna derleme yok. Bu ayrımı bilmek sizi basit "yorumlanan dil" cevabından bir adım öne taşır.
2. Python dinamik tipli mi, güçlü tipli mi?
İkisi birden. Yorumlayıcı değişkenin tipini çalışma anında belirler, bu yüzden dil dinamiktir. Öte yandan "3" + 3 gibi bir işlem hata verir, çünkü Python tipleri kendiliğinden dönüştürmez; bu da güçlü tipli olduğunu gösterir.
3. PEP 8 nedir?
PEP 8, Python kodunun nasıl biçimlendirileceğini anlatan resmi stil rehberidir. Girinti için dört boşluk, fonksiyon adlarında küçük harf ve alt çizgi, sınıf adlarında büyük harfle başlayan kelimeler önerir. Görüşmede bunu bilmeniz, ekip kodunu okunur tutacağınızı gösterir.
4. Python'da girinti neden zorunludur?
Python kod bloklarını süslü parantezle değil, girintiyle ayırır. Dolayısıyla girinti yalnızca görsel bir tercih değil, sözdiziminin parçasıdır. Aynı blokta sekme ile boşluğu karıştırırsanız TabError alırsınız.
Veri tipleri hakkında hangi sorular gelir?
5. Python'daki temel veri tipleri hangileridir?
Sayılar için int, float ve complex; metin için str; mantıksal değer için bool; koleksiyonlar için ise list, tuple, set ve dict kullanırsınız. Ayrıca yokluğu temsil eden None da tek başına bir tiptir.
6. is ile == arasındaki fark nedir?
== iki nesnenin değerini, is ise kimliğini karşılaştırır. Yani is iki ismin bellekte aynı nesneyi gösterip göstermediğini sorar. Bu yüzden None kontrolünde x is None yazmanız doğru tercihtir.
a = [1, 2]
b = [1, 2]
print(a == b) # True
print(a is b) # False
7. Python'da int taşması olur mu?
Hayır. Python tam sayıları keyfi hassasiyetlidir; bellek yettiği sürece büyür. Bu nedenle C veya Java'daki gibi taşma hatası görmezsiniz. Ancak float için bu geçerli değildir, çünkü kayan noktalı sayılar sabit boyutludur.
8. 0.1 + 0.2 neden tam 0.3 etmez?
Çünkü float ikili tabanda saklanır ve 0.1 bu tabanda tam olarak ifade edilemez. Sonuç 0.30000000000000004 çıkar. Para hesabı yapıyorsanız decimal modülünü, karşılaştırma yapıyorsanız math.isclose fonksiyonunu kullanmanızı öneririm.
Liste, tuple, set ve dict arasındaki farklar nelerdir?
Bu grup neredeyse her görüşmede çıkar. Önce özet tabloya bakalım:
| Yapı | Sıralı mı? | Değiştirilebilir mi? | Tekrar eden öğe | Tipik kullanım |
|---|---|---|---|---|
| list | Evet | Evet | Serbest | Sıralı kayıt listesi |
| tuple | Evet | Hayır | Serbest | Sabit kayıt, sözlük anahtarı |
| set | Hayır | Evet | Yok | Tekilleştirme, üyelik testi |
| dict | Ekleme sırası korunur | Evet | Anahtar tekil | Anahtar ile hızlı erişim |
9. Liste ile tuple arasındaki fark nedir?
Liste değiştirilebilir, tuple değiştirilemez. Bu yüzden tuple sözlük anahtarı olabilir, liste olamaz. Ayrıca tuple biraz daha az bellek kullanır.
10. Set ne zaman tercih etmelisiniz?
Üyelik testi sık yapıyorsanız set kullanın. Ayrıca bir listedeki tekrarları atmak için de en kısa yol budur. Listede in kontrolü ortalama O(n), sette ise ortalama O(1) sürer.
11. Sözlükler sırayı korur mu?
Evet. Python 3.7 ile birlikte ekleme sırasının korunması dil garantisi hâline geldi. Ancak sıraya göre mantık kuruyorsanız bunu kodda açıkça belirtmenizi öneririm.
12. Sözlük anahtarı hangi koşulu sağlamalı?
Anahtar hashlenebilir olmalı. Yani ömrü boyunca hash değeri değişmemeli; string, sayı ve tuple bu şartı sağlar.
Değiştirilebilirlik ve bellek neden bu kadar sık gündeme gelir?
13. Mutable ve immutable nesne ne demektir?
Mutable nesneyi yerinde değiştirebilirsiniz; liste, sözlük ve set böyledir. Immutable nesnede ise her değişiklik yeni bir nesne üretir; string, int ve tuple bu gruptadır. Bu ayrım, fonksiyona argüman geçirirken yaşanan sürprizlerin temel sebebidir.
14. Varsayılan argüman olarak liste vermek neden tehlikelidir?
Çünkü varsayılan değer fonksiyon tanımlanırken bir kez oluşur ve her çağrıda aynı liste paylaşılır. Doğru kalıp None kullanmaktır:
def ekle(oge, liste=None):
if liste is None:
liste = []
liste.append(oge)
return liste
15. Sığ kopya ile derin kopya arasındaki fark nedir?
Sığ kopya yalnızca dış kabı kopyalar; içteki nesneler hâlâ ortaktır. Derin kopya ise iç içe bütün nesneleri yeniden oluşturur. Örneğin iç içe listelerde copy.copy yetmez, copy.deepcopy gerekir. Görüşmede bu soruyu genellikle 14. soruyla birlikte sorarım, çünkü ikisi de aynı zihinsel modeli ölçer.
Fonksiyonlar ve argümanlarla ilgili hangi sorular gelir?
16. *args ve **kwargs ne işe yarar?
*args değişken sayıda konumsal argümanı tuple olarak, **kwargs ise anahtar kelimeli argümanları sözlük olarak toplar. Böylece esnek imzalı fonksiyonlar yazarsınız.
def ozet(*args, **kwargs):
print(args) # (1, 2)
print(kwargs) # {'ad': 'Ali'}
ozet(1, 2, ad="Ali")
17. Python argümanları değerle mi, referansla mı geçirir?
İkisi de değil; Python "nesne referansıyla geçirme" kullanır. Fonksiyon, nesneye giden referansın bir kopyasını alır. Bu nedenle mutable bir listeyi içeride değiştirirseniz dışarıdan da görürsünüz, ancak ismi yeni bir nesneye bağlarsanız dışarı yansımaz.
18. Fonksiyonlar birinci sınıf nesne midir?
Evet. Bir fonksiyonu değişkene atayabilir, başka fonksiyona argüman olarak verebilir ve fonksiyondan döndürebilirsiniz. Decorator yapısı tam olarak bu özelliğe dayanır.
19. Tip ipuçları çalışma anında kontrol ediliyor mu, etkisi ne?
Hayır. Yorumlayıcı tip ipuçlarını zorlamaz; yalnızca belge ve statik analiz içindir. Kontrol istiyorsanız mypy gibi bir araç çalıştırırsınız. Yine de büyük projelerde ipuçları okunabilirliği ciddi biçimde artırır.
Lambda ve comprehension sorularını nasıl yanıtlarsınız?
20. Lambda fonksiyonu nedir?
Lambda, tek bir ifadeden oluşan isimsiz fonksiyondur. Genellikle sorted veya max gibi fonksiyonlara kısa bir anahtar vermek için kullanırsınız. Birden fazla satır gerekiyorsa normal def yazmak daha okunur olur.
kisiler = [("Ayse", 31), ("Can", 25)]
print(sorted(kisiler, key=lambda k: k[1]))
21. List comprehension ile for döngüsü arasında ne fark vardır?
Comprehension aynı işi tek satırda ve çoğu zaman daha hızlı yapar, çünkü döngü yorumlayıcı içinde optimize edilmiş biçimde çalışır. Ancak iç içe üç koşullu bir comprehension okunmaz hâle gelir; o noktada klasik döngüye dönmenizi öneririm.
22. map, filter ve comprehension arasında nasıl seçim yaparsınız?
Hazır bir fonksiyonu uyguluyorsanız map kısa ve nettir. Koşul ve dönüşümü birlikte yazıyorsanız comprehension daha okunurdur. Kısacası ölçüt hız değil, okunabilirliktir.
Kapsam, closure ve isim çözümleme nasıl çalışır?
23. LEGB kuralı nedir?
LEGB, Python'un bir ismi ararken izlediği sıradır: Local, Enclosing, Global, Built-in. Yorumlayıcı önce yerel kapsama, sonra kapsayan fonksiyona, ardından modül düzeyine, en son yerleşik isimlere bakar. İlk bulduğu yerde durur.
24. global ve nonlocal anahtar kelimeleri ne işe yarar?
global, fonksiyon içinden modül düzeyindeki bir ismi değiştirmenizi sağlar. nonlocal ise iç içe fonksiyonlarda kapsayan fonksiyonun değişkenine yazmanıza izin verir. İkisini de az kullanmanızı öneririm, çünkü gizli durum hata ayıklamayı zorlaştırır.
25. Closure nedir?
Closure, tanımlandığı kapsamdaki değişkenleri hatırlayan iç fonksiyondur. Dış fonksiyon bitse bile iç fonksiyon o değerlere erişmeye devam eder.
def carpan(n):
def carp(x):
return x * n
return carp
iki_kat = carpan(2)
print(iki_kat(5)) # 10
Nesne yönelimli programlama sorularına nasıl hazırlanırsınız?
OOP sorularında görüşmeci çoğunlukla kalıtım ile kompozisyon arasındaki tercihi de yoklar. Benim kısa yanıtım şudur: "bir tür" ilişkisi varsa kalıtım, "sahip olma" ilişkisi varsa kompozisyon kullanırsınız.
26. __init__ ile __new__ arasındaki fark nedir?
__new__ nesneyi oluşturur, __init__ ise oluşan nesneyi başlatır. Günlük işte neredeyse hep __init__ yazarsınız. __new__ genellikle immutable tiplerden türetirken veya singleton gibi özel kalıplarda gerekir.
27. self nedir, neden açıkça yazarsınız?
self, metodu çağıran örneğin kendisidir. Python bunu gizlemek yerine açık parametre olarak ister; felsefesi "açık, örtük olandan iyidir" ilkesine dayanır. İsterseniz başka isim verebilirsiniz, ancak topluluk standardı self'tir.
28. classmethod ile staticmethod arasındaki fark nedir?
classmethod ilk parametre olarak sınıfı alır ve alternatif kurucu yazmak için idealdir. staticmethod ise ne sınıfı ne örneği alır; sınıfla mantıksal bağı olan sıradan bir fonksiyondur.
29. MRO nedir?
MRO, yani metot çözümleme sırası, çoklu kalıtımda bir metodun hangi sınıftan alınacağını belirler. Python bunun için C3 doğrusallaştırma algoritmasını kullanır. Sırayı görmek için Sinif.__mro__ yazmanız yeterli. Ayrıca super() çağrısı da bu sırayı izler.
Dunder metotları ve veri modeli neden önemlidir?
30. __str__ ile __repr__ arasındaki fark nedir?
__str__ kullanıcıya dönük okunur çıktı, __repr__ ise geliştiriciye dönük açık temsil üretir. İyi bir __repr__ mümkünse nesneyi yeniden oluşturacak kodu gösterir. Yalnızca birini yazacaksanız __repr__ yazın, çünkü __str__ yoksa ona düşülür.
31. __eq__ tanımlarsanız __hash__ ne olur?
Sınıfta __eq__ tanımlayıp __hash__ tanımlamazsanız Python __hash__ değerini None yapar. Böylece nesneniz artık sete veya sözlük anahtarına giremez. Eşit nesnelerin hash değerleri de eşit olmalıdır.
32. dataclass ne işe yarar?
@dataclass, alan tanımlarından __init__, __repr__ ve __eq__ metotlarını kendiliğinden üretir. Veri taşıyan sınıflarda tekrar eden kodu ciddi biçimde azaltır.
from dataclasses import dataclass
@dataclass(frozen=True)
class Nokta:
x: int
y: int
Burada frozen=True nesneyi değiştirilemez yapar ve hashlenebilir hâle getirir. Veri modelinin ayrıntıları için resmi veri modeli belgesi en iyi kaynaktır.
Iterator ve generator soruları neyi ölçer?
33. Iterable ile iterator arasındaki fark nedir?
Iterable, üzerinde dönebileceğiniz nesnedir ve __iter__ metodu vardır. Iterator ise __next__ ile sıradaki öğeyi veren, durumunu hatırlayan nesnedir. Liste iterable'dır, ancak iterator değildir; iter(liste) size bir iterator döndürür.
34. Generator nedir, neden bellek dostudur?
Generator, yield kullanan ve değerleri ihtiyaç anında tek tek üreten fonksiyondur. Bütün sonucu belleğe almaz; bu yüzden milyonlarca satırlık bir dosyayı rahatça işleyebilirsiniz.
def satirlar(yol):
with open(yol) as f:
for satir in f:
yield satir.strip()
35. yield from ne işe yarar?
yield from, başka bir iterable'ın bütün değerlerini sırayla dışarı verir. İç içe generator zincirlerinde döngü yazma zahmetini ortadan kaldırır. Üstelik alt generator'ın dönüş değerini de yakalar.
Decorator ve context manager nasıl açıklarsınız?
36. Decorator nedir?
Decorator, bir fonksiyonu alıp davranışını değiştirerek geri döndüren fonksiyondur. Loglama, süre ölçme ve yetki kontrolü gibi kesişen işler için idealdir.
import functools, time
def sure_olc(fn):
@functools.wraps(fn)
def sarici(*a, **k):
t = time.perf_counter()
sonuc = fn(*a, **k)
print(fn.__name__, time.perf_counter() - t)
return sonuc
return sarici
37. functools.wraps neden gereklidir?
Çünkü onsuz sarıcı fonksiyon, orijinal fonksiyonun adını ve belge metnini ezer. wraps bu bilgileri kopyalar; böylece hata ayıklama ve belge araçları doğru ismi görür.
38. Context manager nedir?
Context manager, with bloğuna girerken ve çıkarken çalışacak kodu tanımlar. Dosya kapatma veya kilit bırakma gibi temizlik işlerini hata olsa bile garanti eder. Kendi yöneticinizi __enter__ ve __exit__ ile ya da contextlib.contextmanager ile yazabilirsiniz.
Hata yönetimiyle ilgili hangi sorular gelir?
39. try, except, else ve finally blokları nasıl çalışır?
try riskli kodu, except hatayı yakalar. else yalnızca hata olmadığında, finally ise her durumda çalışır. Ben else bloğunu, başarı durumunda çalışacak kodu try içine sokmamak için kullanırım; böylece yanlış hatayı yakalama riski azalır.
try:
sayi = int(girdi)
except ValueError:
print("Sayı değil")
else:
print(sayi * 2)
finally:
print("Bitti")
40. Çıplak except yazmak neden kötü bir alışkanlıktır?
Çünkü except: her şeyi yakalar; KeyboardInterrupt ve SystemExit dahil. Programı durduramaz, gerçek hatayı gizlersiniz. Bunun yerine beklediğiniz hatayı açıkça yazın, gerekirse kendi istisna sınıfınızı tanımlayın.
GIL ve eşzamanlılık sorularında neye dikkat etmelisiniz?
41. GIL nedir?
GIL, yani Global Interpreter Lock, CPython'da aynı anda yalnızca bir iş parçacığının Python bytecode'u çalıştırmasına izin veren kilittir. Bellek yönetimini basitleştirir, ancak CPU yoğun işlerde çoklu thread'in paralel çalışmasını engeller. Python sözlüğü kavramı kısa ve net tanımlıyor.
42. Threading, multiprocessing ve asyncio arasında nasıl seçim yaparsınız?
Ağ isteği veya dosya bekleme gibi G/Ç yoğun işlerde threading ya da asyncio yeterlidir, çünkü bekleme sırasında GIL serbest kalır. CPU yoğun hesaplarda ise multiprocessing kullanırsınız; her süreç kendi yorumlayıcısına ve kendi GIL'ine sahiptir. Asyncio, binlerce eşzamanlı bağlantıyı tek thread'de yönetmek için en hafif seçenektir.
43. GIL ortadan kalkıyor mu?
Kısmen. PEP 703 ile Python 3.13'te GIL'siz, "free-threaded" deneysel bir derleme sunuldu. Ancak varsayılan CPython hâlâ GIL ile gelir ve birçok C eklentisi uyumlu hâle geliyor. Görüşmede bu gelişmeyi bilmeniz güncel kaldığınızı gösterir, fakat üretim kararlarını buna göre vermek için erken.
Görüşmecinin sık sorduğu bir devam sorusu da şudur: GIL varken thread kullanmak neden hâlâ anlamlı? Yanıt basit: ağ ve disk beklemesi sırasında kilit serbest kalır, dolayısıyla bekleme süreleri üst üste biner.
Modüller, paketler ve sanal ortamlar hakkında neler gelir?
44. if __name__ == "__main__" satırı ne işe yarar?
Bir dosyayı doğrudan çalıştırdığınızda __name__ değeri "__main__" olur. Dosyayı başka yerden içe aktardığınızda ise modül adını alır. Bu kontrol sayesinde test veya komut satırı kodu, modül içe aktarılınca çalışmaz.
45. Sanal ortamı neden kullanırsınız?
Sanal ortam, her projenin bağımlılıklarını ayrı bir klasörde tutar. Böylece bir projede Django 4, diğerinde Django 5 kullanırken çakışma yaşamazsınız. Standart kütüphanedeki venv modülü bunun için yeterlidir.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Test ve kod kalitesiyle ilgili neler sorulur?
Görüşmelerde test sorusu çoğu zaman bir pratik görevle birleşir: "Yazdığınız fonksiyon için hangi testleri yazardınız?" Burada iyi yanıt, yalnızca mutlu yolu değil; boş girdi, hatalı tip ve sınır değerlerini de kapsar. Bu yüzden her örnek kodunuz için en az üç test fikri hazırlamanızı öneririm.
46. unittest ile pytest arasındaki fark nedir?
unittest standart kütüphanededir ve sınıf tabanlı bir yapı ister. pytest ise harici bir paket olsa da düz assert ifadeleri, fixture sistemi ve zengin eklentileriyle daha az kod gerektirir. Ekiplerin çoğu bugün pytest tercih ediyor, ancak ikisi de birlikte çalışabilir.
def topla(a, b):
return a + b
def test_topla():
assert topla(2, 3) == 5
47. Mock nesnesine ne zaman ihtiyaç duyarsınız?
Test ettiğiniz kod bir ödeme servisine, veritabanına veya dış API'ye bağlıysa gerçek çağrıyı yapmak istemezsiniz. unittest.mock bu bağımlılığı sahte bir nesneyle değiştirir ve çağrıların doğru parametrelerle yapılıp yapılmadığını kontrol etmenizi sağlar. Böylece testler hızlı ve tekrarlanabilir kalır.
Performans ve bellek optimizasyonu sorularını nasıl yanıtlarsınız?
48. Python'da çöp toplama nasıl çalışır?
CPython öncelikle referans sayımı kullanır: bir nesneye hiçbir referans kalmadığında hemen serbest bırakır. Ancak döngüsel referansları bu yöntem yakalayamaz; bu yüzden ek olarak nesilsel bir çöp toplayıcı da çalışır. gc modülüyle bu toplayıcıyı gözlemleyebilirsiniz.
49. Yavaş bir Python kodunu nasıl hızlandırırsınız?
Önce ölçersiniz, sonra düzeltirsiniz. Tahmin yerine profil çıkarmak çoğu zaman sürprizli sonuç verir. Benim izlediğim sıra şöyle:
cProfileile en çok zaman harcayan fonksiyonu bulun.- Algoritmayı ve veri yapısını gözden geçirin; listede arama yerine set kullanın.
- Tekrar eden hesapları
functools.lru_cacheile önbelleğe alın. - Sayısal işlerde NumPy gibi vektörel kütüphanelere geçin.
- Gerekirse darboğazı C uzantısına veya ayrı sürece taşıyın.
50. __slots__ ne işe yarar?
__slots__, sınıfın örneklerinin hangi niteliklere sahip olacağını sabitler ve her örnekteki __dict__ sözlüğünü kaldırır. Milyonlarca küçük nesne oluşturduğunuz durumlarda belleği belirgin biçimde azaltır. Öte yandan örneğe sonradan yeni nitelik ekleyemezsiniz.
Python mülakat soruları için nasıl çalışmalısınız?
Ezber yerine her soruyu kendi bilgisayarınızda deneyin. Örneğin 14. soruyu okumak yerine varsayılan liste hatasını bizzat üretin; bu deneyim görüşmede çok daha ikna edici bir anlatıma dönüşür. Ayrıca yanıtınızı "ne, neden, ne zaman" sırasıyla kurmak, görüşmeciye düşünce yapınızı gösterir.
Benim önerdiğim hazırlık planı şu adımlardan oluşuyor:
- İlk hafta veri tipleri, kapsam ve fonksiyon sorularını kodla deneyin.
- İkinci hafta OOP, decorator ve generator konularında küçük bir proje yazın.
- Üçüncü hafta eşzamanlılık ve performans sorularına odaklanın.
- Son hafta sesli anlatım pratiği yapın; yanıtı iki dakikada bitirmeyi hedefleyin.
Kaynak seçimi de önemli. Resmi belgelerdeki öğretici bölüm, dilin temellerini en doğru sırayla anlatır. Bunun yanında küçük alıştırma siteleri algoritma pratiği için işe yarar, ancak orada gördüğünüz çözümleri mutlaka kendi cümlelerinizle açıklamaya çalışın. Örneğin bir generator sorusunu çözdükten sonra, aynı işi listeyle yapsaydınız belleğin nasıl değişeceğini yüksek sesle anlatın.
Bir de not tutma alışkanlığı öneririm. Her gün yanlış yaptığınız bir kavramı tek cümleyle yazın. Dört haftanın sonunda elinizde kendi zayıf noktalarınızı gösteren kısa bir liste olur; görüşme sabahı yalnızca o listeye bakmanız yeterlidir.
Bu süreler saha tecrübeme dayalı bir başlangıç önerisidir, garanti değildir. Deneyiminize göre kısaltabilir ya da uzatabilirsiniz.
Görüşmede adayların en sık yaptığı hatalar nelerdir?
Kendi görüşmelerimde en çok gördüğüm hata, doğru cevabı bilip gerekçesini anlatamamak. "Tuple değiştirilemez" demek yetmez; bunun sözlük anahtarı olarak neden işe yaradığını da söylemelisiniz. İkinci yaygın hata, bilmediği soruda tahmin yürütüp yanlışı savunmaktır. Bilmiyorsanız bunu açıkça söyleyin ve nasıl araştıracağınızı anlatın.
Diğer sık hatalar şunlar:
- Kod yazarken sesli düşünmemek ve görüşmeciyi sessizlikte bırakmak.
- Uç durumları, yani boş liste veya
Nonegirdiyi hiç sormamak. - Karmaşıklık analizini atlamak; O(n) ile O(n²) farkını söylememek.
- PEP 8'e aykırı isimlendirme ile okunaksız kod yazmak.
Son bir not: görüşmeciye soru sormaktan çekinmeyin. Girdinin boyutunu, beklenen performansı veya hata durumunda ne olması gerektiğini sormak, gerçek bir projede nasıl davranacağınızı gösterir. Üstelik bu sorular size düşünmek için birkaç saniye de kazandırır.
Kısacası görüşmeci mükemmel bir ansiklopedi aramıyor. Birlikte çalışabileceği, düşüncesini net aktaran birini arıyor.
Web projelerinde Python bilgisi nerede işe yarar?
Python yalnızca veri bilimi dili değildir. Benim projelerimde en çok otomasyon ve raporlama tarafında karşıma çıkıyor. Örneğin site taşımalarında yüzlerce yönlendirmeyi kontrol eden bir betik, elle yapılacak günlerce işi dakikalara indiriyor. Bu tür kontrolleri yönlendirme denetleyici ile tek tek de doğrulayabilirsiniz.
Benzer şekilde Python ile site hızını düzenli ölçen, sonuçları tabloya döken küçük araçlar yazabilirsiniz. Hızın arama görünürlüğüne etkisini site hızı ve SEO yazımda, ölçüm yöntemini ise Lighthouse rehberinde anlattım. Üstelik teknik tarama betikleri, teknik SEO kontrollerini otomatikleştirmek için de birebirdir.
Bir başka örnek içerik tarafından geliyor. Yüzlerce sayfanın başlık ve açıklama uzunluğunu kontrol eden basit bir betik, yayın öncesi kalite kontrolünü ciddi biçimde hızlandırır. Tek bir sayfayı elle incelemek istediğinizde kelime ve karakter sayacı işinizi görür; toplu iş ise Python gibi bir dile ihtiyaç duyar. Kısacası mülakat için öğrendiğiniz bilgiler, günlük işte de doğrudan karşılık bulur.
Python mülakat soruları sonrası sonraki adım ne olmalı?
Bu 50 soruyu rahatça yanıtlayabiliyorsanız temel ve orta seviye görüşmelere hazırsınız demektir. Sonraki adım, bu bilgiyi gerçek bir projede göstermek. GitHub'da küçük ama temiz bir proje, uzun bir sertifika listesinden daha çok şey anlatır. Bu yüzden README dosyasını, testleri ve kod düzenini özenle hazırlayın.
Ekibinize geliştirici alıyorsanız veya Python tabanlı bir web projesi planlıyorsanız, teknik ihtiyacı birlikte netleştirebiliriz. Web tasarım hizmeti sayfasından nasıl çalıştığımı inceleyebilir, dilerseniz iletişim sayfasından bana doğrudan yazabilirsiniz.




