Yazılım stajı mülakatında hangi sorular sorulur sorusunun cevabı dört başlıkta toplanır: temel programlama ve algoritma, proje anlatımı, hata çözme yaklaşımı, kullandığın araçlar ile öğrenme biçimin. Bu sorular ezber bilgiden çok mantığını yoklar, o yüzden hazırlık da ezber bir soru listesiyle sınırlı kalmamalı. Mülakatta amaç her soruyu bilmek değil, bildiğin kısmı açık ve düşünerek anlatabilmektir.
Temel programlama soruları: değişken, koşul ve döngü
Mülakatçı bu sorularla ezberlediğin tanımı değil, mantığı kurup kuramadığını ve kodu okuyabildiğini yoklar. Örnekler Python üzerinden verildi, ama cevap iskeleti her dilde işler.
Değişken ve veri türü soruları
Örnek soru: "int ve string farkı nedir, '5' + 3 neden hata verir?"
- Tanımla:
inttam sayıdır,strmetindir. İkisi farklı işlemleri destekler. - Küçük örnek ver:
'5' + 3Python'daTypeErrorüretir, çünkü metinle sayı toplanamaz.int('5') + 3sonucu 8,'5' + str(3)sonucu'53'olur. - Sınır durumunu söyle: Dönüşüm de başarısız olabilir.
int('abc')ValueErrorverir.
Koşul soruları
Örnek soru: "Bir sayının çift mi tek mi olduğunu nasıl kontrol edersin, sınır değerleri nasıl düşünürsün?"
- Tanımla: 2'ye bölümünden kalan 0 ise sayı çifttir:
n % 2 == 0. - Küçük örnek ver: 8 çift, 7 tek çıkar.
- Sınır durumunu söyle: 0 çifttir. Negatif sayıları da düşün: bazı dillerde (örneğin Java)
-3 % 2sonucu -1 olduğundann % 2 == 1kontrolü negatif tek sayıyı kaçırır.n % 2 != 0daha güvenlidir.
Döngü soruları
Örnek soru: "1'den n'e kadar toplamı for ve while ile nasıl yazarsın, sonsuz döngü ne zaman oluşur?"
- Tanımla:
fortekrar sayısı belli olduğunda,whilebir koşul sürdükçe çalışır. - Küçük örnek ver:
for i in range(1, n + 1): toplam += i.whilesürümündei = 1ile başlar,i <= nolduğu sürece ekler ve her turdai += 1yaparsın. - Sınır durumunu söyle:
n = 0için toplam 0 olmalı.rangeüst sınırı dahil etmediği içinn + 1yazılır.whileiçinde sayacı artırmayı unutursan koşul hiç yanlış olmaz ve döngü sonsuza gider. - Doğrula:
n = 3için sonuç 6 çıkmalı. Formülü (n * (n + 1) / 2) bilmek ikinci bir kontrol yolu sağlar.
Veri yapıları soruları: liste, sözlük ve küme ne zaman kullanılır?

