Yazılım Mülakat Soruları.
Tags: genel
Published: 2020-12-26 13:43:57

---
title: Yazılım Mülakat Soruları.
published: true
date: 2019-06-24 08:58:37 UTC
tags: Genel
canonical_url: 
---

##### **1- Reference type, value type nedir?**

**Value Type,** Bilgileri hafızanın stack bölgesinde direk olarak saklayan nesnelerdir. Null değer alamazlar. Char, Bool örnek verilebilir.

**Referance Type,** Bilgileri hafızanın stack bölgesinde tutar yalnız heap bölgesinde bir referans değeri tutar. Null değer alabilir. String, Class örnek verilebilir.

##### **Encapsulation nedir? neyi sağlar ?**

Kapsülleme kavramı bir nesnenin bazı özellik ve işlevlerini başka sınıflardan ve nesnelerden saklamaktır. Kapsülleme (Encapsulation) sayesinde nesneler bilinçsiz kullanımdan korunmuş olur.  Genel tanımıyla kullanıcı tarafından  **verilerin** ,  **sınıfların**  ve  **metotların**  ne kadarının görüntülenebileceği ve değiştirilebileceğinin sınırlarının konulmasını sağlar.  Bir örnek ile açıklayacak olursak;  
  
 **Örnek 1:** Örneğin Bildirim adında klasımız ve içerisinde SMS(string msj, string numara) diye bir metodumuz olsun. Kullanıcı şunu bilecektir. Ben SMS klasına msj ve numara gönderirsem benim için SMS gönderecek. Ama kullanıcı SMS içinde geçen Türkçe karakterlerin İngilizce karakterlerle değiştirileceğini bilmeyecek.   
  
 **Örnek 2:** Ulke adında bir class’ımız var ve bu class Ad, Baskent, Nufus ve ParaBirimi’ni alıyor.  
 Biz para birimini default olarak TL ayarlıyoruz ve get’te bunu gösteriyoruz. Ama eğer set edilirse set edileni gösterebiliriz .

##### Erişim belirleyiciler nelerdir?

Kendi sınıfınızı yazacaksanız, öncelikle C# dilinde nesnelerin birbirleriyle ilişki kurarken hangi erişim kontrolleri ile çalıştığını bilmeniz önemlidir. Erişim belirleyiciler (access modifiers), sınıflara nerelerden ve ne şekilde erişileceğini belirtir.  
**Public:** Her yerden erişilebilir.   
**Private:** Sadece tanımlandığı sınıf içerisinden erişilebilir.  
**Internal** : Sadece bulunduğu projede erişilebilir.  
**Protected:** Sadece tanımlandığı sınıfta ya da o sınıfı miras alan sınıflardan erişilebilir.  
**Protected Internal:** Sadece tanımlandığı sınıfta ya da o sınıfı miras alan sınıflardan erişilebilir. Ayrıca tanımlamanın aynı proje içerisinde olma şartı yoktur. Protected’dan farkı budur.  
  
 Eğer erişim belirleyici belirtilmemişse, sınıflar **internal** ’dır.

##### **Garbage collector nedir?**

“Garbage Collector” uygulamanın ihtiyaç duymadığı tüm objeleri “ **heap** ” bellekten temizler.

##### **MVC kullanmanın avantajları nelerdir**?

- Katmanlı yapısı sayesinde karışıklığı engeller.
- Uygulama güvenliği konusunda büyük artıları vardır.
- Dışarıdan ulaşan herkese View kısmı gösterilir.
- Büyük projelerde, projenin denetimini ve yönetimini kolaylaştırır.
- Daha performanslıdır ve ekip çalışmasına uygundur.

##### **HTML Helper nedir?**

Html Helperlar WebForms’ta toolbox’ın içindeki objelere benzer. Oluşturmak istediğimiz html elementlerini kolayca oluşturmamızı sağlar. Belli propertyler alarak özelleştirme imkanı sağlar.

##### **Routing nedir?**

Routin adı üzerinde yönlendirmedir. Kabaca URL ile Action’larımızı eşleştirmemize imkan sağlar. SEO uyumu açısından önemlidir.

##### **HttpGet ve HttpPost attributeleri nedir?**

**HttpGet:**   Tarayıcı üzerinden direk olarak sonuç almak istenildiğinde kullanılır.  
**HttpPost:** Kullanıcı girdileri ile sunucuda bir şeyler değiştirmek istendiğinde kullanılır.

##### **TempData, ViewData ve ViewBag arasındaki farklılıklar nelerdir ?**

