Yazılım Mülakat Soruları

1 ) Nesne Yönelimli Programlama Nedir (OOP)
Ana mantık Uygulama içindeki nesneleri tespit edip her nesneyi parçalara bölerek yönetimi kolaylaştırmaktır.
Esneklik ve yönetilebilirlik sağlar.

 2 ) Access Modifiers (Erişim Belirleyicileri)
Sınıf içerisindeki elemanlara nerelerden erişilebileceğini belirleyen elemanlardır. Yetkilendirmeler ile erişim sınırını belirler.
  * Private : Kişisel anlamına gelir. Yani sadece tanımlandığı sınıf içerisinden erişilebilir. Ayrıca; private, varsayılan erişim belirleyici tipidir.

  * Protected: Miras alınan sınıflardan erişilebilir. Kod içinde bir değerin protected olarak tanımlanması; o değere, bulunduğu class ve ondan türetilen diğer sınıflar içinden erişilebilir olduğunu göstermektedir.

  * İnternal: Bulunduğu proje içerisinden erişilebilme'yi sağlar. Internal olarak tanımlanan bir değer; aynı program içerisinden erişilebilir, fakat farklı bir program içerisinden erişilemez durumdadır. Program içerisinde herhangi bir kısıtlaması yoktur.

Protected Internal: Hem miras alan classlardan hemde proje içerisindeki yerlerden erişilebilir.
protected + internal bilişimidir diyebiliriz.

Public: Heryerden erişilebilir demektir. Public erişim belirleyici tipinde hiç bir kısıtlama yoktur.

 3 ) Stack Nedir Heap Nedir  ? 
Kodumuz işletim sisteminde bir yer kaplar. Bu yerin boyutu kimi zaman belli yani değişmez iken kimi zaman ise kullanıcının program esnasında gireceği verilere göre değişebilecek durumdadır. Temel olarak bu farklılıktan dolayı iki farklı yöntemimiz var. Eğer program esnasında boyutları bildirilmiş değişmez bir değer kullanıyorsak stack, değişebilir bir değer kullanıyorsak heap bizim için uygun olacaktır. Stack ve heap kullanımları farklı ve dikkat edilmesi gereken bir konudur. Stack kullanılır ve işi bittikten sonra kendini otomatik olarak bellekten yok eder. Fakat heap‘te bu işi siz yapmalısınız.
 * Stack:  Kullanımı kolaydır. Bilgisayarda RAM’de tutulur. Tıpkı Heap gibi. Oluşturulan değişkinler stack kapsamından çıkınca otomatik olarak yok edilir. Ulaşılması heap‘e göre oldukça hızlıdır. Stack üzerinde kullanım fazla olduğunda alan yeterli olmayabilir. Mesela 20 boyutlu bir diziye 21 eleman atamak gibi… Oluşturulan değişkenler pointer olmadan kullanılabilir. Derleme zamanında oluşturulur. Kullanacağınız yerin boyutunu tam olarak biliyorsanız Stack‘i kullanmak sizin için uygun olacaktır. Stack LIFO mantığında çalışır. Yani son gelen ilk olarak çıkar.Struct tipindeki değişkenler değer tipleridir ve Stack içerisinde saklanır.
  * Heap: Bilgisayarda RAM’de tutulur.Tıpkı Stack gibi. Bir blok içerisinde oluşturulan heap değişkenler, bloğun dışına çıktığında otomatik olarak yok edilemez, bunun manuel olarak yapılması gerekir. Stack ile karşılaştırıldığında oldukça yavaştır. Doğru kullanılmaması durumunda bellek sorunları yaratır. Değişkenler pointer ile kullanılır. Çalışma zamanında oluşturulur. İhtiyacınız olan boyutu tam olarak bilmiyorsanız Heap kullanımı sizin için biçilmiş kaftandır.Class tipindeki değişkenler ise referans tipleridir, referansları Stack’de kendisi ise Heap’de saklanır.