Yazılım Mülakatlarında En Çok Sorulan 10 Algoritma Sorusu ve Pratik Çözümleri

Hayalinizdeki yazılım işi için başvuru yaptınız, İK görüşmesi harika geçti ve sıra o terleten aşamaya geldi: Teknik Mülakat. Önünüze boş bir ekran veya beyaz bir tahta konur ve sizden bir problemi kodlayarak çözmeniz istenir.

Aslında şirketler bu aşamada sizin bir dili ne kadar ezbere bildiğinizi değil, analitik düşünme yeteneğinizi ve problem çözme yaklaşımınızı ölçer. Dilin sözdizimini (syntax) Google'dan bulabilirsiniz ama algoritma mantığını o an kurmanız gerekir. Mülakatlarda karşınıza çıkma ihtimali en yüksek 10 klasik algoritma sorusunu ve pratik (JavaScript tabanlı) çözümlerini aşağıda listeledik.

1. FizzBuzz (Klasik Filtre)

Bu soru, adayın temel döngü ve koşul mantığını (if-else) kurup kuramadığını görmek için sorulur. Genelde en basit eleme sorusudur.

Soru: 1'den 100'e kadar olan sayıları ekrana yazdırın. Ancak sayı 3'e tam bölünüyorsa sayı yerine "Fizz", 5'e tam bölünüyorsa "Buzz", hem 3'e hem 5'e bölünüyorsa "FizzBuzz" yazsın.


for (let i = 1; i = 0; i--) {
        reversed += str[i];
    }
    return reversed;
}
    

6. İki Toplam (Two Sum) - LeetCode Klasiği

Bu soru, algoritma karmaşıklığını (Time Complexity) düşürme becerinizi ölçer. İç içe iki döngü kurmak yerine daha zekice bir çözüm beklenir.

Soru: Bir sayı dizisi ve bir hedef sayı verildiğinde, dizideki hangi iki sayının toplamının hedef sayıya eşit olduğunu bulun ve bu sayıların indekslerini döndürün.


function twoSum(nums, target) {
    let map = new Map();
    for (let i = 0; i < nums.length; i++) {
        let complement = target - nums[i];
        if (map.has(complement)) {
            return [map.get(complement), i];
        }
        map.set(nums[i], i);
    }
    return [];
}
    

7. Dizideki Tekrar Eden Elemanları Temizlemek

Soru: Bir dizideki yinelenen değerleri kaldırıp, sadece benzersiz değerlerden oluşan yeni bir dizi döndürün.


function removeDuplicates(arr) {
    // Set objesi sadece benzersiz değerleri tutar
    return [...new Set(arr)]; 
}
    

8. Anagram Kontrolü

Soru: Verilen iki kelimenin birbirinin anagramı (harflerinin yerleri değiştirildiğinde aynı harfleri içeren kelimeler, örn: "elma" ve "amel") olup olmadığını kontrol edin.


function isAnagram(str1, str2) {
    const cleanStr1 = str1.split('').sort().join('');
    const cleanStr2 = str2.split('').sort().join('');
    return cleanStr1 === cleanStr2;
}
    

9. Faktöriyel Hesaplama

Soru: Verilen bir sayının faktöriyelini (5! = 5*4*3*2*1) hesaplayan özyinelemeli (recursive) bir fonksiyon yazın.


function factorial(n) {
    if (n === 0 || n === 1) return 1;
    return n * factorial(n - 1);
}
    

10. Asal Sayı Kontrolü (Prime Number)

Matematiksel mantık yürütme testidir. Adayın, bir sayının kareköküne kadar olan sayılara bakmanın yeterli olduğunu bilmesi artı puan kazandırır.

Soru: Verilen sayının asal olup olmadığını true/false olarak döndüren bir kod yazın.


function isPrime(num) {
    if (num