Bu soru, veri yapısını tanımına göre değil ihtiyacına göre seçip seçemediğini gösterir. Dört temel yapıyı tek cümleyle ayırt edebilmek yeterli bir başlangıçtır:
- Liste (list): Sıralı ve değiştirilebilir, tekrar eden öğe barındırabilir. Sıra ya da indeks önemliyse uygundur.
- Sözlük (dict): Anahtar-değer çiftleri tutar. Bir anahtardan değere hızlıca ulaşman gerektiğinde uygundur.
- Küme (set): Benzersiz ve sırasız öğeler tutar. Üyelik kontrolü ve tekrarları temizlemek için uygundur.
- Demet (tuple): Sıralı ama değiştirilemez. Koordinat gibi sabit gruplar için uygundur.
Cevap iskeletin üç adımdan oluşur:
- İhtiyacı söyle.
- Veri yapısını seç.
- Gerekçeni tek cümleyle ver. Örneğin: "Öğrenci numarasından isme ulaşmam gerekiyor, anahtarla doğrudan erişim sağladığı için sözlük seçerim."
Mini örnek: listede ilk tekrar eden öğeyi bulma
Mülakatta önce basit çözümü anlat: iç içe iki döngüyle her öğeyi daha önce gördüklerinle karşılaştırırsın. Çalışır, ama liste büyüdükçe karşılaştırma sayısı hızla artar. Sonra iyileştirmeyi öner: görülenleri bir kümede tut.
def ilk_tekrar(liste):
gorulen = set()
for x in liste:
if x in gorulen:
return x
gorulen.add(x)
return None
print(ilk_tekrar([3, 7, 2, 7, 5, 3]))
Beklenen çıktı: 7.
Küme üyelik kontrolünü hızlı yaptığı için liste tek geçişte taranır, bu da iç içe döngüden daha verimlidir. "İlk tekrar eden öğe" ikinci görülüşüne göre belirlenir: 3 de tekrar ediyor, ama 7'nin ikinci görülüşü listede daha önce gelir. Tekrar yoksa fonksiyon None döndürür. Soruyu cevaplamadan önce bu tanımı mülakatçıyla netleştirmek de iyi bir alışkanlıktır.
Algoritmik düşünmeni belirli bir dile bağlı kalmadan ölçmek istersen ücretsiz algoritmik düşünme testini çözebilirsin.
Hata ayıklama soruları: kodu çalışmayınca ne yaparsın?
Sık karşılaşılan iki biçimi var: "Kodun beklenmeyen sonuç veriyorsa ne yaparsın?" ve "Bu hata mesajını nasıl okursun?" İkisinde de cevap iskeletin aynıdır: gözlem, hipotez, test, çözüm. Adım adım teşhis şöyle işler:
- Hata mesajını sonuna kadar oku. Python'da izleme çıktısının son satırı hata türünü, üstündeki satırlar hatanın hangi dosyada ve satırda oluştuğunu gösterir.
- Hatayı yeniden üret. Hangi girdiyle ve hangi adımlarla ortaya çıktığını bul.
- Sorunu daralt. Küçük bir girdiyle dene, kritik noktalara
printkoy ya da hata ayıklayıcıyla adım adım ilerle. - Varsayımlarını tek tek test et. "Bu değişken şu değeri taşıyor" gibi her varsayımı gözleyerek doğrula.
- Düzelt. Belirtiyi değil, nedeni gideren en küçük değişikliği yap.
- Aynı hatayı yakalayacak bir kontrolle doğrula. Hatayı tetikleyen girdiyi basit bir test ya da örnek çağrı olarak sakla.
"Önce hata mesajını okurum" demek güçlü bir başlangıçtır, çünkü rastgele değişiklik denemek yerine kanıttan yola çıktığını gösterir. Cevabını bir örnekle somutlaştırırsan daha ikna edici olur: "TypeError aldım, mesaj metinle sayıyı topladığımı söylüyordu, ilgili satırdaki dönüşümü kontrol ettim."
Yapay zekâ araçlarıyla hata çözüp çözmediğini de sorabilirler. Dürüst ve sağlam cevap şudur: aracın önerisini kullanabilirsin, ama kodu anlamak ve çözümün gerçekten çalıştığını doğrulamak sende kalır. Önerinin neden işe yaradığını açıklayamıyorsan o çözümü henüz sahiplenmiş sayılmazsın.
Git soruları: commit, branch ve çakışma çözme
Staj düzeyinde Git sorusu genellikle bir komut ezberini değil, ekip içinde çalışma mantığını yoklar. Örnek bir soru şöyle olabilir: "İki kişi aynı dosyayı değiştirirse ne olur?" Burada tek tek komutları sıralamak yerine önce durumu tanımlamak, sonra adımları sırayla anlatmak daha düzgün bir cevap oluşturur.
Bu soruya şu iskeletle yanıt verebilirsin:
- Durumu tanımla: İki kişi aynı dosyanın farklı satırlarını değiştirdiyse Git değişiklikleri çoğunlukla kendisi birleştirir. Aynı satırlar değiştiyse çakışma (conflict) çıkar ve hangisinin kalacağına insan karar verir.
- Durumu gör:
git statusçakışan dosyaları listeler. Dosyanın içinde<<<<<<<,=======ve>>>>>>>işaretleri iki tarafın sürümünü ayırır. - Elle düzelt: Dosyayı açıp hangi parçanın kalacağına karar verirsin. İşaretleri silersin, gerekirse iki sürümü harmanlarsın ve kodu çalıştırıp kontrol edersin.
- Kaydet:
git addile dosyayı hazırlar,git commitile birleştirmeyi tamamlarsın.
Çakışmayı anlatırken ekip arkadaşıyla konuşmanın da bir adım olduğunu belirtmek olgun bir yaklaşımdır. Hangi değişikliğin neden yapıldığını bilmeden birini silmek yeni hata üretebilir.
Mülakatta sık işlenen diğer Git kavramları
- Commit: Projenin o andaki durumunun kayıtlı bir anlık görüntüsüdür. İyi bir commit mesajı tek bir değişikliği anlatır ve "ne yapıldığını" açıkça söyler, örneğin "Not ortalaması hesabındaki sıfıra bölme hatası düzeltildi". "güncelleme" ya da "son hali" gibi mesajlar sonradan geçmişi okumayı zorlaştırır.
- Branch: Ana koda dokunmadan yeni bir özellik ya da düzeltme üzerinde çalışmak için açılır.
git switch -c yeni-ozellikhem dalı oluşturur hem de ona geçer. İş bitincegit mergeile ana dala birleştirilir. - .gitignore: Depoya girmemesi gereken dosyaları belirtir: derleme çıktıları, sanal ortam klasörleri, parola ya da API anahtarı içeren yapılandırma dosyaları gibi.
- git pull ve git push:
git pushyerel commitlerini uzak depoya gönderir.git pulluzak depodaki değişiklikleri alıp yerel dalınla birleştirir. Çakışmaların çoğu pull sırasında ortaya çıkar.
Proje soruları: 90 saniyede projeni nasıl anlatırsın?