ViewBag, controller içerisinden atamış olduğumuz bir değeri sayfa içerisinde kullanmamızı sağlar. Asp.Net Mvc3 te C# 4 ile gelmiştir.   
  
Daha önceki sürümlerde ViewData kullanılmaktaydı.  
  
ViewData ve ViewBag aynı çalışma mantığına sahiptir. ViewBag, runtime esnasında oluşan dinamik bir yapıdır. ViewData, ViewDataDictionary sınıfı ile Key/Value ilişkisine göre çalışır.  
  
TempData’da benzer mantıkta çalışsa da bir view daha ileriye gitmemizi sağlar.

##### **Partial View nedir? Nasıl oluşturulur? Nasıl kullanılır?**

Partial View bize birden çok kullanılacak alanlarda fayda sağlar. Örneğin personel listesinin olduğu bir table düşünelim bunu maaş ekranında da eğitim ataması ekranında da kullanacaksak partila aracılığı ile yönetebiliriz. Tek yerde yazıp birçok yerde kullanım avantajı sağlar.

##### **Validasyonlar MVC de nedir ?**

Validation’un kelime anlamı doğrulamaktır. Kullanıcıların eksik ve yanlış bilgi girmesinin önüne geçmek ve yapılan hataları kullanıcıya göstermek için kullandığımız yapılardır. Propertylerin üzerinde tanımlanır.

##### **MVC’de AREA kavramı nedir?**

Kabaca bir örnek ile açıklayacak olursam; örneğin bir yönetim paneli ihtiyacımız var bu durumda yeni bir Area oluşturuyoruz ismini veriyoruz ve yeni bir MVC yapımız oluşuyor proje içerisinde. Sonrasında da  URL  Routing şemasını ekliyoruz ve artık bu sayede /Yonetim/İndex’ e gidebiliyoruz.

##### **Action Result türleri nelerdir?**

Bir çok result türü vardır. En sık kullanılanlar;  
**ViewResult** :Yazdığımız ActionResult ile aynı ada sahip View veya parametre olarka geçilen view’i geri döndüren Result türüdür.  
**JsonResult:** Özellikle Ajav ve Javascript işlemlerinde kullanacağımız verilerimizi json olarak döndüren Result türüdür.  
**RedirectResult:** Parametre olarak geçilen adresi yönlendirme yapan Result türüdür.  
**RedirectToRouteResult:** Diğer controller ve Action’lara yönlendirme yapabileceğimiz Result türüdür.  
**PartialViewResult:** Yazdığımız ActionResult ile aynı ada sahip PartialView veya parametre olarak geçilen PartialView’i geri döndüren Result türüdür.

##### **Action filter nedir? Ne zaman, neden ve nasıl kullanılır?**

Action Filter istek gönderilen action çalışmadan önce ve çalıştıktan sonra işlem yapabilmemizi sağlar. Genelde loglama için kullandım. Dikkat Sorabilir:  Action Filter, Exception Filter, Authorization Filter, Result Filter

##### **Index tanımını ve türlerini Nelerdir?**

Indexler bir tablo veya View da bulunan kayıtları hızlıca getirmemizi sağlarlar. Index tablo veya View da ki bir veya daha fazla kolon üzerinde bir anahtar üretir. Bu anahtarlar yapısal olarak (B-Tree) saklanr ve SQL Server’ın bir satıra kolayca ulaşmasını sağlarlar. Kümeli ve Kümesiz şekilide iki tipi vardır.

##### **Varchar ile Nvarchar arasında ne fark vardır?**

İkisi de veri tipidir. Varchar ASCII veri saklar, Nvarchar ise Unicode veri saklar.   
Varchar kullandığınızda her bir karakter için 1 byte yer kaplar, Nvarchar’da ise her bir karakter için 2 byte yer kaplar. Nvarchar ile örneğin; Kore, Japon, Çin alfabesindeki karakterleri de saklayabilirsiniz.

##### **Trigger nedir?**

Trigger yani tetikleyici, ilişkisel veri tabanı yönetim sistemlerinde bir tabloda belirli olaylar meydana geldiği zaman yani ekleme, güncelleme, silme işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır. 

##### **Lazy Loading nedir? Tersi nedir? Nasıl kapatabiliriz?**

Layz Loading; datanın ihtiyaç duyulmadığı sürece çağırılmaması, çalıştırılmaması anlamına gelir. Varsayılan olarak açıktır. Tersi Eager(istekli,hevesli) Loading’tir.  Kapatmak için;   
  db.Configuration.LazyLoadingEnabled = false;

