C#’ta sık sorulan veya bilinmesi gereken özel yapıların (special classes / types) listesi

C#’ta sık sorulan veya bilinmesi gereken  özel yapıların (special classes / types) listesi

🧩 1. Koleksiyonlar (Collections)

C#’ta System.Collections.Generic içinde en sık kullanılan yapılar 👇

KoleksiyonAçıklamaKullanım Örneği
List<T>Dinamik boyutlu dizivar list = new List<int> {1,2,3};
Dictionary<TKey, TValue>Anahtar-değer (key-value) yapısıvar dict = new Dictionary<string,int>{{"a",1}};
HashSet<T>Tekil (unique) değer kümesivar set = new HashSet<int>{1,2,2}; // {1,2}
Queue<T>FIFO (ilk giren ilk çıkar)queue.Enqueue(1); queue.Dequeue();
Stack<T>LIFO (son giren ilk çıkar)stack.Push(1); stack.Pop();
LinkedList<T>Çift yönlü bağlı listelist.AddFirst(10); list.AddLast(20);
SortedList<TKey, TValue>Sıralı key-valuenew SortedList<int,string>{{2,"b"},{1,"a"}};
SortedDictionary<TKey,TValue>Dictionary ama key’ler sıralıforeach(var kv in dict)
ObservableCollection<T>Değişiklikleri event olarak bildiren liste (WPF’de sık)collection.CollectionChanged += ...;

⚙️ 2. Non-Generic (Eski) Koleksiyonlar

Eski ama hâlâ bazı legacy projelerde görürsün.

KoleksiyonAçıklama
ArrayListHer türden öğe tutar (boxing/unboxing yapar)
HashtableKey-value ama object tabanlı (generic değil)
Queue, StackGeneric olmayan versiyonlar

⚠️ Bunlar yerine her zaman generic versiyonları (List<T>, Dictionary<TKey,TValue>) tercih edilir.


🔐 3. Thread-Safe (Concurrent) Koleksiyonlar

Çok çekirdekli ortamlarda (örneğin senin EventSourcing sisteminde) bunlar önemli.

SınıfÖzellik
ConcurrentDictionary<TKey, TValue>Thread-safe dictionary
ConcurrentQueue<T>Thread-safe FIFO
ConcurrentStack<T>Thread-safe LIFO
ConcurrentBag<T>Rastgele thread-safe koleksiyon
BlockingCollection<T>Thread-safe producer/consumer pattern (queue tabanlı)

🧠 4. İleri Seviye Generic Yapılar

