Yazılım İş Görüşmesi Soruları ve Cevapları

Yazılım iş görüşmelerinde sorulan bazı örnek soruları cevaplarıyla birlikte elimden geldiğince açıklamaya çalıştım. Bu soruların yazılım mülakatlarında karşınıza çıkması ihtimali oldukça yüksektir.

1) Access Modifiers nedir, anahtar kelimeleri nelerdir?
Access modifiers, sınıflara nerelerden ve ne şekilde erişileceğini belirtir. 5 adet anahtar kelimesi vardır. Bunlar;
Public : Kod içerisinde herhangi bir yerden erişilebilir, hiç bir kısıtlama yoktur.
Protected : Sadece bulunduğu class ve ondan türetilen diğer sınıflar içerisinden erişilebilir.
Private : Sadece kendi class’ı içinden erişilebilir. Varsayılan erişim belirleyicisidir, yani class içerisinde tanımlanan öğeler varsayılan olarak private tanımlanır.
Internal : Aynı program içerisinden(.dll veya .exe) erişilebilir, fakat farklı bir program içerisinden yani dışardan erişilemez durumdadır.
Protected Internal : Tanımlandığı class’ın içinden ve ondan türetilen sınıfların içinden erişilir. Bunu protected ve internal anahtar kelimelerinin “VEYA (OR)” hali gibi düşünebiliriz.

 
2) Interface nedir?
Sadece kendisinden türeyen sınıfların içini doldurmak zorunda olduğu içi boş metot tanımlarının yapıldığı bir yapıdır. Genellikle çoklu kalıtım ihtiyacını gidermek için kullanılırlar. İçinde değişken tanımlanmaz ve erişim kısıtlayıcılar(access modifiers) interface’in içinde yazılamaz.

3) Abstract class nedir?
Genelde ortak özellikleri olan nesneleri tek bir çatı altında toplamak ve kod tekrarını azaltmak için kullanılır. Yeni bir instance(nesne) türetilemez, interface’lerden miras alınamazlar.

4) Abstract method nedir?
Sadece abstract class’ların içerisinde tanımlanır ve abstract class’ı kalıtan diğer sınıf tarafından override edilmek zorundadır. Abstract method’lar private olarak tanımlanamaz.

5) Override ve Virtual nedir?
Override : Miras alınan metodun ezilmesi işlemini sağlar, yani metodun içini değiştirmektir.
Virtual : Bir sınıfın miras alınan sınıflardaki metodunun ezilebilmesini, değişebilmesini sağlar, aslında override edilebilmesine müsaade etmektir.
Daha detaylı bilgi için buradaki yazıma bakabilirsiniz : https://bitimek.com/c-virtual-ve-override-kullanimi/

6) Virtual ile abstract arasındaki temel fark nedir?
Abstract’ın virtual’den farkı, abstract mutlaka override edilmelidir. Virtual’de ise böyle bir zorunluluk yoktur.

7) Interface ile abstract class arasındaki farklar nelerdir?
*Bir sınıf bir interface’i implement ediyorsa o interface’in bütün elemanlarını kullanmak zorundadır. Ama abstract’da ise o abstract class’ın içindeki sadece abstract olan elemanları implement etmek zorundadır, diğer elemanları implement etmek zorunda değildir.
*Abstract class’da metot ve değişkenler tanımlanabilir ama interface içerisine sadece boş metotlar tanımlanabilir.
*Bir sınıfa birden fazla interface implement edilebilir ama birden fazla abstract sınıf inherit edilemez.
*Interface’in elemanları public, private gibi erişim belirleyicileri barındırmazlar, ama abstract class’ın elemanları barındırır.

8) Design Pattern nedir, kısaca açıklayınız?
Yazılımda çok sık rastlanan birbirine benzer sorunları çözmek için geliştirilmiş genel çözüm önerileridir. Örneğin MVC bir design patterndir. Singleton, abstract factory gibi başka örneklerde verilebilir.

9) Static class ile normal class arasındaki fark nedir?
Static metotlar yeni bir instance yazılarak çağrılamaz, sadece statik üye içerebilirler, başka bir sınıftan inherit edilemez.

10) Static bir sınıfın üyeleri static olmak zorunda mıdır sebebini açıklayınız?
Evet, bir sınıf static olarak tanımlanıyorsa, içerisindeki bütün üyeler de static olarak tanımlanmak zorundadır. Amaç tüm üyeleri static olmaya zorlamaktır.

11) Polymorphism nedir?
Polymorphism yani çok biçimlilik, içindeki işlemlerin aynı olmasına rağmen temelde aynı işi yapmaya denir.

12) Generic class nedir?
Normal sınıftan farkı, kullanılacak olan tiplerin sınıf tanımlama aşamasında belirtilmesidir. Yani tasarım anında tipin belli olmamasıdır. Aynı işi farklı veri türlerinde yapmak için birden fazla sınıf tanımlıyorsanız kullanmak gerekir.

13) Overloading nedir?
Overloading yani aşırı yükleme, metot isimlerinin aynı fakat aldığı parametrelerin tiplerinin ya da sayılarının farklı olduğu durumlara overloading denir.

14) Sealed anahtar sözcüğü nedir?
Sealed, sınıflar için kalıtım yapmayı, üyeler için ise override edilmeyi önler. Örneğin sealed olarak tanımlanan bir class’ı başka bir class’da kalıtım yapmak için kullanamazsınız.

15) Serialization nedir?
Nesnenin bir kopyasını kullanarak, o kopyayı ulaşılabilir bir formata çevirme işlemine denir. Nesnenin o anki durumu korunur.

16) Deserialization nedir?
Serialize olmuş objenin ilk haline yani obje haline geri dönüştürülmesine denir.

17) Stored procedure nedir?
Database server’ında tutulan ve ilk derlenmeden sonra bir daha derlenmeye ihtiyaç duyulmayan SQL ifadeleridir. DB Server’ında tutulduğu için çok hızlı çalışırlar, hızlı çalışmasının sebebi ise bir kez derlendikten sonra bir daha derlenmeye ihtiyaç duymamalarıdır. Halbuki uygulama katmanında yazmış olduğumuz SQL kodu her çağırmada tekrar tekrar derlenmek zorundadır.

18) Trigger nedir?
CRUD işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır.

19) Deadlock nedir?
İki ya da daha fazla işlemin devam etmek için birbirlerinin bitmesini beklemesi ve sonuçta ikisinin de devam edememesi durumudur. Çözüm için hangi işlemin daha önce yapılacağını tespit edip o işleme öncelik verilerek bu durum çözümlenebilir.

20) Boxing ve Unboxing nedir?
Boxing, belleğin stack(yığın) bölgesinde saklanan değer türünde bir değişkenin referans türüne atayarak heap(öbek) alanında saklanacak hale getirmektir.
Unboxing ise, heap(öbek) bölgesinde tutulan bir değeri referans türünden tekrar kendi değer türüne dönüştürme işlemine denir.
Örnek;
int deger = 123;
object o = (object)deger; –> Boxing yapıldı
deger = (int)o; –> Unboxing yapıldı

21) API nedir?
Herhangi bir uygulamanın belli işlevlerini diğer uygulamalarında kullanabilmesi için oluşturulmuş bir modüldür.

 
Bu sorular karşınıza çıkması muhtemel sorulardır, zaman zaman bu yazıyı güncelleyeceğim, hepinize bol şans 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir