Yazılım mülakatlarında sorulan, String konusu altındaki soruların çeşitleri, çözüm patternleri ve java ile kodlamaları

Yazılım mülakatlarında "String" konusu altında sorulan sorular genellikle belirli kategorilere ayrılabilir. Her bir kategori için tipik soru türlerini, çözüm patternlerini ve Java ile örnek kodlamaları aşağıda bulabilirsiniz. İlk olarak en sık karşılaşılan birkaç kategori ve bu kategorilere ait örnek sorularla başlayalım:





1. String Manipülasyonu ve Analizi

Bu kategori altında sorulan sorular, stringlerin değiştirilmesi, dönüştürülmesi veya analiz edilmesi ile ilgilidir. Bu tür sorular genellikle stringler arasındaki ilişkileri anlamak, belirli bir patterni bulmak veya belirli bir formata göre stringleri düzenlemek üzerine kuruludur.


Soru Örneği: String Ters Çevirme

"Soru: Bir stringi tersine çeviren bir fonksiyon yazın."


Çözüm Patterni: Bu sorunun çözümünde genellikle iki pointer kullanılır: biri stringin başında, diğeri sonunda. Bu iki pointer, string üzerinde içe doğru hareket ederek karşılıklı elemanları yer değiştirir.


Java Kodu:


java

Copy code

public String reverseString(String s) {

    char[] chars = s.toCharArray();

    int left = 0;

    int right = s.length() - 1;

    while (left < right) {

        // Karakterleri yer değiştir

        char temp = chars[left];

        chars[left] = chars[right];

        chars[right] = temp;

        

        // Pointer'ları güncelle

        left++;

        right--;

    }

    return new String(chars);

}

2. String Matching ve Arama Algoritmaları

Bu kategorideki sorular, genellikle bir string içerisinde bir alt stringin, patternin veya karakterin aranması ve bulunması ile ilgilidir. Bunlar, efektif arama algoritmaları ve string manipülasyonu tekniklerini gerektirebilir.


Soru Örneği: Substring Bulma

"Soru: Bir string içinde başka bir stringin (substring) ilk olarak bulunduğu indeksi döndüren bir fonksiyon yazın."


Çözüm Patterni: Naive bir yaklaşımda, ana string üzerinde döngü kurarak her pozisyonda substring için eşleşme aranır. Daha efektif bir çözüm için KMP (Knuth-Morris-Pratt) gibi özel arama algoritmaları kullanılabilir.


Java Kodu (Naive Approach):


java

Copy code

public int strStr(String haystack, String needle) {

    if (needle.isEmpty()) return 0;

    for (int i = 0; i <= haystack.length() - needle.length(); i++) {

        for (int j = 0; j < needle.length(); j++) {

            if (haystack.charAt(i + j) != needle.charAt(j)) break;

            if (j == needle.length() - 1) return i; // Eşleşme bulundu

        }

    }

    return -1; // Eşleşme bulunamadı

}


3. String Dönüşümleri

Bu kategori, bir string'in başka bir formata veya düzene dönüştürülmesiyle ilgili soruları içerir. Bu dönüşümler, karakterleri değiştirmeyi, kelimeleri yeniden düzenlemeyi veya belirli bir patterni takip ederek string'i yeniden formatlamayı içerebilir.


Soru Örneği: Kelimelerin Baş Harflerini Büyütme

"Soru: Bir cümledeki her kelimenin baş harfini büyük harfe çeviren bir fonksiyon yazın."


Çözüm Patterni: Bu sorunun çözümünde, öncelikle cümleyi kelimelere ayırmak gerekir. Ardından her kelimenin ilk harfini büyük harfe çevirip, kelimeleri tekrar birleştirirsiniz.


Java Kodu:


java

Copy code

public String capitalizeFirstLetter(String sentence) {

    String[] words = sentence.split(" ");

    StringBuilder result = new StringBuilder();

    

    for (String word : words) {

        if (!word.isEmpty()) {

            result.append(Character.toUpperCase(word.charAt(0)))

                  .append(word.substring(1))

                  .append(" ");

        }

    }

    

    return result.toString().trim();

}

4. String Sayı İşlemleri

Bu kategori, string olarak ifade edilen sayılarla işlem yapmayı gerektiren soruları kapsar. Bu işlemler, sayıların toplanması, çıkarılması, çarpılması veya bölünmesi gibi aritmetik işlemleri içerebilir.


Soru Örneği: String olarak verilen iki sayıyı çarpma

"Soru: İki string olarak verilen sayıyı çarpan ve sonucu string olarak döndüren bir fonksiyon yazın."


Çözüm Patterni: Bu tür bir sorun için, genellikle sayıların her bir basamağı ayrı ayrı çarpılır ve sonuçlar uygun şekilde birleştirilir. İşlem, basit çarpma işlemleri ve taşıma işlemlerini takip eder.


Java Kodu:


java

Copy code

public String multiplyStrings(String num1, String num2) {

    int m = num1.length(), n = num2.length();

    int[] pos = new int[m + n];

   

    for(int i = m - 1; i >= 0; i--) {

        for(int j = n - 1; j >= 0; j--) {

            int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0');

            int sum = mul + pos[i + j + 1];

   

            pos[i + j] += sum / 10;

            pos[i + j + 1] = sum % 10;

        }

    }  

    

    StringBuilder sb = new StringBuilder();

    for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p);

    return sb.length() == 0 ? "0" : sb.toString();

}

5. Palindrom Kontrolü

Palindromlar, tersten okunduğunda da aynı kalan kelimeler, ifadeler veya sayılardır. Bu tür sorular, bir string'in palindrom olup olmadığını kontrol etmeyi gerektirir.


Soru Örneği: Palindrom Kontrolü

"Soru: Verilen bir stringin palindrom olup olmadığını kontrol eden bir fonksiyon yazın."


Çözüm Patterni: Bu sorunun çözümü genellikle iki pointer kullanarak yapılır: biri stringin başında diğeri sonunda. Bu iki pointer içe doğru hareket ederken, karşılaştırma yapar.


Java Kodu:


java

Copy code

public boolean isPalindrome(String s) {

    s = s.replaceAll("[^A-Za-z0-9]", "").toLowerCase();

    int left = 0, right = s.length() - 1;

    while (left < right) {

        if (s.charAt(left) != s.charAt(right)) {

            return false;

        }

        left++;

        right--;

    }

    return true;

}

Hiç yorum yok

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo