Merhaba,


Bu yazıda yazılım geliştiriciler için teknik mülakatlarda çıkabilecek bazı sorulardan, cevaplardan ve yazılım terimlerinden bahsedeceğim. Elbette buradakiler dışında çok daha farklı şeyler de sorulabilir. Sizler de karşılaştığınız veya bildiğiniz soruları yorumlarınızda belirterek destek olabilirsiniz.


Soru: Nesneye yönelik programlamanın temel kavramları nelerdir?

Cevap: Maddeler halinde açıklamak gerekirse;

  • Nesne (Object); Kendine has özellikleri olan ve özelliklere bağlı olarak belirli bir durumda bulunarak çeşitli tutumlar sergileyen somut ya da soyut varlıklardır.
  • Sınıf (Class); Aynı türden nesnelerin oluşturduğu bir kümedir.
  • Metot; Bir nesnenin yapabileceklerini belirleyen kavramdır.
  • Kalıtım (Inheritance); Bir sınıfın belirli özellik ve tutumlarını bir üst sınıftan alarak, kendisi için farklı olan özellik ve tutumları ayrıca uyguluyor olmasıdır.
  • Soyutlama (Abstraction); Nesnenin uygulama için gerekli olan özelliklerinin kodlanarak, diğer özelliklerinin kodlanmaması anlamına gelir.
  • Çok biçimlilik (Polymorphism); Nesnelerin kendi türlerinin dışında farklı türler olarak da temsil edilmelerini sağlar.
  • Kapsülleme (Encapsulation); Nesnenin yaptığı işler ve durumuyla ilgili bilgilerin ve işlevsel karmaşıklığının gizlenmesi anlamına gelir.


Soru: SOLID prensipleri nelerdir?

Cevap: Nesneye yönelik programlamadaki standartlardır. Detaylı açıklamak gerekirse;

  • Single Responsibility: Bir nesnenin sadece bir sorumluluğu olmalıdır.
  • Open Closed: Nesne genişlemeye açık, değişikliğe kapalı olmalıdır.
  • Liskov's Substitution: Nesneler, programın çalışmasında sorun yaratmadan kendi alt örnekleriyle değiştirilebilmelidir.
  • Interface Segregation: Nesneler ihtiyaç duymadıkları metotların Interface'lerinden ayrıştırılmalıdır.
  • Dependency Inversion: Yüksek seviyeli sınıflar, düşük seviyeli sınıflara bağlı olmamalı, her ikisi de soyut kavramlara bağlı olmalıdır.


Soru: Library (Kütüphane) nedir?

Cevap: Önceden yazılmış hazır metotların olduğu alandır. Projeye dahil edilerek kullanılır.


Soru: Framework (Çatı) nedir?

Cevap: Önceden hazırlanmış kütüphanelerin bulunduğu bir iskelettir. Proje o iskelete göre inşa edilebilir.


Soru: Interface nedir?

Cevap: İçinde 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. Bir nevi sözleşme gibidir.


Soru: Abstract nedir?

Cevap: İçinde içi dolu metotların, değişkenlerin ve boş metotların tanımlanabildiği yapılardır. Ortak özellikleri bulunan nesneleri tek bir çatı altında toplayıp kod tekrarını azaltmak için kullanılır.


Soru: Compiler (Derleyici) nedir?

Cevap: Herhangi bir programlama dilindeki kaynak kodları makine diline çeviren uygulamadır.


Soru: HTTP nedir?

Cevap: İnternette sunucular ve son kullanıcılar arasında bilgilerin nasıl aktarılacağına dair kuralları ve yöntemleri düzenleyen sistemdir.


Soru: Authentication nedir?

Cevap: Kullanıcının kimliğini kontrol etmektir. Sisteme giriş yapmak için kullanılır.


Soru: Authorization nedir?

Cevap: Kullanıcının kaynaklara erişimini doğrulamaktır. Sistemde işlem yapmak için kullanılır.


Soru: MVC ne anlama gelir?