YapıAçıklama
Tuple<T1, T2, …>Çoklu değer döndürmereturn Tuple.Create(1, "abc");
ValueTupleDaha modern tuple(int id, string name) = (1, "Ahmet");
KeyValuePair<TKey, TValue>Dictionary entry temsilcisiforeach(var kv in dict)
Nullable<T> (T?)Null olabilen value typeint? age = null;
Span<T> / Memory<T>Bellek üzerinde yüksek performanslı slice işlemleri (C# 7.2+)

⚡ 5. LINQ ile Kullanılan Özel Türler

Sınıf / YapıAçıklama
IEnumerable<T>Tembel yüklemeli koleksiyonlar için temel arayüz
IQueryable<T>LINQ to SQL/EF için sorgulanabilir yapı
Lookup<TKey, TValue>Dictionary gibi ama aynı key’e birden fazla value
GroupBy() sonucuIGrouping<TKey, TValue> türündedir
SelectMany()İç içe koleksiyonları düzleştirir

🔄 6. Immutable Koleksiyonlar

C# 9+ ve System.Collections.Immutable kütüphanesinde gelir.

YapıÖzellik
ImmutableList<T>Değiştirilemez liste
ImmutableDictionary<TKey,TValue>Değiştirilemez dictionary
ImmutableHashSet<T>Değiştirilemez set

Bunlar multi-threaded veya event sourcing yapılarında side effect’i önlemek için kullanılır.


🧰 7. Helper / Utility Türler

TürAçıklama
StringBuilderPerformanslı string birleştirme
StopwatchZaman ölçümü (performans testi için)
Random / RandomNumberGeneratorRastgele sayı üretimi
GuidGlobal benzersiz kimlik
DateTime, DateTimeOffset, TimeSpanZaman yapıları
RegexDüzenli ifadelerle metin eşleştirme
CancellationTokenAsync işlemleri iptal etme
Task, ValueTaskAsync yapılar
Lazy<T>Nesneyi sadece gerektiğinde üretir
WeakReferenceGarbage Collector’a izin veren referans türü

🧩 8. Reflection ve Dynamic Yapılar

TürAçıklama
Type, PropertyInfo, MethodInfoReflection API’si
Activator.CreateInstance()Dinamik nesne oluşturma
ExpandoObjectRuntime’da dinamik property ekleme
DynamicObjectCustom dynamic tip üretimi
AssemblyYüklü derlemeler hakkında bilgi

🧮 9. Threading / Parallelism Yapıları

YapıAçıklama
Thread, ThreadPoolTemel thread yönetimi
Task, Task.Run()Modern async işlemler
Parallel.For, Parallel.ForEachÇok çekirdekli işlem
SemaphoreSlim, Mutex, Monitor, lockEşzamanlılık kontrolü
Channel<T> (C# 8+)Producer-consumer pipeline

🧠 10. Yeni C# Özelliklerine Özel Yapılar

ÖzellikYapı
recordImmutable, value-based class
init accessorNesne oluşturulurken yalnızca set edilebilir property
pattern matchingis, switch patternleri
with expressionRecord kopyalama
target-typed new()Türü çıkarımla new() kullanımı

⚙️ 11. ASP.NET Core / Backend Odaklı Özel Tipler

TürNerede Kullanılır
IActionResult, ActionResult<T>Controller dönüş tipleri
HttpContext, HttpRequest, HttpResponseRequest-Response erişimi
IConfiguration, IOptions<T>Config yönetimi
ILogger<T>Loglama altyapısı
CancellationTokenAPI işlemlerinde iptal kontrolü
HttpClientREST API çağrıları
MemoryCache, IMemoryCache, DistributedCacheCache yönetimi
Channel<T> / BackgroundServiceQueue-based async işlemler

🧠 Özet (Mülakatta söyleyebileceğin şekilde)

“C#’ta koleksiyon yapıları (List, Dictionary, HashSet), thread-safe sınıflar (ConcurrentDictionary, BlockingCollection),
immutable tipler ve yardımcı yapılar (StringBuilder, Stopwatch, Lazy, Regex, Guid) bulunur.
Ayrıca Reflection, async/await, ve LINQ’la ilişkili IEnumerable/IQueryable gibi interface’ler de dilin güçlü yönlerindendir.
Bunların çoğu .NET’te performans, güvenlik ve concurrency kontrolü için optimize edilmiştir.”


🧩 12. Stream ve I/O (Girdi-Çıktı) Sınıfları

SınıfAçıklama
StreamAkış tabanlı okuma/yazma için temel sınıf
FileStreamDosyaları byte düzeyinde okuma/yazma
MemoryStreamBellek üzerinde sanal stream
BufferedStreamStream performansını artırmak için tampon kullanımı
StreamReader, StreamWriterMetin tabanlı okuma/yazma
BinaryReader, BinaryWriterBinary veri okuma/yazma
GZipStream, DeflateStreamSıkıştırma/dekompresyon işlemleri
FileInfo, DirectoryInfo, DriveInfoDosya sistemi yönetimi sınıfları
PathDosya yolları işlemleri (Path.Combine, Path.GetExtension)
File, DirectoryStatik I/O işlemleri (File.ReadAllText, Directory.CreateDirectory)

⚙️ 13. Serialization (Veri Dönüştürme)

Sınıf / ArayüzAçıklama
System.Text.Json.JsonSerializerModern, hızlı JSON serileştirme
Newtonsoft.Json.JsonConvertEn yaygın üçüncü parti JSON kütüphanesi
XmlSerializerXML serileştirme
BinaryFormatter (⚠️ Deprecated)Binary serileştirme (güvenlik nedeniyle artık önerilmez)
DataContractSerializerWCF ve SOAP için serileştirme
ISerializableManuel serileştirme kontrolü
JsonDocument, JsonElementJSON DOM API (düğümlere erişim için)

🧮 14. Matematik ve Sayısal İşlemler

YapıAçıklama
MathTemel matematiksel fonksiyonlar (Pow, Sqrt, Sin, Abs vs.)
RandomPseudo rastgele sayı üretimi
BitConverterByte ↔️ primitive tür dönüşümleri
BigIntegerÇok büyük tamsayılar için sınıf
ComplexKarmaşık sayılar (System.Numerics)
Vector<T>SIMD (donanım hızlandırmalı) işlemler
DecimalYüksek hassasiyetli ondalık değerler (finansal işlemler için)

🧠 15. Attributes ve Metadata

Sınıf / KavramAçıklama
AttributeMetadata eklemek için temel sınıf
[Obsolete]Kullanımdan kalkmış API’leri işaretler
[Serializable]Serileştirilebilir sınıf
[DataContract], [DataMember]WCF için veri sözleşmesi
[JsonPropertyName]JSON key adını belirleme
[Required], [StringLength], [Range]DataAnnotation validasyonları
Custom AttributeKendi attribute’ünü tanımlayabilirsin
AttributeTargetsHangi öğelere uygulanabileceğini belirler

🧱 16. Dependency Injection ve Service Lifetimes (ASP.NET Core)

KavramAçıklama
IServiceCollection, IServiceProviderDI altyapısı
TransientHer istekte yeni nesne
ScopedRequest başına tek nesne
SingletonUygulama boyunca tek nesne
IHostedServiceArka plan servisi (örnek: queue consumer)
BackgroundServiceSürekli çalışan servisler için base class
ServiceProviderFactoryCustom DI konteyner adaptasyonu

⚡ 17. Memory Management & Garbage Collection

Yapı / KonseptAçıklama
GCGarbage Collector kontrolü (GC.Collect())
IDisposableKaynak temizleme sözleşmesi
using / await usingOtomatik Dispose yönetimi
finalizer (~ClassName)Nesne toplanmadan önce son işlem
WeakReferenceGC’ye izin veren zayıf referans
Memory<T>, ReadOnlyMemory<T>Managed memory dilimleri
Span<T>, ReadOnlySpan<T>Stack-based veri dilimleri (unsafe’siz yüksek performans)

🧩 18. Security / Cryptography

SınıfAçıklama
SHA256, SHA512, MD5Hash algoritmaları
HMACSHA256Key’li hash
RSA, DSA, ECDsaAsimetrik şifreleme
Aes, TripleDESSimetrik şifreleme
RNGCryptoServiceProviderKriptografik güvenli rastgele sayı üretimi
ProtectedDataWindows DPAPI ile güvenli veri
SecureStringBellekte gizli string
X509Certificate2Sertifika işlemleri

🕸️ 19. Networking / Communication

SınıfAçıklama
HttpClientHTTP istekleri yapmak
HttpListenerBasit HTTP sunucusu oluşturmak
TcpClient, TcpListener, UdpClientDüşük seviye ağ protokolleri
SocketTCP/UDP detaylı kontrol
Dns, PingAğ sorgulamaları
WebSocketGerçek zamanlı bağlantılar
NamedPipeServerStream, NamedPipeClientStreamIPC (processler arası iletişim)
SignalRWeb tabanlı real-time iletişim framework’ü (ASP.NET Core)

🔄 20. File System Watcher / Observer Pattern

SınıfAçıklama
FileSystemWatcherDosya değişikliklerini dinleme
INotifyPropertyChangedProperty değişim bildirimleri (MVVM/WPF)
INotifyCollectionChangedKoleksiyon değişiklikleri bildirimi
IObservable<T> / IObserver<T>Reactive pattern (Rx.NET temeli)

🧠 21. Expression Trees ve Compiler API

Sınıf / KavramAçıklama
Expression<TDelegate>Lambda ifadelerini ifade ağacına dönüştürür
ParameterExpression, MemberExpressionExpression parçaları
Dynamic LINQRuntime’da sorgu üretimi
Roslyn APIC# kodunu runtime’da analiz/üretme (Microsoft.CodeAnalysis)

⚙️ 22. System.Threading.Channels / Pipelines

SınıfAçıklama
Channel<T>Async queue yapısı (producer-consumer pattern)
Pipe, PipeReader, PipeWriterYüksek performanslı streaming (Kestrel tabanı)
Dataflow (TPL Dataflow)Task tabanlı pipeline işlemleri

🧭 23. Configuration / Options / Secrets

SınıfAçıklama
ConfigurationBuilderJSON, Environment, CommandLine config yükler
IConfiguration, IConfigurationSectionConfig erişimi
IOptions<T>, IOptionsMonitor<T>Tip güvenli config binding
UserSecretsDevelopment ortamında gizli anahtarlar
Environment.GetEnvironmentVariable()Ortam değişkenlerine erişim

🧱 24. Validation ve Model Binding (ASP.NET Core)

SınıfAçıklama
ModelStateModel doğrulama durumu
ValidationAttributeCustom validasyon oluşturma
IModelBinder, IModelBinderProviderModel binding özelleştirme
IValidator<T>FluentValidation entegrasyonu

🧮 25. Task Parallel Library (TPL) Ekstraları

YapıAçıklama
TaskCompletionSource<T>Manuel olarak task tamamlama
CancellationTokenSourceAsync iptal kontrolü
TaskFactoryTask üretimi yönetimi
ContinueWithTask sonrası zincirleme işlemler
ValueTaskHafif alternatif, düşük overhead

🧠 26. Interop / Unsafe / Low-Level

YapıAçıklama
DllImportNative (C/C++) kod çağırma
MarshalManaged ↔ Unmanaged veri dönüşümü
GCHandleBellekte nesne sabitleme
unsafe, fixedPointer işlemleri (güvenli olmayan kod)
stackallocStack üzerinde array oluşturma
nint, nuintNative pointer integer türleri (.NET 5+)

🧩 27. Logging & Diagnostics

SınıfAçıklama
ILogger, ILogger<T>Standart loglama arabirimi
LoggerFactoryLogger oluşturucu
DiagnosticSource, ActivityTelemetry ve tracing için
Trace, DebugRuntime loglama ve hata ayıklama
EventSourceHigh-performance telemetry
EventLogWindows Event Viewer loglama

🔧 28. Testing / Mocking / Benchmarking

Yapı / AraçAçıklama
xUnit, NUnit, MSTestTest framework’leri
Moq, NSubstituteMocking kütüphaneleri
FluentAssertionsİfade tabanlı assertion
BenchmarkDotNetPerformans ölçümü
TestServer (Microsoft.AspNetCore.Mvc.Testing)Entegrasyon testi ortamı
WebApplicationFactory<T>API testleri için sunucu oluşturma

📦 29. Deployment / Hosting

YapıAçıklama
IHost, IHostBuilderUygulama yaşam döngüsü yöneticisi
WebApplicationBuilder, WebApplication.NET 6+ minimal API altyapısı
IWebHostEnvironmentOrtam bilgileri (Development, Production)
KestrelServerOptionsWeb sunucusu yapılandırması
UseUrls, UseKestrel, UseIISIntegrationHosting ayarları

Bu 29 kategorideki yapıların toplamı, C#’ın neredeyse tüm temel ve ileri seviye bileşenlerini kapsıyor.
Hiçbir önceki maddeyi tekrar etmedim ✅


💡 İstersen bir sonraki adımda:

  • Bu 29 başlıktan karışık 25 soruluk “pratik C# teknik sınavı” hazırlayayım.
  • Sorular gerçek mülakat formatında (örneğin: Dictionary vs ConcurrentDictionary, Task vs Thread, IEnumerable vs IQueryable, Span<T> ne işe yarar gibi).
  • Her sorunun sonunda doğru cevabı açıklayarak kısa ve net öğrenmeni sağlar.

Hazırlayayım mı Fatih?

admin

Leave a Reply

Your email address will not be published. Required fields are marked *