Kotlin Mülakat Soruları Part 3

Emine Şa
3 min readAug 12, 2024

Selammm, Bu yazıda 21'den 30'a kadar olan soruları cevaplıyoruz. Hazırsanız dalıyoruuzz.

Soru 21: when yapıları içinde else durumu hangi durumlarda gerekli olmaz?

when yapılarında, tüm olasılıkları kapsayan durumlar eksiksiz bir şekilde belirtilmişse ve başka bir ihtimal söz konusu değilse, else durumu gerekli olmaz. Örneğin, bir enum sınıfının tüm değerlerini when içinde kontrol ediyorsanız ve başka bir değer olması ihtimali yoksa, else kullanmanıza gerek kalmaz. Kotlin derleyicisi, tüm olasılıkların ele alındığını fark ederek else kullanımını zorunlu tutmaz.

Soru 22: when yapısı içinde bir değişkenin belirli bir sınıfa ait olup olmadığını nasıl kontrol edebiliriz?

Bir değişkenin belirli bir sınıfa ait olup olmadığını when yapısı içinde is anahtar kelimesiyle kontrol edebilirsiniz. is, değişkenin belirtilen sınıfa ait olup olmadığını kontrol eder ve eğer değişken o sınıfa aitse, ilgili kod bloğunu çalıştırır. Bu yöntemle, when yapısı içerisinde bir değişkenin türünü kolayca kontrol edebilirsiniz.

Soru 23: while döngüleri ile for döngülerinin farkı nedir? Ne zaman while kullanmak daha doğrudur?

while döngüsü, belirli bir koşul sağlandığı sürece işlemi tekrar ederken, for döngüsü genellikle mevcut bir listenin veya dizinin elemanları üzerinde döner. Peki, while döngüsünü ne zaman kullanmalıyız? Eğer döngünün belirli bir koşul sağlandığında sonlanmasını istiyorsak, while kullanmak daha uygundur. Bu durum, döngünün kaç kez çalışacağının önceden belirli olmadığı senaryolar için idealdir.

Soru 24: break, continue ve return ifadeleri nedir ve etiketleme (label) kullanımı ne için yapılır?

  • break: Bir döngüden (örneğin, for, while, do-while) tamamen çıkmanıza olanak tanır. Döngüdeki tüm işlemleri sonlandırır ve döngüden çıkış yapar.
  • continue: Döngünün mevcut yinelemesini atlar ve bir sonraki yinelemeye geçer. Yani, döngü içindeki kodun geri kalanını atlar ve döngü bir sonraki adımına devam eder.
  • return: Bir fonksiyondan çıkış yapmanızı sağlar ve (varsa) fonksiyondan bir değer döndürür. Ayrıca, bir döngü içinde return kullanıldığında, fonksiyonun tamamını sonlandırır ve döngüden çıkar.

Etiketleme (label) kullanımı: Etiketler, çok katmanlı döngülerde veya iç içe geçmiş fonksiyonlarda break ve continue ifadelerinin hangi döngü veya blok üzerinde etkili olacağını belirtmek için kullanılır. Etiketler, birden fazla döngü veya blok arasında daha kontrollü bir çıkış ve devam etmeyi sağlar.

Soru 25: Infix fonksiyon nedir? Infix fonksiyonların performansa bir etkisi var mıdır?

Infix fonksiyonlar, ya bir extension fonksiyonu olmalı ya da bir sınıfa ait olmalıdır. Bu fonksiyonlar yalnızca tek bir parametre alır; vararg kullanılamaz ve bu parametreye varsayılan bir değer atanamaz, çünkü varsayılan değer kullanımı infix fonksiyonlarının mantığına uygun değildir. Performans açısından herhangi bir etkisi yoktur. Infix fonksiyonlar, nokta (.) operatörü olmadan, yalnızca bir boşluk (space) ile çağrılmalarını sağlar.

Soru 26: Local fonksiyon nedir?

Local fonksiyonlar, bir fonksiyonun içinde tanımlanan ve sadece tanımlandığı fonksiyonun kapsamı içinde erişilebilen fonksiyonlardır. Bu tür fonksiyonlar, dışarıdan erişilemez ve sadece tanımlandığı yerin içinde kullanılabilir. Local fonksiyonlar, genellikle bir fonksiyonun içindeki belirli bir işlemi veya yardımcı işlevi encapsulate etmek ve bu işlevin yalnızca bu fonksiyonun içinde kullanılmasını sağlamak için kullanılır. Böylece, fonksiyonun içindeki kodun okunabilirliği artırılır ve işlevin gizliliği korunur.

Soru 27: Operator overloading ne demektir?

Operatör overload’u, mevcut operatörlerin (örneğin, + veya -) davranışını özelleştirerek yeni işlevler eklemeyi ifade eder. Kotlin'de operatör overload'u, sınıfınıza özel operatör işlevleri tanımlayarak yapılır. Bu, operatörlerin belirli bir sınıf için nasıl çalışacağını tanımlamanızı sağlar. Örneğin, + operatörünü bir sınıf için toplama işlemi yapmak üzere özelleştirebilirsiniz. Operatör overload'u, sınıflarınızın daha doğal ve anlaşılır bir şekilde kullanılmasını sağlar.

Soru 28: Extension fonksiyon nedir?

Kotlin’de mevcut bir sınıfa veya kendi oluşturduğumuz bir sınıfa yeni özellikler eklemek için kullanılan fonksiyonlardır. Bu fonksiyonlar, var olan sınıflara yeni işlevler eklemenizi sağlar ve mevcut sınıfın kodunu değiştirmeden onun özelliklerini genişletmenize olanak tanır. Extension fonksiyon, sınıfların doğal işlevselliğine katkıda bulunarak kodun daha okunabilir ve ve mevcut sınıfların genişletilebilir olmasını sağlar.

Soru 29: Default argument ve named argument ne demektir?

Default argument: Bir sınıf veya fonksiyon tanımlanırken, bir parametreye varsayılan bir değer atanmasıdır. Eğer bu parametreye çağrı sırasında bir değer sağlanmazsa, varsayılan değer kullanılır.

Named argument: Fonksiyon çağrısında hangi parametreye hangi değerin atanacağını açıkça belirlemenizi sağlar. Bu, özellikle birden fazla parametre içeren fonksiyon çağrılarında hangi değerlerin hangi parametrelere atanacağını daha okunabilir bir şekilde ifade etmenizi sağlar. Böyle yaparsak da parametrelerin verilme sırası da önemini kaybeder.

Soru 30: Higher order fonksiyon nedir?

Higher-order functions (yüksek seviyeli fonksiyonlar), bir fonksiyonun ya bir veya daha fazla fonksiyonu parametre olarak alması ya da bir fonksiyonu geri döndürmesi durumudur. Başka bir deyişle, yüksek seviyeli fonksiyonlar, fonksiyonları parametre olarak kullanabilir veya fonksiyonlar döndürebilir. Bu özellik, fonksiyonel programlamanın temel taşlarından biridir ve kodun daha esnek ve yeniden kullanılabilir olmasını sağlar.

Umarım faydalı bir yazı olmuştur. Bir sonraki yazıda görüşürüzz 🎉

--

--

Emine Şa
Emine Şa

Written by Emine Şa

Software Engineer | Android, Kotlin

No responses yet