Python Mülakat Soruları: Sık Gelen Sorular ve Nasıl Cevaplanır
Beceri rehberi

Python Mülakat Soruları: Sık Gelen Sorular ve Nasıl Cevaplanır

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 6 dk okuma

Python mülakatı ezber değil, dilin güçlü yanlarını ve tuzaklarını bilmeyi ölçer. Rehber veri yapıları, fonksiyonlar, sınıflar ve kodlama alıştırmaları için soru ve cevap mantığı verir.

Bir bakışta

  1. Sorular katmanlıdır: temelden ileriye. Söz dizimi, veri yapıları, fonksiyonlar, sınıflar ve kodlama alıştırmaları sırayla yoklanır.
  2. Değiştirilebilirlik en sık sorulan temel konudur. Liste, demet, sözlük ve küme farkı; sığ ve derin kopya birlikte beklenir.
  3. Fonksiyon tuzakları klasiktir. Varsayılan boş liste, args ve kwargs, == ile is farkı sık gelen sorulardır.
  4. Cevap tanım, örnek ve uyarıdan oluşur. Ezber tanım yerine kısa örnek ve kullanım yeri anlatmak güçlü bir kalıptır.
  5. Kendi projeniz en güçlü kanıttır. Karşılaştığınız bir sorunu nasıl çözdüğünüzü anlatabilmek hazırlığın bir parçasıdır.

Python mülakatında ne ölçülür

Python mülakatları ezber bilgiyi değil, bir sorunu Python'un güçlü yanlarıyla çözebilme ve dilin tuzaklarını bilme becerisini yoklar. Sorular genellikle şu katmanlarda gelir: temel veri yapıları ve söz dizimi, fonksiyonlar ve kapsam, nesne yönelimli programlama, hata yönetimi ve son olarak pratik kodlama alıştırmaları.

Pozisyona göre ağırlık değişir. Yazılım geliştirici adaylarına sınıflar, bellek davranışı ve tasarım soruları daha çok sorulur. Veri alanındaki rollerde ise veri yapıları, liste ve sözlük üreteçleri, dosya işleme ve kütüphane kullanımı öne çıkar. İş ilanındaki beklentileri okuyup hazırlık sırasını buna göre kurmak, tek başına bütün konuları eşit çalışmaktan daha verimlidir.

Mülakatçı çoğu zaman yalnızca doğru cevabı değil, nasıl düşündüğünüzü de görmek ister. Bu yüzden cevabı tek cümleyle bitirmek yerine tanım, kısa örnek ve bir uyarı ya da kullanım yeri sırasıyla vermek güçlü bir kalıptır. Bilmediğiniz bir konuda uydurmak yerine bildiğiniz kısmı söyleyip nasıl araştıracağınızı anlatmak daha olgun bulunur.

Şekil 1

Hazırlık, temelden ileriye doğru sıralanır

Üstteki katman alttakine dayanır

  1. Proje ve tasarımKendi yazdığınız kodu anlatmak, tasarım kararlarını savunmak
  2. Nesne yönelimli programlamaSınıf, kalıtım, özel yöntemler
  3. Hata yönetimi, ileri fonksiyonlartry/except, dekoratör, generator, kapsam
  4. Veri yapılarıListe, demet, sözlük, küme; değiştirilebilirlik
  5. Temel söz dizimiDeğişken, koşul, döngü, fonksiyon
Kaynak: sayfa içeriğiMindset Institute

Temel veri yapıları soruları

Mülakatların neredeyse tamamı veri yapılarıyla başlar. Sık sorulanlar ve cevap mantıkları:

Liste ile demet arasındaki fark nedir? Liste değiştirilebilir (mutable), demet değiştirilemez (immutable) bir dizidir. Bu fark yalnızca ekleme ve silme yetisiyle ilgili değildir: değiştirilemeyen nesneler sözlük anahtarı olabilir, değiştirilebilir olanlar olamaz. Cevaba bu sonucu eklemek sizi ayırır.

Sözlük nedir, ne zaman kullanılır? Anahtar ve değer çiftlerini tutan, anahtar üzerinden erişim sağlayan yapıdır. Bir kodu ada göre eşleştirmek, tekrarları saymak ve kayıt tutmak tipik kullanımlarıdır. Anahtarların benzersiz ve değiştirilemez olması gerektiğini vurgulayın.

Küme (set) neyi çözer? Tekrarlı öğeleri otomatik eler; üyelik testini, birleşim, kesişim ve fark işlemlerini kolaylaştırır. Sıra bilgisi yoktur, dolayısıyla sıralı erişim gerekiyorsa uygun değildir.

Değiştirilebilir ve değiştirilemez nedir? Değiştirilemez nesne oluştuktan sonra içeriği değişmez: sayı, metin, demet. Değiştirilebilir nesne yerinde değişir: liste, sözlük, küme. Bunun sonucu, bir listeyi fonksiyona verdiğinizde fonksiyonun onu değiştirebilmesidir.

Sığ ve derin kopya farkı nedir? Sığ kopya dış kapsayıcıyı kopyalar ama içindeki nesneleri paylaşır; derin kopya iç nesneleri de kopyalar. İç içe liste kopyalarken en sık yapılan hata sığ kopyayla yetinmektir; copy modülündeki deepcopy bu iş içindir.

Fonksiyonlar, kapsam ve sık sorulan tuzaklar

Python mülakatlarının favori tuzak soruları fonksiyonlardan gelir.

Varsayılan değer olarak boş liste kullanmanın sorunu nedir? Varsayılan değer fonksiyon tanımlandığında bir kez hesaplanır; liste gibi değiştirilebilir bir nesne çağrılar arasında paylaşılır. Doğru kalıp varsayılanı None yapıp içeride yeni liste oluşturmaktır.

def ekle(oge, liste=None): if liste is None: liste = [] liste.append(oge) return liste

args ve kwargs nedir? *args fazla konumsal argümanları bir demete, **kwargs fazla anahtar kelimeli argümanları bir sözlüğe toplar. Esnek imzalı fonksiyonlarda ve dekoratörlerde kullanılır.

== ile is arasındaki fark? == değerlerin eşitliğini, is ise iki ifadenin aynı nesne olup olmadığını sınar. None ile karşılaştırma için is kullanılır; değer karşılaştırması için == kullanılır. Bu soruda "iki liste aynı içeriğe sahip olabilir ama aynı nesne değildir" cümlesi güçlü bir cevap verir.

Python'da argümanlar nasıl geçilir? Değerle ya da referansla diye sorulursa, nesne referansının geçirildiğini söylemek en doğrusudur. Değiştirilebilir nesne fonksiyon içinde değiştirilirse çağıran taraf bunu görür; fonksiyon içinde isme yeni değer atamak ise çağıranı etkilemez.

Lambda nedir? Adsız, tek ifadelik küçük fonksiyondur; sıralama anahtarı ve kısa dönüşümlerde kullanılır. Karmaşıklaşırsa def ile adlandırılmış fonksiyon yazmak daha okunaklıdır.

Nesne yönelimli programlama ve ileri konular

Orta düzeyli ve üstü pozisyonlarda sorular sınıf ve tasarıma kayar.

Sınıf ile nesne arasındaki fark nedir? Sınıf bir şablondur, nesne o şablondan üretilmiş bir örnektir. __init__ yöntemi nesne oluşturulurken çalışan başlatıcıdır, self ise yöntemin üzerinde çalıştığı örneğe verilen addır.

Kalıtım ve kompozisyon ne zaman tercih edilir? Kalıtım "bir türüdür" ilişkisini, kompozisyon "bir parçası vardır" ilişkisini kurar. Kalıtım güçlü ama sıkı bağ yaratır; kompozisyon esneklik sağlar. Cevabınızı bir iş örneğiyle destekleyin: bir fatura bir müşteri nesnesini içerir, müşterinin türü değildir.

