🧩 1. Koleksiyonlar (Collections)
C#’ta System.Collections.Generic içinde en sık kullanılan yapılar 👇
| Koleksiyon | Açıklama | Kullanım Örneği |
|---|
List<T> | Dinamik boyutlu dizi | var 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ümesi | var 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ı liste | list.AddFirst(10); list.AddLast(20); |
SortedList<TKey, TValue> | Sıralı key-value | new 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.
| Koleksiyon | Açıklama |
|---|
ArrayList | Her türden öğe tutar (boxing/unboxing yapar) |
Hashtable | Key-value ama object tabanlı (generic değil) |
Queue, Stack | Generic 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ürme | return Tuple.Create(1, "abc"); |
ValueTuple | Daha modern tuple | (int id, string name) = (1, "Ahmet"); |
KeyValuePair<TKey, TValue> | Dictionary entry temsilcisi | foreach(var kv in dict) |
Nullable<T> (T?) | Null olabilen value type | int? 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() sonucu | IGrouping<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ür | Açıklama |
|---|
StringBuilder | Performanslı string birleştirme |
Stopwatch | Zaman ölçümü (performans testi için) |
Random / RandomNumberGenerator | Rastgele sayı üretimi |
Guid | Global benzersiz kimlik |
DateTime, DateTimeOffset, TimeSpan | Zaman yapıları |
Regex | Düzenli ifadelerle metin eşleştirme |
CancellationToken | Async işlemleri iptal etme |
Task, ValueTask | Async yapılar |
Lazy<T> | Nesneyi sadece gerektiğinde üretir |
WeakReference | Garbage Collector’a izin veren referans türü |
🧩 8. Reflection ve Dynamic Yapılar
| Tür | Açıklama |
|---|
Type, PropertyInfo, MethodInfo | Reflection API’si |
Activator.CreateInstance() | Dinamik nesne oluşturma |
ExpandoObject | Runtime’da dinamik property ekleme |
DynamicObject | Custom dynamic tip üretimi |
Assembly | Yüklü derlemeler hakkında bilgi |
🧮 9. Threading / Parallelism Yapıları
| Yapı | Açıklama |
|---|
Thread, ThreadPool | Temel thread yönetimi |
Task, Task.Run() | Modern async işlemler |
Parallel.For, Parallel.ForEach | Çok çekirdekli işlem |
SemaphoreSlim, Mutex, Monitor, lock | Eşzamanlılık kontrolü |
Channel<T> (C# 8+) | Producer-consumer pipeline |
🧠 10. Yeni C# Özelliklerine Özel Yapılar
| Özellik | Yapı |
|---|
record | Immutable, value-based class |
init accessor | Nesne oluşturulurken yalnızca set edilebilir property |
pattern matching | is, switch patternleri |
with expression | Record kopyalama |
target-typed new() | Türü çıkarımla new() kullanımı |
⚙️ 11. ASP.NET Core / Backend Odaklı Özel Tipler
| Tür | Nerede Kullanılır |
|---|
IActionResult, ActionResult<T> | Controller dönüş tipleri |
HttpContext, HttpRequest, HttpResponse | Request-Response erişimi |
IConfiguration, IOptions<T> | Config yönetimi |
ILogger<T> | Loglama altyapısı |
CancellationToken | API işlemlerinde iptal kontrolü |
HttpClient | REST API çağrıları |
MemoryCache, IMemoryCache, DistributedCache | Cache yönetimi |
Channel<T> / BackgroundService | Queue-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ıf | Açıklama |
|---|
Stream | Akış tabanlı okuma/yazma için temel sınıf |
FileStream | Dosyaları byte düzeyinde okuma/yazma |
MemoryStream | Bellek üzerinde sanal stream |
BufferedStream | Stream performansını artırmak için tampon kullanımı |
StreamReader, StreamWriter | Metin tabanlı okuma/yazma |
BinaryReader, BinaryWriter | Binary veri okuma/yazma |
GZipStream, DeflateStream | Sıkıştırma/dekompresyon işlemleri |
FileInfo, DirectoryInfo, DriveInfo | Dosya sistemi yönetimi sınıfları |
Path | Dosya yolları işlemleri (Path.Combine, Path.GetExtension) |
File, Directory | Statik I/O işlemleri (File.ReadAllText, Directory.CreateDirectory) |
⚙️ 13. Serialization (Veri Dönüştürme)
| Sınıf / Arayüz | Açıklama |
|---|
System.Text.Json.JsonSerializer | Modern, hızlı JSON serileştirme |
Newtonsoft.Json.JsonConvert | En yaygın üçüncü parti JSON kütüphanesi |
XmlSerializer | XML serileştirme |
BinaryFormatter (⚠️ Deprecated) | Binary serileştirme (güvenlik nedeniyle artık önerilmez) |
DataContractSerializer | WCF ve SOAP için serileştirme |
ISerializable | Manuel serileştirme kontrolü |
JsonDocument, JsonElement | JSON DOM API (düğümlere erişim için) |
🧮 14. Matematik ve Sayısal İşlemler
| Yapı | Açıklama |
|---|
Math | Temel matematiksel fonksiyonlar (Pow, Sqrt, Sin, Abs vs.) |
Random | Pseudo rastgele sayı üretimi |
BitConverter | Byte ↔️ primitive tür dönüşümleri |
BigInteger | Çok büyük tamsayılar için sınıf |
Complex | Karmaşık sayılar (System.Numerics) |
Vector<T> | SIMD (donanım hızlandırmalı) işlemler |
Decimal | Yüksek hassasiyetli ondalık değerler (finansal işlemler için) |
🧠 15. Attributes ve Metadata
| Sınıf / Kavram | Açıklama |
|---|
Attribute | Metadata 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 Attribute | Kendi attribute’ünü tanımlayabilirsin |
AttributeTargets | Hangi öğelere uygulanabileceğini belirler |
🧱 16. Dependency Injection ve Service Lifetimes (ASP.NET Core)
| Kavram | Açıklama |
|---|
IServiceCollection, IServiceProvider | DI altyapısı |
Transient | Her istekte yeni nesne |
Scoped | Request başına tek nesne |
Singleton | Uygulama boyunca tek nesne |
IHostedService | Arka plan servisi (örnek: queue consumer) |
BackgroundService | Sürekli çalışan servisler için base class |
ServiceProviderFactory | Custom DI konteyner adaptasyonu |
⚡ 17. Memory Management & Garbage Collection
| Yapı / Konsept | Açıklama |
|---|
GC | Garbage Collector kontrolü (GC.Collect()) |
IDisposable | Kaynak temizleme sözleşmesi |
using / await using | Otomatik Dispose yönetimi |
finalizer (~ClassName) | Nesne toplanmadan önce son işlem |
WeakReference | GC’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ıf | Açıklama |
|---|
SHA256, SHA512, MD5 | Hash algoritmaları |
HMACSHA256 | Key’li hash |
RSA, DSA, ECDsa | Asimetrik şifreleme |
Aes, TripleDES | Simetrik şifreleme |
RNGCryptoServiceProvider | Kriptografik güvenli rastgele sayı üretimi |
ProtectedData | Windows DPAPI ile güvenli veri |
SecureString | Bellekte gizli string |
X509Certificate2 | Sertifika işlemleri |
🕸️ 19. Networking / Communication
| Sınıf | Açıklama |
|---|
HttpClient | HTTP istekleri yapmak |
HttpListener | Basit HTTP sunucusu oluşturmak |
TcpClient, TcpListener, UdpClient | Düşük seviye ağ protokolleri |
Socket | TCP/UDP detaylı kontrol |
Dns, Ping | Ağ sorgulamaları |
WebSocket | Gerçek zamanlı bağlantılar |
NamedPipeServerStream, NamedPipeClientStream | IPC (processler arası iletişim) |
SignalR | Web tabanlı real-time iletişim framework’ü (ASP.NET Core) |
🔄 20. File System Watcher / Observer Pattern
| Sınıf | Açıklama |
|---|
FileSystemWatcher | Dosya değişikliklerini dinleme |
INotifyPropertyChanged | Property değişim bildirimleri (MVVM/WPF) |
INotifyCollectionChanged | Koleksiyon değişiklikleri bildirimi |
IObservable<T> / IObserver<T> | Reactive pattern (Rx.NET temeli) |
🧠 21. Expression Trees ve Compiler API
| Sınıf / Kavram | Açıklama |
|---|
Expression<TDelegate> | Lambda ifadelerini ifade ağacına dönüştürür |
ParameterExpression, MemberExpression | Expression parçaları |
Dynamic LINQ | Runtime’da sorgu üretimi |
Roslyn API | C# kodunu runtime’da analiz/üretme (Microsoft.CodeAnalysis) |
⚙️ 22. System.Threading.Channels / Pipelines
| Sınıf | Açıklama |
|---|
Channel<T> | Async queue yapısı (producer-consumer pattern) |
Pipe, PipeReader, PipeWriter | Yüksek performanslı streaming (Kestrel tabanı) |
Dataflow (TPL Dataflow) | Task tabanlı pipeline işlemleri |
🧭 23. Configuration / Options / Secrets
| Sınıf | Açıklama |
|---|
ConfigurationBuilder | JSON, Environment, CommandLine config yükler |
IConfiguration, IConfigurationSection | Config erişimi |
IOptions<T>, IOptionsMonitor<T> | Tip güvenli config binding |
UserSecrets | Development ortamında gizli anahtarlar |
Environment.GetEnvironmentVariable() | Ortam değişkenlerine erişim |
🧱 24. Validation ve Model Binding (ASP.NET Core)
| Sınıf | Açıklama |
|---|
ModelState | Model doğrulama durumu |
ValidationAttribute | Custom validasyon oluşturma |
IModelBinder, IModelBinderProvider | Model binding özelleştirme |
IValidator<T> | FluentValidation entegrasyonu |
🧮 25. Task Parallel Library (TPL) Ekstraları
| Yapı | Açıklama |
|---|
TaskCompletionSource<T> | Manuel olarak task tamamlama |
CancellationTokenSource | Async iptal kontrolü |
TaskFactory | Task üretimi yönetimi |
ContinueWith | Task sonrası zincirleme işlemler |
ValueTask | Hafif alternatif, düşük overhead |
🧠 26. Interop / Unsafe / Low-Level
| Yapı | Açıklama |
|---|
DllImport | Native (C/C++) kod çağırma |
Marshal | Managed ↔ Unmanaged veri dönüşümü |
GCHandle | Bellekte nesne sabitleme |
unsafe, fixed | Pointer işlemleri (güvenli olmayan kod) |
stackalloc | Stack üzerinde array oluşturma |
nint, nuint | Native pointer integer türleri (.NET 5+) |
🧩 27. Logging & Diagnostics
| Sınıf | Açıklama |
|---|
ILogger, ILogger<T> | Standart loglama arabirimi |
LoggerFactory | Logger oluşturucu |
DiagnosticSource, Activity | Telemetry ve tracing için |
Trace, Debug | Runtime loglama ve hata ayıklama |
EventSource | High-performance telemetry |
EventLog | Windows Event Viewer loglama |
🔧 28. Testing / Mocking / Benchmarking
| Yapı / Araç | Açıklama |
|---|
xUnit, NUnit, MSTest | Test framework’leri |
Moq, NSubstitute | Mocking kütüphaneleri |
FluentAssertions | İfade tabanlı assertion |
BenchmarkDotNet | Performans ö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, IHostBuilder | Uygulama yaşam döngüsü yöneticisi |
WebApplicationBuilder, WebApplication | .NET 6+ minimal API altyapısı |
IWebHostEnvironment | Ortam bilgileri (Development, Production) |
KestrelServerOptions | Web sunucusu yapılandırması |
UseUrls, UseKestrel, UseIISIntegration | Hosting 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?