##### **NoSQL nedir?**

İlişkisel olmayan veritabanlarını ifade eder. Datalar yığın halinde tutulur. Elastic Search kullanır mesela örnek olarak. Bir tek bankacılık işlemlerinde kullanılmamalıdır. Hızlıdır. Veri öneminin %100 olmadığı projelerde kullanılmalıdır.

##### **.net core nedir?**

.net core cross-platform son teknoloji frameworktür.

##### **Design Patternler nelerdir?**

Üç ana başlık altında toplanmıştır. Kendi içerisinde alt başlıkları mevcuttur.  
  
**Creational(Yaratışsal):** Nesneleri yaratmakta kullanılan 5 adet tasarım kalıbını içerir ve nesnelerin yaratılışı hakkında yol gösterirler.  
**Structural(Yapısal):** Nesneler arasındaki yapıları ifade eden ilişkilerden 7 adet tasarım kalıbı içerir ve esnelerin birbirleriyle olan ilişkilerini gösteren kalıptır.  
**Behavioral(bihevriıl Davranışsal):** Nesnelerin çalışma zamanına ait davranışlarını değiştirmek için oluşturulan tasarımları içeri ve 11 adettir. Nesne davranışlarını takip eden kalıptır.

##### **SOLID prensipleri nelerdir?**

SOLID, OOP (Object Oriented Programming) projelerinin standartları olarak bilinir. 5 Maddeden oluşur.  
**1- Single Responsibility Principle (Tek sorumluluk Prensibi):** Nesnenin sadece bir sorumluluğu olmalıdır. Örneğin: Her bir metot sadece kendisine verilen işi yapmalı aynı anda birden fazla modeli update etmemeli.  
**2- Open/Closed Principle (açık-kapalı prensibi):** Nesnelerin geliştirmeye açık ama değişime kapalı olmaları anlamına gelmektedir.  
**3- Liskov ‘s Substitution(subsutişın) Principle (Liskov‘un yer değiştirme prensibi):** Kalıtım alarak türeyen sınıfların kalıtım aldıkları nesnenin tüm özellikleri kullanmalı ve sonrasında kendi özelliklerini barındırmasını hedefleyen bir prensiptir.  
**4- Interface Segregation(segregeşın) Principle (Arayüz ayırım prensibi)**: bir Interface gerektiğinden fazla yetenek eklenmemesi gerektiğini söyler. Nesnelerin ihtiyaç duymadıkları fonksiyonların Interface’lerinden münkün olduğunca ayrıştırılmasıdır.  
**5- Dependency Inversion Principle(Bağlılığı Tersine Çevirme Prensibi):** üst seviye sınıflar, modüller, methodlar vs. alt seviyeli sınıflara bağımlı olmamalıdır. Alt sınıflarda yapılan değişiklikler üst sınıfları etkilememelidir. Yüksek seviyeli sınıflar, düşük seviyeli sınıflara bağlı olmamalıdır.

##### **agile nedir?**

**Agile(Ecayl):** Bir yazılım geliştirme metodolojisidir.Bu yaklaşım 2001 Yılında 17 yazılım üstadının bir araya gelerek yayınladığı manifesto ile hayatımıza girmiştir. Manifestoda, diyorlar ki biz yazılım geliştiriciler olarak yazılım geliştirmenin daha iyi yollarını arıyoruz ve aşağıdaki değerleri ilan ediyoruz.  
Şu değerler oraya konuyor;  
**1 –** Bireyler ve etkileşimler, süreçler ve araçlardan daha önemli!  
**2 –** Çalışan yazılım kapsamlı dokümantasyondan daha önemli!  
**3 –** Müşteri ile işbirliği yapmak, müşteri ile sözleşme kavgası yapmaktan daha önemli!  
**4 –** Sürekli var olan değişime karşılık vermek için ve bunu için hazır olmak, zamanında yapılmış olan planı takip etmekten daha önemli!  
Dolayısıyla bu yaklaşımı benimseyen, kucaklayan, bu değerlere uyan her türlü yaklaşım Agile Yazılım geliştirme yaklaşımı olarak söylenebilir.

##### **WCF nedir?**

Windows Communication Foundation  **WCF** , servis-yönelimli mimariyi temel alarak dağıtık-uygulamalar geliştirmek için kullanılan, dağıtık mimari modelleri ve teknolojileri tek çatı altında birleştiren ve içerisinde bir çok hazır bileşen barındıran bir Framework Api‘sidir. Api topluluğudur.