Dekoratör nedir? Başka bir fonksiyonu sarmalayıp davranışını değiştiren fonksiyondur; günlük tutma, yetki kontrolü ve süre ölçümü tipik kullanımlardır.

Generator nedir ve neden kullanılır? İçinde yield barındıran, değerleri istendikçe üreten fonksiyondur; büyük verilerde bellekten tasarruf sağlar.

Liste üreteci mi, döngü mü? Basit dönüşüm ve süzmede liste üreteci kısa ve okunaklıdır. Birden fazla koşul ve yan etki içeren işlerde normal döngü daha anlaşılırdır; mülakatta "her zaman üreteç" demek yerine okunurluk ölçütünü savunun.

Hata yönetiminde try, except, else ve finally ne işe yarar? try denenen kodu, except hatayı, else hata çıkmadığında çalışacak kodu, finally ise her koşulda çalışacak temizliği barındırır. Çıplak except yazmanın hataları gizlediğini vurgulayın.

Kodlama alıştırması gelirse nasıl yaklaşılır

Canlı kodlama oturumlarında doğru kodu yazmak kadar süreç de değerlendirilir. İzleyeceğiniz sıra şudur: soruyu kendi cümlelerinizle tekrar edin, örnek girdi ve beklenen çıktıyı sesli söyleyin, kenar durumları sorun (boş girdi, tekrarlı değer), basit çözümü yazın, sonra gerekirse iyileştirin.

Sık gelen alıştırma kalıpları: bir metnin palindrom olup olmadığını denetlemek, bir listedeki tekrarları ayıklamak, bir metindeki kelimeleri saymak, iki listenin kesişimini bulmak ve verilen bir listeyi sıralamak. Bunların hepsi Python'un yerleşik araçlarıyla kısa çözülebilir; metin için dilimleme, tekrarlar için küme, sayım için sözlük ya da collections modülündeki Counter kullanılır.

def tekrarlari_ele(degerler): gorulen = set() sonuc = [] for deger in degerler: if deger not in gorulen: gorulen.add(deger) sonuc.append(deger) return sonuc

Bu fonksiyon sırayı koruyarak tekrarları eler; yalnızca set(degerler) yazmak sırayı garanti etmez. Bunu mülakatta açıkça söylemek, kenar durumu düşündüğünüzü gösterir.

Kodu yazarken sesli düşünün, değişken adlarını anlamlı seçin ve bitirince küçük bir girdiyle elle izleyerek doğrulayın. Takıldığınızda sessiz kalmak yerine hangi yaklaşımları düşündüğünüzü paylaşmak çoğu zaman olumlu karşılanır.

Şekil 2

Hazırlık, mülakat gününe kadar aşamalara bölünür

Çalışma planı örneği

  1. TemelSöz dizimi ve veri yapılarını tazeleHer tür için küçük örnek yaz
  2. DerinleşmeTuzak soruları çalışDeğiştirilebilirlik, kapsam, varsayılan değerler
  3. PratikKodlama alıştırmaları çözSüre koyup sesli çöz
  4. ProjeKendi projeni anlatKarar nedenlerini ve karşılaştığın sorunu hazırla
  5. Son haftaProva yapBir arkadaşınla ya da kendi kendine sesli prova
Kaynak: sayfa içeriğiMindset Institute

Cevap verirken sık yapılan hatalar

Python mülakatında adayları geri düşüren hatalar çoğunlukla bilgi eksikliğinden değil, anlatım biçiminden gelir:

  • Tanımı ezbere sıralayıp örnek vermemek: örneksiz cevap, konuyu gerçekten kullanıp kullanmadığınızı göstermez.
  • Kitap bilgisiyle yetinmek: "neden" sorusuna cevap vermek, "ne" sorusunu bilmekten daha değerlidir.
  • Bilmediğini kabul etmemek: emin olmadığınız bir ayrıntıyı kesin söylemek, doğrudan bilmediğinizi söylemekten daha kötü sonuç doğurur.
  • Kenar durumları düşünmemek: boş liste, tekrarlı değer, beklenmeyen tür gibi durumları sormak olgunluk gösterir.
  • Okunurluğu ihmal etmek: tek harfli değişken adları ve gereksiz kısa kodlar mülakatta zayıf izlenim bırakır.
  • Verimlilik konusunu atlamak: çözümü yazdıktan sonra "bunu nasıl iyileştirirdim" diye kendiniz sormanız beklenen bir davranıştır.

Hazırlığın en önemli bölümü gerçek proje deneyimidir. Mülakatçı sıklıkla "bir seferinde karşılaştığınız bir hatayı nasıl çözdünüz" diye sorar. Küçük de olsa kendi yazdığınız bir veri temizleme betiği ya da otomasyon, hem soruların gerçek örneğini hem de anlatacak bir hikâyeyi verir.

Bu beceriyi Mindset programlarında nerede çalışırsınız

Python ile Programlama Eğitimi veri tiplerinden sınıf ve nesnelere uzanan modül dizisiyle, Data Science Bootcamp ise Python'a Giriş'ten Veri Yapıları, Exceptions ve Sınıflar modüllerine uzanan akışıyla mülakatın temel katmanlarını kapsar. Mülakata hazırlanan bir aday için bu modüller, yukarıdaki soru kategorilerini sıfırdan sırayla çalışma imkânı sunar.

İlgili Mindset programı

Python ile Programlama Eğitimi

Sık sorulanlar

Sık sorulan sorular

Python mülakatına nereden başlayarak hazırlanmalıyım?

Önce iş ilanını okuyun ve beklenen alanı belirleyin. Sonra temel söz dizimini, veri yapılarını ve değiştirilebilirlik konusunu pekiştirin; bu konular her pozisyonda sorulur. Ardından fonksiyon tuzaklarına, hata yönetimine ve pozisyonunuza özgü konulara geçin. Her konuyu okumakla bırakmayıp küçük bir kodla deneyin.

Mülakatta kodu not defterinde mi yoksa kağıtta mı yazacağım?

Bu şirketten şirkete değişir; canlı ortak editörde, çevrimiçi kodlama platformunda, beyaz tahtada ya da evde ödev olarak olabilir. Süreci başvuru aşamasında sormak hakkınızdır. Hangi biçim olursa olsun, ortamdan bağımsız hazırlanmak için dil bilgisini ezbere değil kavrayarak çalışın.

Mülakatta algoritma ve veri yapıları da sorulur mu?

Pozisyona bağlıdır. Yazılım geliştirici rollerinde sıralama, arama ve karmaşıklık gibi konular beklenebilir. Veri alanı pozisyonlarında ise daha çok veri işleme, kütüphane kullanımı ve problem çözme sorulur. Hangi düzeyde beklendiğini ilan metninden ve işe alım ekibinden öğrenin; hazırlığı buna göre dengeleyin.

Bilmediğim bir soru gelirse ne yapmalıyım?

Kısa bir an düşünün, bildiğiniz ilgili kavramları sesli söyleyin ve nasıl araştıracağınızı anlatın. Uydurmak çoğu zaman anlaşılır ve olumsuz değerlendirilir. Mülakatçılar çoğunlukla çözüm yolunuzu ve öğrenmeye açıklığınızı da ölçtüğünden, dürüst ve yapılandırılmış bir yanıt sessiz kalmaktan iyidir.

Kendi projelerim mülakatta işe yarar mı?

Evet, çoğu zaman en güçlü kanıttır. Bir veri temizleme betiği, küçük bir otomasyon ya da bir analiz çalışması; hangi sorunu çözdüğünüzü, hangi kararları aldığınızı ve neyi farklı yapacağınızı anlatma fırsatı verir. Kodu da paylaşabilecek şekilde düzenli tutmak ve açıklamasını hazırlamak yararlıdır.