Accenture, Google, Delivery Hero ve Microsoft gibi teknoloji şirketleri C# kullanıyor. Pek çok şirket C#’ı tercih ediyor ve C# programlama dilini bilen geliştiricilere gün geçtikçe ihtiyaç artıyor.
Mülakatlarda teknik sorunlarla aniden karşılaşınca oluşan stresin nasıl bir duygu olduğunu biliyoruz. Bu nedenle, teknik yazılım mülakatına gitmeden önce alıştırma yapmakta fayda var. Listelediğimiz en çok sorulan C# mülakat sorularına göz atarak teknik mülakata hazır hale gelebilirsiniz.
İster C# geliştiricisi olmak isteyen yeni başlayan programcı olun, isterseniz iş değiştirmek isteyen deneyimli bir profesyonel olun, C# ile ilgili en çok sorulan mülakat sorularına ve yanıtlarına bir göz atın.
1. C# nedir?
C# yani diğer bir adıyla C Sharp, Microsoft tarafından geliştirilen sunucu ve gömülü sistemleri çalıştırmak için tasarlanmış programlama dilidir. .NET Framework ortamında kullanılmak üzere geliştirilmiş nesne tabanlı programlama dillerinden birisidir.
C#, .NET çerçevesiyle birlikte kullanılır. C#, C ve C++ dillerine dayanmaktadır. Ancak, C# aynı zamanda otomatik bellek yönetimi ve Common Language Infrastructure (CLI) desteği gibi birçok yeni özellik ve iyileştirme de içerir.
C#'ın en önemli özelliklerinden biri, nesne yönelimli programlama (OOP) desteği sunmasıdır. Windows masaüstü uygulamaları, web uygulamaları, mobil uygulamalar, oyunlar vb. gibi geniş bir yelpaze programlama görevleri için kullanılan esnek bir dildir.
2. C#’ın temel özellikleri nelerdir?
- Nesne yönelimli programlama (OOP): C#, sınıflar ve nesneler içerir.
- Değişkenler ve veri tipleri: C#, geniş bir veri tipi yelpazesine sahiptir.
- Diziler: C#, aynı veri tipinde birden fazla değişkeni depolamak için diziler kullanılabilir.
- Döngüler: C#, for, while, do-while gibi döngüleri destekler.
- Sınıflar ve nesneler: C#, nesne yönelimli programlamayı sağlar ve sınıflar ve nesneler aracılığıyla kod yazılabilir.
- Platform bağımsız: C#, .NET Framework ile birlikte çalışır.Windows, Linux ve macOS gibi farklı işletim sistemlerinde çalışabilir.
3. C#'ın C'den farkı nedir?
C#, nesne yönelimli bir programlama dili iken, C prosedürel bir dildir. C# ve C arasındaki en büyük fark; C#, CLR tarafından otomatik çöp toplamayı desteklerken C'nin desteklememesidir. C# platformdan bağımsız bir programlama dilidir.
4. C#'da diziler, listeler ve koleksiyonlar arasındaki farklar nelerdir? Hangi durumda kullanılırlar?
C#'da diziler, listeler ve koleksiyonlar verileri saklamak için kullanılan temel veri yapılarıdır. Hangi veri yapısını kullanacağınız, projenin ihtiyacına ve kullanım amacına göre değişir. Bunların temel farkları vardır:
- Diziler: C#'da sabit boyutlu ve dizinli veri yapılarıdır.
- Listeler: Listeler, C#'da dinamik boyutlu ve dizinli veri yapılarıdır.
- Koleksiyonlar: C#'da genişletilebilir ve özelleştirilebilir veri yapılarıdır.
5. C#'ta çöp toplama nedir?
Çöp toplama, istenmeyen nesneler tarafından yakalanan belleği boşaltma işlemidir. Çöp toplama üç durumda gerçekleşir:
✔️ Nesneler tarafından kullanılan bellek önceden ayarlanmış eşik değerini aşarsa
✔️ Çöp toplama yöntemi başlatılırsa
✔️ Sistemde düşük fiziksel bellek varsa
6. Ortak Dil Çalışma Zamanı (CLR) nedir?
CLR, C# dahil olmak üzere çeşitli diller için program yürütmeyi yönetir. CLR mimarisi bellek yönetimini, çöp toplama ve güvenlik işlemlerini gerçekleştirir.
7. C#'daki sınıf türleri nelerdir?
Sınıf, nesnelerinin ve örneklerinin tüm özelliklerini kapsayan bir varlıktır. C#'ta
-Statik sınıf
-Kısmi sınıf
-Soyut sınıf
-Mühürlü sınıf
olmak üzere dört tür sınıf vardır.
8. C#'da threading ne zaman ve nasıl kullanılır?
Threading, aynı ortamda aynı anda birden fazla işi yapmaya denir. Thread’ler ise bu işlerin her biridir. Thread’ler aynı anda çalıştığında işlemciye process’ler olarak gider ve sıraya alınır.
C#'da threading, bir uygulamanın birden fazla iş parçacığını aynı anda çalıştırmasını sağlar. Bu sayede, uygulama içinde birden fazla işlemi aynı anda yürütebilir ve işlemler arasında zaman kaybını azaltılabilir. Threading şu durumlarda kullanılır:
✔️ Threading, uygulamanın içinde yer alan uzun süreli işlemlerin yürütülmesi istendiğinde,
✔️ Birden fazla işlemi aynı anda yürütmesi istendiğinde kullanılır.
9. Yönetilen ve yönetilmeyen kod nedir?
1️⃣ Yönetilen kod, kodu .NET çerçevesinde yönetilen bir CLR çalışma zamanı ortamında çalıştırmaya olanak tanır. Çöp toplayıcı, istisna işleme vb. gibi çeşitli hizmetler sağlar.
2️⃣ Yönetilmeyen kod, kodun .NET çerçevesinin dışında çalışan bir koddur. Kod CLR'de çalışmaz.
10. C# diziler nasıl tanımlanır?
Diziler, aşağıdaki gibi tanımlanabilir:
veya
11. C#'da nesne tanımlaması nasıl yapılır?
Sınıf oluşturmak için 👇;
Nesne oluşturmak için 👇;
12. C#'ta sınıflar nelerdir?
C#, nesne yönelimli bir dil olduğu için sınıfları yoğun bir şekilde kullanır. Sınıf, verilerin bir program içinde nasıl yapılandırılacağını, depolanacağını ve yönetileceğini tanımlayan bir kavramdır. C#'ta sınıf tanımlamak için class anahtar kelimesi kullanılır.
📍 Örnek bir sınıf tanıtımı:
13. C#'ta nesneler nelerdir?
Nesneler, sınıf niteliklerini ve yöntemlerini kullanarak nesnelerin özelliklerini temsil edebilen sınıf örnekleridir. Nesneler, bir sınıf şablonuna dayanarak oluşturulur. C#'ta nesne oluşturmak için new anahtar kelimesi kullanılır.
14. C#'ta 'Break' ve 'Continue' arasındaki fark nedir?
1️⃣ Break: Döngüyü sonlandırmak için kullanılır. Bir döngü içinde break ifadesi ile karşılaşıldığında, döngüden çıkılır.
C# For döngüsünde Break komutu kullanımı şu şekildedir:
i 3 olduğunda döngü sonlanır.
C# While döngüsünde Break komutu kullanımı şu şekildedir:
i=10 olduğunda döngüden çıkılacaktır.
2️⃣ Continue: Döngü içindeki işlemi atlar ve sonraki yinelemeyi döngünün başından başlatır. Yalnızca döngülerde kullanılır.
C# For döngüsünde Continue komutu kullanımı:
i=4 olduğunda döngü bu adımı atlar ve bir sonraki adıma geçer.
C# While döngüsünde Continue komutu kullanımı:
Döngü 5'e geldiğinde bir sonraki adıma geçer.
15. Hata işleme için kullanılan C# anahtar kelimeleri nelerdir?
✔️ Try: Hataların olabileceği bir kod bloğunu işaret etmek için kullanılır.
✔️ Catch: Bir try bloğu içinde oluşan hataları yakalamak ve işlemek için kullanılır.
✔️ Finally: Bir hatanın işlenip işlenmediğine bakılmaksızın, try bloğu içerisindeki kodların her zaman çalışmasını işaret eder.
✔️ Throw: Bir sorunla karşılaşıldığında istisna işaretlemek için kullanılır.
16. C#’ta accessors (erişim belirleyici) nedir?
C#'ta accessors, bir sınıfın veya bir sınıfa ait özelliğin dışarıdan erişilebilirliğini ve değiştirilebilirliğini kontrol etmek için kullanılan özel yapıdır.
- Get: Özel bir alanın değerini almak için kullanılır.
- Set: Özel bir alana değer atamak için kullanılır.
17. C#'ta yorum eklemenin farklı yolları nelerdir?
📍 Tek satırlık yorum (//):
📍 XML yorumu (///):
📍 Çok satırlı yorum (/* */):
18. C#' ta Değer ve Referans türleri nedir?
C#’ta değer ve referans türleri olmak üzere 2 tane veri türü bulunur.
1️⃣ Değer Türü: Veri değerini doğrudan ayrılmış bellek alanında depolar. Bellekte az yer kaplar ve hızlı bir şekilde erişilebilir. > “int”, "long", "float", "double", "decimal", "char", "bool", "byte", "short", "struct", "enum"
2️⃣ Referans Türü: Verileri doğrudan kendi belleğinde depolamaz. Bunun yerine, değişken veri değerini tutan başka bir bellekte bir referans depolar. Yani, veri yerine adresi tutar ve o adresin gösterdiği yerde de veri tutulur. > "string", "object", "class", "interface", "array", "delegate", "pointer"
19. C# Destructor nedir?
C#'ta Destructor, bir sınıftan oluşturulan nesnenin ömrü sona erdiğinde otomatik olarak çağrılan özel bir metodudur. Destructor, .NET Garbage Collector tarafından kullanılan ve bellek yönetimi sürecinde önemli bir rol oynayan bir yapıdır. Constructor'ın tam tersidir. Bir destructor tanımlamak için, sınıf adı ve yaklaşık işareti kullanılır.
📍 Örnek syntax:
20. C# enum nedir?
Enum yani numaralandırma, C# dilinde bir değeri temsil eden veri türüdür. Ana kullanım amacı, bir programın okunmasını ve bakımını kolaylaştıran tam sayı sabitlerine adları veya dize değerlerini atamak için kullanılır.
📍 enum tanımlanırken, önceden belirlenen sabit değerler parantez içinde virgülle ayrılarak belirtilir.
21. C# dilinde Boxing ve Unboxing nedir?
Kutulama veya kutudan çıkarma olarak çevrilen bu iki işlem, C#'ta önemli bir kavramdır. C# tip sistemi, değer tipleri, referans tipleri ve işaretçi tipler olmak üzere üç veri tipi içerir.
📥 Boxing: Değer tipini (char, int, vb.), referans tipine (nesne) dönüştürme işlemine Boxing denir.
📤 Unboxing: Referans tipini değer tipine dönüştürme işlemine Unboxing denir.
22. C#'ta kısmi sınıflar (partial classes) nelerdir?
✅ Kısmi sınıf yani diğer bir adıyla partical classes, C#'ın özel bir özelliğidir. Tek bir sınıfın işlevselliğini birden çok dosyaya uygulamayı sağlar.
✅ Aynı sınıfın kodu farklı dosyalara bölünebilir ve hepsi birleştirilerek tek bir sınıf olarak çalışır.
✅ Kısmi sınıflar, özellikle büyük ve karmaşık sınıfların daha düzenli ve okunabilir bir şekilde yönetilebilmesi için kullanışlıdır.
23. C#'da kullanılan veri tipleri nelerdir?
C#'da kullanılan veri tipleri sayısal ve karakter veri tipleri olmak üzere ayrılırlar.
Sayısal veri tipleri şunlardır:
- int: Tam sayılar için kullanılır.
- long: Uzun tam sayılar için kullanılır.
- float: Kısa ondalıklı sayılar için kullanılır.
- double: Uzun ondalıklı sayılar için kullanılır.
- decimal: Özel olarak büyük ondalıklı sayılar için kullanılır.
Karakter veri tipleri şunlardır:
- char: A ve B gibi tek bir karakter için kullanılır.
23. C#'ta uzantı yöntemleri nelerdir?
📍 Uzantı yöntemleri, mevcut yöntemlere yeni yöntemler eklenmesine yardımcı olur. Eklenen yöntemler statiktir. Varolan bir sınıfa metot eklemek istediğinizde, ancak o sınıfı değiştirme hakkınız olmadığında veya haklara sahip olmadığınızda, yeni metotları içeren yeni bir statik sınıf oluşturabilirsiniz.
24. C#'da exception nasıl yapılır ve ne zaman kullanılır?
Exception handling, uygulama içinde oluşabilecek hata durumlarını yönetmek için kullanılan bir mekanizmadır. Exception handling, hata oluştuğunda uygulamanın normal işleyişini bozmadan hata durumunu ele almasını ve hata ile ilgili işlemleri gerçekleştirmesini sağlar.
25. C#'da LINQ (Language Integrated Query) kullanımı hakkında bilgi verin.
LINQ (Language Integrated Query), C# dilinde veri sorgulama işlemlerini yapmak için kullanılan bir teknolojidir. LINQ, verileri sorgulamak, filtrelemek, sıralamak ve dönüştürmek gibi işlemleri yapmak için kullanabileceğiniz sorgu ifadelerini C# diline entegre etmeyi amaçlar.
Veri kaynağı, SQL veri tabanı, XML dosyası, bir liste veya bir dizi gibi herhangi bir şey olabilir. LINQ, veri kaynağının türüne bağlı olarak sorgu ifadelerini uygun bir şekilde adapte eder.
26. C#'ta 'using' ifadesinin kullanımı nedir?
'Using', bir kaynak elde etmek, onu işlemek ve ardından bloğun yürütülmesi tamamlandığında otomatik olarak elden çıkarmak için kullanılır.
27. “This” komutunu statik bir metot içinde kullanabilir mi?
Statik bir yöntemde 'This' kullanılmaz. Statik bir yöntemde yalnızca statik değişkenler/yöntemler kullanılabilir.
28. C#’ta ref & out parametreleri arasındaki fark nedir?
"ref" ve "out" parametreleri, C# programlama dilinde metodların veya fonksiyonların çağırılması sırasında kullanılan anahtar kelimelerdir. "ref" parametreleri, metod veya fonksiyon çağrılmadan önce değer atanmış olan değişkenlerdir.
C# Kariyerinize Başlayın
C# öğrenmek, iyi bir kariyere sahip olmanızı sağlayabilir. Pek çok açıdan, C# öğrenilmesi gereken bir programlama dili olarak görülüyor.
Yeni başlıyorsanız C# Bootcamp’lerine katılabilir ve kendinizi geliştirebilirsiniz. Zaten halihazırda yılların deneyimine sahip bir geliştiriciyseniz, Coderspace’e üye olabilir ve sizin için doğru işi bulmanızı sağlayabiliriz.