"Bize projenden bahseder misin?", "En zorlandığın yer neresiydi?" ve "Neyi farklı yapardın?" sorularının üçü de aynı malzemeyle yanıtlanır: projeyi sen yaptıysan kararlarının arkasındaki gerekçeyi bilirsin. Anlatımı 90 saniyeye sığdırmak için problem, karar ve sonuç sırasını izleyebilirsin.
- Problem: Ne çözmeye çalıştın ve kim için? Bir ya da iki cümleyle sınırla.
- Karar: Hangi dili, kütüphaneyi ya da veri yapısını neden seçtin? Elediğin bir alternatifi ve eleme sebebini de söyle.
- Sonuç: Şu an ne çalışıyor, bu süreçte ne öğrendin ve bir sonraki adımın ne olurdu?
Kurgusal bir örnek
Aşağıdaki metin herkese uygulanabilecek kurgusal bir örnektir, gerçek bir öğrenci hikâyesi değildir. Proje: ders notu takip uygulaması.
Problem: Vize ve final notlarını farklı yerlerde tutmak, dönem ortalamasını hesaplamayı zorlaştırıyordu. Kendim ve sınıf arkadaşlarım için notları tek yerde toplayan basit bir uygulama yaptım. Karar: Python kullandım. Dersleri ve notları saklamak için sözlük seçtim, çünkü ders adıyla doğrudan erişim gerekiyordu. Liste de olabilirdi ama her seferinde ders adını aramam gerekirdi. Sonuç: Not ekleme ve ortalama hesaplama çalışıyor. Girdi doğrulamanın eksik olduğunu fark ettim, sonraki adımım hatalı girişleri engellemek ve verileri dosyaya kaydetmek.
"En zorlandığın yer" sorusunda gerçekten takıldığın bir noktayı seç ve nasıl çözdüğünü anlat. "Neyi farklı yapardın?" sorusunda kodu baştan yazmaktan çok, planlama, test ya da veri yapısı gibi somut bir kararı belirtmek yeterlidir.
Büyük bir projen yoksa ders ödevi ya da kendine yazdığın küçük bir araç da aynı şablonla anlatılabilir. Önemli olan projenin büyüklüğü değil, ne yaptığını ve neden öyle yaptığını açıklayabilmendir.
Bilmediğin bir soruyla karşılaşınca nasıl yaklaşırsın?
Mülakatta amaç her soruyu bilmek değil, bildiğin kısmı açık ve düşünerek anlatabilmektir. Bilmediğin bir soruda sessiz kalmak ya da rastgele bir cevap uydurmak yerine şu beş adımlık çerçeveyi deneyebilirsin:
- Soruyu kendi cümlenle tekrar et. "Yani listedeki tekrar eden elemanları ayıklamak istiyoruz, doğru mu anladım?" demek hem anlayışını doğrular hem düşünmen için zaman kazandırır. Gerekirse girdi boyutu ya da beklenen çıktı gibi netleştirici bir soru sorabilirsin.
- Bildiğin kısmı ayır. "Döngüyle çözebileceğimi biliyorum, ama en verimli yolundan emin değilim" gibi bir cümle, bilgi sınırını görünür kılar.
- Sesli düşün. Hangi yolları denerdin, nerede takıldığını söyle. Mülakatı yapan kişi çoğu zaman cevabın kendisinden çok düşünme biçimini dinler.
- Tahminini tahmin olarak belirt. "Bunun bir sözlükle çözülebileceğini tahmin ediyorum, ama emin değilim" demek, yanlış olsa bile dürüst bir cevaptır. Kesinmiş gibi söylenen yanlış bilgi ise sorun yaratır.
- Bilmediğini dürüstçe söyle ve nasıl öğreneceğini anlat. "Bu konuyu bilmiyorum, resmî dokümantasyondan okuyup küçük bir örnekle denerdim" cevabı, öğrenme biçimini gösterir.
Bu çerçeve, staj mülakatında sık sorulan "yeni bir şeyi nasıl öğrenirsin?" sorusunu da dolaylı olarak yanıtlar. Hazırlık sürecinde bilmediğin sorular çıktığında bunları bir listeye yaz ve her birini yukarıdaki adımlarla sesli olarak cevaplamayı dene.
Mülakat Öncesi Hazırlık Kontrol Listesi
Hangi alanda staj arayacağın henüz netleşmediyse, ilgi ve eğilimlerini görmek için ücretsiz kariyer testini çözebilirsin. Alanı netleştirmek, hangi konulara daha çok zaman ayıracağını belirlemene yardım eder. Aşağıdaki listeyi mülakattan birkaç gün önce başlayarak tek tek işaretleyebilirsin.
- Her soru türü için (temel programlama, veri yapısı, hata ayıklama, Git, proje) en az bir örneği sesli anlat. Yazıya dökmek yetmez, konuşurken takıldığın yerler asıl eksiğini gösterir.
- "Listedeki ilk tekrar eden öğeyi bul" gibi bir iki küçük algoritmayı bakmadan yaz ve elle bir örnekle çalıştır.
- Bir hata mesajını baştan sona oku, ne anlattığını söyle ve teşhis adımlarını sırala: hatayı yeniden üret, satırı bul, değişkenlerin değerini kontrol et, varsayımını test et.
- Boş bir depoda branch aç, iki ayrı değişiklik yap, merge et. Küçük de olsa bir çakışma oluşturup çöz.
- 90 saniyelik proje anlatımını süre tutarak prova et. Sorunu, yaptığın işi, kullandığın araçları ve öğrendiğin bir dersi sığdırabildiğini kontrol et.
- Projene koyduğun kodun her satırını açıklayabildiğinden emin ol. Hazır bir parçayı kullandıysan neden çalıştığını da anlatabilmelisin.
- Bilmediğin bir soru için sesli düşünme cümleleri hazırla: "Önce soruyu kendi cümlemle tekrar edeyim", "Küçük bir örnekle başlayayım", "Bu kısmı bilmiyorum ama şöyle yaklaşırdım."
- Mülakatçıya sormak istediğin iki soruyu not al; örneğin stajda hangi işlerde çalışılacağını ya da geri bildirimin nasıl verildiğini sorabilirsin.
Mülakatta amaç her soruyu bilmek değil, bildiğin kısmı açık ve düşünerek anlatabilmektir. Hazırlığın da bu hedefe göre yapılmalı: ezberlediğin cevap sayısı değil, konuşarak düşünebilme rahatlığın belirleyici olur.
Sık Sorulan Sorular
Projem yoksa mülakatta ne anlatmalıyım?
Ders ödevlerinden, bir dönem projesinden ya da kendi yazdığın küçük bir araçtan söz edebilirsin. Önemli olan işin büyüklüğü değil, hangi problemi çözdüğünü, hangi kararları verdiğini ve nerede zorlandığını anlatabilmendir. İstersen mülakattan önce birkaç saatte bitecek küçük bir uygulama yazıp Git ile depoya yükleyebilirsin.
Mülakatta canlı kodlama istenirse nasıl ilerlemeliyim?
Önce soruyu kendi cümlenle tekrar et ve gerekirse netleştirici soru sor. Sonra küçük bir örnek üzerinden çözümü sesli kur, ardından kodu yaz. Bitirince örnek girdilerle ve uç durumlarla (boş liste gibi) kodunu kontrol etmen, düşünme sürecini göstermen açısından değerlidir.
Staj mülakatı için hangi programlama dilini bilmem gerekir?
Bu, başvurduğun pozisyona ve ilanda yazan teknolojiye göre değişir. İlanı dikkatle oku, o dilin temellerini çalış; ancak değişken, koşul, döngü ve veri yapısı mantığı diller arasında büyük ölçüde ortaktır. Bir dilde sağlam temel, başka bir dile geçişi kolaylaştırır.
Cevabı yanlış verirsem mülakat biter mi?
Hayır, tek bir yanlış cevap mülakatın sonucunu tek başına belirlemek zorunda değildir. Hatanı fark edip düzeltmen, nasıl düşündüğünü açıklaman ve bilmediğin yerde dürüst davranman da değerlendirilen unsurlar arasındadır. Yanlışı fark ettiğinde sakin biçimde geri dönüp düzeltmeyi deneyebilirsin.
Hazırlığı küçük, düzenli adımlara bölersen mülakat gününe daha rahat girersin. Yeni başvurularda ilk deneyimin eksik yönlerini not edip bir sonrakine taşıman da gelişmenin doğal bir parçasıdır.