Cevap: Model, View ve Controller kelimelerinin kısaltmasıdır.

  • Model; Verileri temsil eden kısımdır.
  • View; Kullanıcının gördüğü arayüzdür.
  • Controller; Projedeki veritabanı işlemleri, hesaplamalar gibi her şeyin kontrol edildiği bölümdür.


Soru: API nedir?

Cevap: Herhangi bir uygulamanın belli işlevlerini diğer uygulamalarında kullanabilmesi için oluşturulan modüldür.


Soru: SOAP nedir?

Cevap: Simple Object Access Protocol'ün kısaltmasıdır. Türkçe olarak Basit Nesne Erişim Protokolü anlamındadır. İnternet üzerinden küçük miktarda bilgileri aktarma protokolüdür. Veriler genelde HTTP, bazen de TCP/IP ile gönderilir. XML formatındadır. XML kullanmaya mecbur bırakır.


Soru: REST nedir?

Cevap: İstemci ve sunucu arasında veri alışverişinin basit bir yoludur. JSON, XML, Text gibi formatlarda veri alışverişi yapılabilir. HTTP ile gönderilir. SOAP'a göre daha hızlı çalışır.


Soru: Middleware nedir?

Cevap: Ara katmandır. Örneğin bir Rest Api tasarlıyoruz. Token ile authentication işlemlerini hallediyoruz. Token gerektiren birkaç tane Api yazdık. Bu Api'lere gelen isteklerde Token'ın geçerliliğini kontrol etmek adına bir Middleware oluşturabiliriz. Böylece gelen istek Middleware'daki kontrolden geçemezse direkt olarak kesilir. Geçerse yoluna devam eder.


Soru: Lazy Loading nedir?

Cevap: Bir kod bloğu, nesne veya program parçasının sadece ihtiyaç duyulunca çalıştırılmasıdır.


Soru: SSL nedir?

Cevap: Sunucu ve istemci arasında verilerin şifrelenerek gönderilmesidir.


Soru: FTP nedir?

Cevap: Bir bilgisayardan başka bir bilgisayar ya da sunucu arasında bağlantı kurup dosya paylaşma protokolüdür.


Soru: Access Modifiers nedir?

Cevap: Sınıflara, nesnelere, metotlara vs. proje içerisinde nerelerden erişilebiliceğini tanımlayan kavramlardır.

  • Public; Proje içerisinde herhangi bir yerden erişilebilir.
  • Protected: Bulunduğu sınıf ve ondan türetilen diğer sınıflardan erişilebilir.
  • Private: Sadece bulunduğu sınıf üzerinden erişilebilr.


Soru: Coupling ve Cohesion nedir?

Cevap: Coupling; Sınıfların birbiriyle olan bağımlılığıdır. İyi bir yazılım için Coupling'in en aza indirilmesi önerilir. Cohesion; Bir sınıfın oluşturulma amacını ne kadar temsil ettiğidir. İyi bir yazılım için Cohesion'ın yüksek oranda olması önerilir. Örneğin matematik işlemi yapan bir sınıfta dosya işlemi olmamalıdır.


Soru: SQL'de bulunan Index, Trigger ve Stored Procedure kavramları nelerdir?

Cevap: Index; İlişkili tablonun indexleme alanı olarak kullanılan kolondaki verilere göre sıralanmış biçimde işleme konulmasını sağlar. Sorguların geç cevap vermesi durumunda kullanılır. Trigger; Tetikleyici anlamındadır. Veritabanında bir işlem yapıldığında başka bir işleminde otomatik olarak yapılması için kullanılır. Stored Procedure; Belli bir işi yapan kod parçasıdır. İlk derlemeden sonra bir daha derlenmeye ihtiyaç duymaz.


Soru: SQL'de Deadlock ne anlama gelir?

Cevap: Veritabanına iki ayrı işlem gönderilir ancak ikisi de diğer işlemin sonucuna bağlı olarak görevini yapacaktır. Bu ölümcül kilitlenme durumu önceden tespit edilip birine öncelik atanmalıdır.


Umarım faydalı olmuştur.


İyi çalışmalar.