Kotlin Mülakat Soruları Part 5

Emine Şa
3 min readAug 26, 2024

Bugün serinin 41–50 arasındaki soru ve cevapları olacak. O zaman başlayalım 🎉

Soru 41: First-class citizen ne demektir?

Kotlin’de fonksiyonlar first-class citizens olarak kabul edilir. Bu, fonksiyonların parametre olarak alınabileceği, değişkenlerde saklanabileceği ve başka fonksiyonlardan geri döndürülebileceği anlamına gelir. Kısacası, fonksiyonlar değer olarak atanabilir, parametre olarak geçirilebilir ve geri dönüş değeri olarak kullanılabilir.

Soru 42: Interface’ler hangi amaçla kullanılır?

Interface’leri, aynı fonksiyonun farklı sınıflarda farklı şekillerde çalışmasını sağlamak için kullanırız. Bu sayede, her sınıf kendi ihtiyaçlarına uygun şekilde özelleştirilmiş fonksiyonlar oluşturabiliriz.

Örneğin, bir Hayvan interface'i tanımlayarak, her hayvanın kendine özgü makeSound() fonksiyonuyla ses çıkarmasını sağlayabiliriz. Kedi ve Köpek sınıfları bu interface'i implement ederek makeSound() fonksiyonuyla farklı sesler çıkartabilirler.

Soru 43: Interface -Abstract class farkları nedir?

  • Interface’ler implement edilir, abstract class’lar inherit edilir.
  • Interface’ler state tutamazlar.
  • Abstract class’ların constructor’ları vardır.
  • Bir sınıf birden fazla interface’i implement edebilir, ama sadece bir abstract class’ı inherit edebilir.
  • Abstract sınıflarda abstract method’ları override etmek zorundayız.

Soru 44: Interface’lerde bulunan fonksiyonlar kesin olarak override edilmek zorunda mıdır?

Eğer interface içindeki fonksiyonun bir body’si yoksa, bu fonksiyonu implement eden sınıfların override etmesi zorunludur. Ancak, eğer fonksiyonun bir body’si varsa (yani varsayılan bir implementasyon sunulmuşsa), bu durumda override etmek zorunlu değildir.

Soru 45: Data class nedir, hangi amaçla kullanılır?

Data class, içerisinde belirlediğimiz türde veriyi tutan, saklayan ve yöneten özel bir sınıf yapısıdır.

  • En az bir değişken içermesi gereklidir.
  • Data class’larda val veya var ile tanımlanması gerekir. Böylece değişkenler için get ve set metodları otomatik olarak üretilir.
  • Ayrıca, equals(), hashCode(), ve toString() metodları da otomatik olarak sağlanır. copy() fonksiyonu ile mevcut nesneden yeni nesneler oluşturulabilir.

Soru 46: Data class’lar ile Data Object ‘ler arasında ne fark vardır?

  • data classile her seferinde yeni bir nesne oluşturulurken, data object singleton’dır, tek bir instance vardır.
  • data class parametre alabilirken, data object parametre alamaz.
  • data class'ın farklı örnekleri farklı veriler tutabilir, data object ise sabit bir veri tutar.

Soru 47: Enum class’ları ne amaçla kullanırız?

Enum class’lar, birbirleriyle ilişkili sabit değerleri düzenli bir şekilde temsil etmek için kullanılır. Örneğin, haftanın günleri ya da kullanıcı rolleri gibi sabitleri grup halinde tutmayı sağlar. Bu sınıflar, kodu daha düzenli ve anlaşılır hale getirir.

enum class Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

Soru 48: Sealed class’lar ne amaçla kullanılır?

Sealed class’lar, birbirleriyle ilişkili ve bir grup sınıfı tek bir yapıda toplamak için kullanılır. Enum class’lardan farklı olarak, belirli alt sınıfların neler olabileceğini derleme zamanında belirler ve bu alt sınıflarla çalışırken daha güvenli bir şekilde kod yazmamıza olanak tanır.

sealed class Result

data class Success(val data: String) : Result()
data class Failure(val error: String) : Result()
object Loading : Result()

Soru 49: Sealed class’ların when yapıları ile ilişkisi nedir?

Sealed class’lar, when yapıları ile kullanıldığında her olasılığın ele alınmasını sağlar. Çünkü sealed class'lar, tüm alt sınıflarını bildiğimiz kapalı bir hiyerarşi sunar. Bu nedenle, sealed class'lar ile when kullanıldığında, tüm durumlar işlenmezse, Kotlin derleyicisi bir uyarı verir ve bu, güvenli bir şekilde tüm olasılıkları ele almamızı sağlar.

Soru 50: Nested class ile inner class arasında fark nedir?

  • Nested class: Bir sınıfın içinde tanımlanan ve genellikle statik olan bir sınıftır. Nested class'ın nesnesini doğrudan oluşturabilir, dış sınıfın nesnesine ihtiyaç duymaz.
  • Inner class: Bir sınıfın içinde tanımlanan ve dış sınıfın nesnesine bağlı olan bir sınıftır. Inner class'ın nesnesini oluşturmak için, dış sınıfın bir nesnesine ihtiyaç duyar.

Kısaca, Nested class dış sınıftan bağımsızken, Inner class dış sınıfın nesnesine bağlıdır.

Bu haftaki soru cevap kısmının sonuna geldik. Eksik gördüğünüz yerler varsa ve eklemek isterseniz yorumlara yazın lütfeen👇🏽 Sonraki 10 soru cevapta görüşürüzz 🎉

--

--

Emine Şa
Emine Şa

Written by Emine Şa

Software Engineer | Android, Kotlin

No responses yet