En İyi 40 .Net Mülakat Sorusu ve Cevapları (2026)

.Net mülakatına hazırlanmak, karşılaşabileceğiniz konular hakkında netlik gerektirir ve temel kavramları anlamak önemlidir çünkü ikinci cümle, anında alaka düzeyini belirlemek için “.Net Mülakat Soruları”nı içermelidir.
.Net Mülakatını Keşfetmek, sektör trendleri, pratik uygulamalar ve derin teknik deneyimle desteklenen güçlü kariyer fırsatları sunar. Alan uzmanlığına, köklü deneyime ve güçlü analiz becerilerine sahip profesyoneller, hem yeni başlayanların hem de deneyimli adayların temel, ileri, orta düzey, kıdemli ve sözlü teknik tartışmalardaki beceri setlerini güçlendirmelerine yardımcı olan en iyi soru ve cevaplardan faydalanır. Daha fazla oku…
👉 Ücretsiz PDF İndirme: .Net Mülakat Soruları ve Cevapları
1) .NET Framework nedir ve temel bileşenleri nelerdir?
.NET Framework, tarafından geliştirilen bir yazılım geliştirme platformudur. Microsoft Uygulamaları oluşturmak, dağıtmak ve çalıştırmak için kontrollü bir ortam sağlar. C#, VB.NET ve F# gibi birden fazla dili destekler. Çerçeve, Ortak Dil Çalışma Zamanı (CLR) aracılığıyla diller arası etkileşimi ve bellek yönetimini garanti eder.
Anahtar bileşenler:
| Bileşen | Tanım |
|---|---|
| CLR (Ortak Dil Çalışma Zamanı) | Belleği, güvenliği ve kod yürütmeyi yönetir. |
| FCL (Çerçeve Sınıf Kütüphanesi) | Yeniden kullanılabilir sınıflar, arayüzler ve değer tiplerinin geniş bir koleksiyonu. |
| ASP.NET | Dinamik web uygulama geliştirmeyi mümkün kılar. |
| ADO.NET | Çeşitli veri kaynaklarından veri erişimi sağlar. |
Örnek: AC# uygulaması, yönetilen bir ortam aracılığıyla bir SQL Server veritabanına bağlanmak için ADO.NET'i kullanabilir, böylece güvenlik ve ölçeklenebilirlik sağlanabilir.
2) .NET Framework, .NET Core ve .NET 5/6/7 arasındaki farkı açıklayın.
Microsoft .NET'i, platformlar arası geliştirmeyi destekleyecek şekilde birleşik bir platforma dönüştürdü.
. NET Framework is Windows-sadece, iken .NET Çekirdeği açık kaynaklı ve çok platformludur. .NET 5 itibaren, Microsoft bunları tek bir birleşik çalışma zamanında birleştirdi.
| Özellikler | . NET Framework | .NET Çekirdeği | .NET 5/6/7+ |
|---|---|---|---|
| Platform Desteği | Windows bir tek | Platformlar arası | Platformlar arası |
| Açık Kaynak | Yok hayır | Evet | Evet |
| Performans | ılımlı | Yüksek | Çok Yüksek |
| açılma | Geniş sistem | Bağımsız | Esnek |
| Örnek Kullanım | Eski kurumsal uygulamalar | Bulut ve mikro hizmetler | Modern çok platformlu uygulamalar |
3) Ortak Dil Çalışma Zamanı (CLR) kod yürütmeyi nasıl yönetir?
CLR, .NET uygulamaları için yürütme motoru görevi görür. Ara Dil (IL) kodunu, Tam Zamanında (JIT) derleme yoluyla yerel makine koduna dönüştürür. Ayrıca, çöp toplama özelliğini kullanarak otomatik bellek yönetimi sağlar.
CLR'nin Temel Fonksiyonları:
- Bellek Yönetimi – Belleği otomatik olarak ayırır ve ayırır.
- Güvenlik Yönetimi – Kod erişim güvenliğini ve rol tabanlı güvenliği doğrular.
- İstisna işleme – Çalışma zamanı hatalarının düzgün bir şekilde yakalanmasını ve yönetilmesini sağlar.
- Konu Yönetimi – Çok iş parçacıklı kodun verimli bir şekilde yürütülmesini sağlar.
Örnek: Bir .NET programı çalıştığında, CLR, istek üzerine IL kodunu yerel koda derleyerek en iyi yürütmeyi sağlar.
4) .NET'teki farklı JIT derleyici türleri nelerdir?
CLR üç tür Tam Zamanında (JIT) derleyici sağlar:
| Menşei | Tanım | Kullanım çantası |
|---|---|---|
| JIT Öncesi (NGen) | Dağıtım zamanında tüm kodu bir kerede derler. | Başlatma süresini azaltır. |
| Econo-JIT | Sadece çalışma zamanında çağrılan metotları derler ve daha sonra bunları atar. | Hafızanın kısıtlı olduğu ortamlar. |
| Normal JIT | Yürütme sırasında kodu yöntem yöntem derler. | Standart yürütme modeli. |
Her JIT yaklaşımı, aşağıdakiler arasında denge kurar: performans ve kaynak kullanımı dağıtım bağlamına göre.
5) .NET'te assembly'ler nedir ve namespace'lerden nasıl farklıdırlar?
An montaj .NET uygulamasının derlenmiş kod, meta veri ve kaynakları içeren en küçük dağıtılabilir birimidir. adÖte yandan, kod organizasyonu için kullanılan sınıfların mantıksal bir gruplandırmasıdır.
| karşılaştırma | Assembly | Ad alanı |
|---|---|---|
| Tabiat | Fiziksel dosya (DLL/EXE) | Mantıksal gruplama |
| Amaç | Dağıtım ve sürüm oluşturma | Kod organizasyonu |
| İçeren | Meta veri, bildirim, MSIL | Sınıflar, arayüzler |
| Örnek E-posta | System.Data.dll |
System.Data.SqlClient |
Örnek: System.Data.dll derleme, aşağıdaki gibi birden fazla ad alanı içerebilir: System.Data ve System.Data.SqlClient.
6) .NET'te değer tipleri ile referans tipleri arasındaki fark nedir?
.NET'te, değer türleri verileri doğrudan depolarken referans türleri verilerin bellek adresine referansları depola.
| Temel | Değer türü | Referans Türü |
|---|---|---|
| Depolama | Yığın | yığın |
| Örnek Türler | int, float, bool, yapı | sınıf, dizi, dize |
| Kopyalama | Gerçek değeri kopyalar | Referansı kopyalar |
| Boşluğa İzin Verildi | Yok hayır | Evet |
Örnek:
int a = 5; int b = a; → Her ikisinin de ayrı nüshaları vardır.
ClassObj x = new ClassObj(); ClassObj y = x; → Her ikisi de aynı nesneye atıfta bulunmaktadır.
7) .NET'te çöp toplama nasıl çalışır?
.NET'teki Çöp Toplama (GC), kullanılmayan nesneleri geri kazanarak belleği otomatik olarak yönetir. nesiller performansı optimize etmek için.
Nesil GC:
- 0. Nesil: Kısa ömürlü nesneler (örneğin, geçici değişkenler).
- 1. Nesil: Gen 0'dan itibaren orta ömürlü nesneler terfi ettirildi.
- 2. Nesil: Uzun ömürlü nesneler (örneğin, statik veriler).
Faydaları:
- Bellek sızıntılarını önler.
- Uygulama performansını artırır.
- Geliştiriciler için bellek kullanımını basitleştirir.
Örnek: Bir nesneye artık başvurulmadığında, GC onu yığından kaldırır ve yeniden kullanım için belleği serbest bırakır.
8) Delegeler nedir ve etkinliklerden nasıl farklıdırlar?
A temsilci yöntemlere yapılan referansları temsil eden bir türdür, oysa olay Temsilciler aracılığıyla sınıflar arası iletişimi sağlayan bir mekanizmadır.
| Görünüş | Temsilci | Etkinlikler |
|---|---|---|
| Tanım | Bir yöntemi işaret eden nesne | Bildirim mekanizması |
| Çağırma | Doğrudan aranabilir | Aboneler aracılığıyla çağrılır |
| Örnek E-posta | Action<int> myDelegate; |
event EventHandler myEvent; |
Örnek:
public delegate void Notify(); public event Notify OnProcessCompleted;
Burada, OnProcessCompleted dayalı bir etkinliktir Notify temsilci.
9) .NET Core kullanmanın başlıca avantajları ve dezavantajları nelerdir?
| Avantajlar | Dezavantajlar |
|---|---|
| Platformlar arası destek | Yeni başlayanlar için daha dik öğrenme eğrisi |
| Açık kaynak ve topluluk odaklı | Eski çerçeveler için sınırlı destek |
| Kestrel sunucusuyla yüksek performans | Eski projeler için göç zorlukları |
| Yerleşik bağımlılık enjeksiyonu | Bazı API'ler hala geliştiriliyor |
Örnek: .NET Core, Linux ve Linux genelinde Docker kapsayıcılarında çalışan mikro hizmetler oluşturmak için idealdir. Windows Sunucular.
10) Bir ASP.NET sayfasının yaşam döngüsünü açıklayınız.
ASP.NET sayfa yaşam döngüsü, bir sayfanın nasıl başlatılacağını, işleneceğini ve oluşturulacağını tanımlar. Her aşama, geliştiricilerin özel mantığı yürütmek için işleyebilecekleri olaylar sağlar.
| Aşama | Tanım |
|---|---|
| Sayfa İsteği | Kullanıcı sayfayı ilk defa istiyor. |
| Ana Sayfa | İsteğin geri gönderim olup olmadığını belirler. |
| Başlatma | Tüm kontroller başlatıldı. |
| Yük | Sayfa verileri ve kontroller yükleniyor. |
| Geri Gönderme Olay İşleme | Kontroller tarafından tetiklenen olayları işler. |
| rendering | Sayfa HTML'e dönüştürüldü. |
| boşaltmak | Cevap gönderildikten sonra temizleme aşaması. |
Örnek: Geliştiriciler sıklıkla kullanır Page_Load or Page_Init Kontrolleri başlatmak veya veri bağlamalarını ayarlamak için olaylar.
11) Entity Framework (EF) nedir ve veritabanı işlemlerini nasıl basitleştirir?
Varlık Çerçevesi (EF) Microsoft'S Nesne-İlişkisel Eşleyici (ORM) Geliştiricilerin .NET nesnelerini kullanarak bir veritabanıyla etkileşim kurmasına olanak tanıyarak çoğu veri erişim koduna olan ihtiyacı ortadan kaldırır. SQL oluşturma, veri eşleme ve ilişki yönetimini otomatik olarak gerçekleştirir.
Temel Özellikler:
- Destekler LINQ-to-Entities sorguları.
- Teklifler otomatik değişiklik takibi ve yavaş yüklenme.
- Sağlar Kod Öncelikli, Veritabanı Öncelikli, ve Model-Önce yaklaşımlar.
Örnek:
using (var context = new AppDbContext())
{
var employees = context.Employees.Where(e => e.Salary > 50000).ToList();
}
Burada EF, LINQ sorgusunu SQL'e çevirir, sonuçları alır ve bunları eşler Employee nesneleri otomatik olarak.
12) Entity Framework'te Code-First, Database-First ve Model-First yaklaşımları arasındaki farkı açıklayınız.
| Yaklaşım | Tanım | Kullanım çantası |
|---|---|---|
| Kod Önceliği | Sınıfları tanımlayın ve EF'in veritabanını oluşturmasına izin verin. | Yeşil alan projeleri. |
| Veritabanı Öncelikli | Önce veritabanını oluşturun ve EF varlık sınıflarını üretsin. | Mevcut veritabanları. |
| Model-Önce | Tasarım varlıklarını görsel olarak oluşturun ve EF hem veritabanını hem de sınıfları üretsin. | Diyagram odaklı tasarım. |
Örnek: Kod Öncelikli yaklaşımda, geliştiriciler şu tür C# sınıfları oluşturur: Customer ve Orderve EF, SQL Server'da karşılık gelen tabloları otomatik olarak oluşturur.
13) LINQ nedir ve .NET geliştirmede avantajları nelerdir?
Dille Tümleşik Sorgu (LINQ) Çeşitli kaynaklardan (nesneler, XML, veritabanları) gelen verileri tutarlı sözdizimini kullanarak doğrudan C# veya VB.NET içinde sorgulamanıza olanak tanır.
Geliştirir okunabilirlik, tür güvenliği, ve derleme zamanı denetimi.
LINQ'un Avantajları:
- Farklı veri kaynakları için birleşik sözdizimi.
- Kod karmaşıklığını azaltır.
- IntelliSense ve derleme zamanı doğrulaması sağlar.
- Performans optimizasyonu için ertelenmiş yürütmeyi destekler.
Örnek:
var highSalaries = employees.Where(e => e.Salary > 70000)
.OrderBy(e => e.Name)
.ToList();
14) .NET'te IEnumerable, ICollection ve IQueryable arasındaki fark nedir?
| arayüzey | Yürütme Türü | Kullanım çantası | Anahtar Farkı |
|---|---|---|---|
| Numaralandırılabilir | Bellek içi yineleme | Yerel koleksiyonlar | İstemci tarafında yürütülür. |
| Koleksiyon | Bellekte, ekleme/kaldırmayı destekler | Koleksiyonları değiştir | IEnumerable'ı koleksiyon yönetimiyle genişletir. |
| Sorgulanabilir | Ertelenmiş yürütme (uzaktan) | LINQ'den SQL/EF'e | Veritabanı düzeyinde yürütülür. |
Örnek: kullanma IQueryable Entity Framework'te veritabanı tarafında filtrelemeye olanak tanır; bu, kullanmaktan çok daha verimlidir IEnumerable bellekte.
15) Asenkron programlama nedir ve .NET'te async ve await nasıl çalışır?
.NET'teki asenkron programlama, ana iş parçacığını engellemeden birden fazla işlemin yürütülmesine olanak tanır ve web ve masaüstü uygulamalarında yanıt verme hızını artırır.
anahtar Concepts:
asyncbir yöntemi eşzamansız olarak işaretler.awaitBeklenen görev tamamlanana kadar yöntem yürütmeyi askıya alır.- İş parçacığı açlığını ve kullanıcı arayüzünün donmasını önler.
Örnek:
public async Task<int> GetDataAsync()
{
var data = await httpClient.GetStringAsync("https://api.example.com");
return data.Length;
}
Yarar: Ana iş parçacığı, G/Ç işlemi arka planda yürütülürken diğer görevleri halletmek için serbest kalır.
16) Bağımlılık Enjeksiyonu (DI) nedir ve .NET Core'da neden önemlidir?
Bağımlılık Enjeksiyonu (DI), aşağıdakileri sağlayan bir tasarım desenidir: gevşek bağlantı Sınıflar arasında bağımlılıkları dahili olarak oluşturmak yerine, bunları enjekte ederek.
Avantajları:
- Test edilebilirliği artırır.
- Promotes modüler tasarım.
- Yapılandırma yönetimini basitleştirir.
Örnek:
public class OrderService
{
private readonly IEmailService _emailService;
public OrderService(IEmailService emailService)
{
_emailService = emailService;
}
}
.NET Core'da DI, çerçeveye şu şekilde yerleştirilmiştir: IServiceCollection kullanılan konteyner Startup.cs.
17) .NET uygulamalarında istisnaları etkili bir şekilde nasıl yönetirsiniz?
İstisna işleme, çalışma zamanı hatalarının uygulamanın çökmesine neden olmadan düzgün bir şekilde yönetilmesini sağlar. Birincil mekanizma, try-catch-finally engellemek.
Örnek:
try
{
int result = 10 / divisor;
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Cannot divide by zero.");
}
finally
{
Console.WriteLine("Operation completed.");
}
En İyi Uygulamalar:
- Her zaman önce belirli istisnaları yakalayın.
- Kullanım
finallytemizleme mantığı için - Boş yakalama bloklarından kaçının.
- ASP.NET Core'da küresel istisna işlemeyi kullanın (
UseExceptionHandler()(ara yazılım).
18) .NET uygulamalarında temel güvenlik uygulamaları nelerdir?
Güvenlik .NET'te kimlik doğrulama, yetkilendirme, veri şifreleme ve giriş doğrulaması dahil olmak üzere birden fazla katman bulunur.
Temel Uygulamalar:
- Kullanım ASP.NET Kimliği kimlik doğrulama ve rol yönetimi için.
- etkinleştirme HTTPS (SSL/TLS) veri şifrelemesi için.
- Uygula veri doğrulama ve parametreli sorgular SQL Enjeksiyonunu önlemek için.
- Kullanım Veri Koruma API'leri çerezleri ve tokenları güvence altına almak için.
- Uygulamak JWT (JSON Web Jetonları) API'lerde durumsuz kimlik doğrulaması için.
Örnek: JWT tabanlı kimlik doğrulama, oturum durumunu korumadan kullanıcı kimliğini doğrulamak için mikro hizmetlerde yaygın olarak kullanılır.
19) C#’ta soyut sınıflar ile arayüzler arasındaki farkı açıklayınız.
| Özellikler | Soyut Sınıf | arayüzey |
|---|---|---|
| Uygulama | Yöntem uygulamalarını içerebilir | Yalnızca bildirimler (C# 8 varsayılanlara izin verir) |
| Çoklu Kalıtım | Desteklenmez | destekli |
| Kurucular | Yapıcılara sahip olabilir | Yapıcılar olamaz |
| Kullanım çantası | Paylaşılan kodlu temel sınıf | Birbiriyle ilgisi olmayan birden fazla sınıf için sözleşme |
Örnek:
abstract class Animal { public abstract void Speak(); }
interface IPet { void Play(); }
A Dog sınıf miras alabilir Animal uygulamak IPet eşzamanlı.
20) .NET'te yaygın olarak kullanılan tasarım desenleri nelerdir ve faydaları nelerdir?
Tasarım kalıpları, tekrarlayan yazılım tasarım sorunlarına yönelik kanıtlanmış çözümlerdir. sürdürülebilirlik, ölçeklenebilirlik ve okunabilirlik.
| Desen Tipi | Örnek E-posta | Tanım |
|---|---|---|
| yaratıcı | Singleton, Fabrika | Nesne oluşturmayı yönetin. |
| Yapısal | Adaptör, Dekoratör | Sınıfları veya nesneleri birleştirin. |
| Davranışsal | Gözlemci, Strateji | Nesne iletişimini tanımlayın. |
Örnek: .NET Core'da, Tekli desen genellikle paylaşılan hizmetler (örneğin, günlük kaydı) için, bunları kaydederek kullanılır AddSingleton() bağımlılık enjeksiyonunda.
21) .NET MAUI nedir ve .NET MAUI'den nasıl farklıdır? Xamarin?
.NET MAUI (Çoklu Platform Uygulama Kullanıcı Arayüzü) evrimidir Xamarin.Formlar. Geliştiricilerin formlar oluşturmasına olanak tanır. platformlar arası uygulamalar için Android, IOS, macOS, ve Windows tek bir paylaşılan kod tabanından.
| Özellikler | Xamarin.Formlar | .NET MAUI'si |
|---|---|---|
| Çerçeve Tabanı | .NET Framework / Mono | Birleşik .NET 6+ |
| Archidoku | Platforma özel projeler | Tek proje yapısı |
| Performans | ılımlı | .NET çalışma zamanı ile geliştirildi |
| Sıcak Yeniden Yükleme | Sınırlı | Tam sıcak yeniden yükleme desteği |
Örnek: Tek .NET MAUI proje, aşağıdaki gibi klasörler altında platforma özgü kod içerebilir: Platforms/Android or Platforms/iOS, platformlar arasında ortak kullanıcı arayüzü bileşenlerini paylaşırken.
Yarar: Platformlar arası geliştirmeyi basitleştirir ve sürdürülebilirliği artırır.
22) Blazor nedir ve farklı hosting modelleri nelerdir?
blazor C# yerine etkileşimli web kullanıcı arayüzleri oluşturmak için bir çerçevedir JavaScript. .NET ile full-stack web geliştirmeyi mümkün kılar.
| Barındırma Modeli | Tanım | İnfaz Yeri |
|---|---|---|
| Blazor Sunucusu | Sunucuda çalışır, kullanıcı arayüzü güncellemelerini şu şekilde gönderir: SignalR | sunucu |
| Blazor WebAssembly | Web'i kullanarak tarayıcıda istemci tarafında çalışırAssembly | Browser |
| Blazor Hibrit (MAUI) | Web kullanıcı arayüzünü yerel masaüstü/mobil uygulama ile birleştirir | Yerel Uygulama |
Örnek: Blazor Server uygulamaları, güvenli ve merkezi kontrol gerektiren kurumsal panolar için uygundur; Blazor Web iseAssembly çevrimdışı çalışabilen uygulamalara uygundur.
23) .NET'teki mikroservisler nelerdir ve monolitik mimariye göre ne gibi avantajlar sunarlar?
Mikroservis mimarisi bir uygulamayı parçalara ayırır bağımsız, dağıtılabilir hizmetler, her biri belirli bir iş yeteneğini ele alır.
| Görünüş | yekpare | Microservices |
|---|---|---|
| açılma | Tek ünite | Bağımsız hizmetler |
| ölçeklenebilirlik | Tüm uygulama ölçeklenir | Hizmet başına ölçek |
| Teknoloji Yığını | Sabit | Çok dilli destek |
| Arıza izolasyonu | Düşük | Yüksek |
Avantajları:
- Bağımsız dağıtım ve ölçekleme.
- Daha kolay hata izolasyonu ve daha hızlı kurtarma.
- CI/CD hatlarını ve DevOps uygulamalarını etkinleştirir.
Örnek: .NET tabanlı bir e-ticaret sistemi ayrılabilir OrderService, InventoryService, ve PaymentService bireysel REST veya gRPC hizmetleri olarak.
24) gRPC, .NET mikroservislerindeki iletişimi REST API'lerine kıyasla nasıl iyileştirir?
gRPC (Google Uzaktan Prosedür Çağrısı) kullanan yüksek performanslı bir iletişim çerçevesidir Protokol Buffers (protobuf) Mesaj serileştirmesi için.
| Özellikler | REST API | gRPC |
|---|---|---|
| oluşturulan | JSON | İkili (protobuf) |
| hız | JSON ayrıştırması nedeniyle daha yavaş | Çok daha hızlı |
| Yakın İletişim | HTTP 1.1 | HTTP/2 (çift yönlü) |
| Sözleşme | Açık API | .proto dosyaları |
| Kullanım çantası | Ağ uygulamaları | Dahili hizmet iletişimi |
Örnek: .NET'te gRPC hizmetleri şu şekilde tanımlanır: .proto dosyalara dönüştürülür ve C# koduna derlenir, mikro hizmetler ve IoT için ideal olan daha hızlı ve daha kompakt mesajlaşma sunar.
25) .NET uygulamalarında performans optimizasyonu için en iyi uygulamalar nelerdir?
Performans ayarlama, kıdemli geliştiriciler için önemli bir beceridir. Optimizasyon, kod verimliliğine, bellek yönetimine ve veritabanı etkileşimlerine odaklanmalıdır.
En İyi Uygulamalar:
- Asenkron Programlamayı Kullanın (
async/await) bloke edilmesini önlemek için. - Sık kullanılan verileri önbelleğe al MemoryCache veya Redis kullanarak.
- Tahsisleri en aza indirin ve kullan
Span<T>veya büyük veriler için havuzlama. - Profil kodu dotTrace veya PerfView gibi araçları kullanarak.
- EF sorgularını optimize edin ile
AsNoTracking()salt okunur veriler için.
Örnek:
var users = context.Users.AsNoTracking().ToList();
Bu, izleme yükünü ortadan kaldırarak büyük sonuç kümeleri için performansı artırır.
26) .NET Core'da hangi önbelleğe alma teknikleri mevcuttur?
Önbelleğe alma, verileri yeniden kullanılmak üzere geçici olarak depolayarak performansı artırır.
| Önbellek Türü | Tanım | Örnek Kullanım |
|---|---|---|
| Bellek İçi Önbellek | Verileri sunucu belleğinde depolar. | IMemoryCache |
| Dağıtılmış Önbellek | Sunucular arasında paylaşılan önbellek. | IDistributedCache, Redis |
| Yanıt Önbelleğe Alma | HTTP yanıtlarını önbelleğe alır. | ResponseCache nitelik |
| Çıktı Önbelleğe Alma | Tam işlenmiş çıktıyı yeniden kullanır. | ASP.NET Core ara yazılımı |
Örnek:
_cache.Set("EmployeeList", employeeData, TimeSpan.FromMinutes(30));
Dağıtılmış önbelleğe alma için, yük dengeli ortamlarda genellikle Redis kullanılır.
27) .NET Core uygulamalarında günlükleme ve izlemeyi nasıl uygularsınız?
Günlük kaydı, sorunları izlemek ve sistem sağlığını izlemek için önemlidir. .NET Core, üçüncü taraf sağlayıcılarla entegre olabilen yerleşik günlük kaydı soyutlamaları sağlar.
Teknikler:
- Kullanım ILogger Yapılandırılmış günlük kaydı için arayüz.
- İle bütünleşmek serilog, NLogya da Uygulama Trendleri.
- Günlükleri merkezi sistemlerde saklayın ELK (Elastik Yığın).
Örnek:
public class UserController
{
private readonly ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}
}
İzleme Araçları:
- Azure Uygulama Trendleri
- Prometheus + Grafana
- Yeni Kalıntı / Datadog
28) .NET uygulamaları için mevcut başlıca dağıtım seçenekleri nelerdir?
.NET uygulamaları çeşitli esnek yöntemler kullanılarak dağıtılabilir:
| Dağıtım Türü | Tanım | Kullanım çantası |
|---|---|---|
| Çerçeve Bağımlı Dağıtım (FDD) | Ana bilgisayarda .NET çalışma zamanının yüklü olması gerekir. | Paylaşımlı sunucular. |
| Kendi Kendine Yeterli Dağıtım (SCD) | Pakette .NET çalışma zamanı da bulunmaktadır. | İzole bulut uygulamaları. |
| Docker Konteynerleri | Bağımlılıkları olan paket uygulaması. | Mikroservisler ve CI/CD. |
| Azure Uygulama Hizmeti | Web uygulamaları için bulut tabanlı barındırma. | Ölçeklenebilir SaaS uygulamaları. |
Örnek: .NET 8 Web API'sini Docker konteyneri olarak dağıtmak taşınabilirliği ve CI/CD otomasyonunu iyileştirir.
29) Nasıl Azure Bulut geliştirme için .NET uygulamalarıyla entegre edilebilir mi?
Azure bulut tabanlı uygulamaların oluşturulması, dağıtılması ve yönetilmesi için .NET ile birinci sınıf entegrasyon sağlar.
anahtar Azure .NET için Hizmetler:
- Azure Uygulama Hizmeti – web uygulamalarını barındırır.
- Azure fonksiyonlar – Arka plan görevleri için sunucusuz bilgi işlem.
- Azure SQL Veri Tabanı – tam yönetimli ilişkisel veritabanı.
- Azure Servis Otobüsü – Dağıtık sistemler için mesaj kuyruğa alma.
- Azure anahtar Vault – güvenli sırlar ve kimlik bilgileri.
Örnek: Bir .NET mikro servisi şunları kullanabilir: Azure anahtar Vault bir veritabanı bağlantı dizelerini dağıtılırken güvenli bir şekilde depolamak için Azure DevOps CI/CD hattı.
30) .NET'te yaygın olarak kullanılan test çerçeveleri nelerdir ve bunlar arasındaki farklar nelerdir?
Test, uygulama güvenilirliğini ve sürdürülebilirliğini sağlar. .NET birden fazla test çerçevesini destekler.
| iskelet | Tanım | Ana Özellikler |
|---|---|---|
| xBirim | Modern, açık kaynaklı test aracı. | Paralel test çalıştırma. |
| NUnit | Olgun, işletmelerde yaygın olarak kullanılır. | Nitelik odaklı test. |
| MST testi | Microsoft'nin yerel test çerçevesi. | Visual Studio ile entegrasyon. |
Örnek:
[Fact]
public void Add_ReturnsSum()
{
Assert.Equal(4, Calculator.Add(2, 2));
}
En İyi Uygulamalar:
- Kullanım Alaycı (Moq) bağımlılıklar için.
- korumak yüksek test kapsamı CI/CD entegrasyonu ile.
- Dahil entegrasyon testleri API doğrulaması için.
31) .NET 8'de tanıtılan temel yeni özellikler nelerdir?
.NET 8 tanıtıldı performans optimizasyonları, yerel AOT, ve geliştirilmiş bulut doğal yetenekleri devam ediyor. Microsoft'nin birleşik, platformlar arası bir ekosistem yaratma hedefi.
Anahtar Kelimeler:
- Yerel AOT (Zamanından Önce Derleme): Başlatma süresini ve bellek kullanımını azaltır.
- ASP.NET Core Geliştirmeleri: Daha hızlı yönlendirme ve geliştirilmiş HTTP/3 desteği.
- Blazor United: Sunucu tarafını ve Web tarafını birleştirirAssembly Hibrit uygulamalar için modeller.
- Performans Artışları: %20–30 daha hızlı EF Core ve LINQ işlemleri.
- Genişletilmiş MAUI Desteği: Platformlar arası kullanıcı arayüzü için geliştirilmiş araçlar.
Örnek: Yerel AOT, mikro hizmetler ve konteynerleştirilmiş dağıtımlar için ideal olan küçük, kendi kendine yeten yürütülebilir dosyalara olanak tanır.
32) .NET'te Zamanından Önce Derleme (AOT) nedir ve ne zaman kullanılmalıdır?
AOT derlemesi Çalışma zamanından önce .NET Intermediate Language'ı (IL) yerel koda önceden derler, böylece başlangıç performansını iyileştirir ve JIT derleyicisine olan bağımlılığı azaltır.
| Menşei | Tanım | En İyi Kullanım Örneği |
|---|---|---|
| JIT (Tam Zamanında) | Çalışma zamanında IL'yi derler. | Masaüstü veya sunucu uygulamaları. |
| AOT (Zamanından Önce) | Çalışma zamanından önce IL'yi derler. | Mikroservisler, IoT, düşük gecikmeli sistemler. |
Avantajları:
- Daha hızlı başlatma süresi.
- Daha küçük bellek alanı.
- Daha iyi konteyner performansı.
Örnek:
dotnet publish -r linux-x64 -p:PublishAot=true
Bu komut Linux için yerel bir AOT derlenmiş ikili dosya üretir.
33) .NET geliştiricileri yapay zeka veya makine öğrenmesi yeteneklerini uygulamalara nasıl entegre edebilir?
.NET'te AI entegrasyonu şu şekilde elde edilebilir: ML.NET, Azure Bilişsel Hizmetlerveya harici kütüphaneler.
Yaklaşımlar:
- ML.NET: Makine öğrenimi modellerini doğrudan .NET'te oluşturun ve eğitin.
- Azure Bilişsel Hizmetler: Görme, konuşma ve dil için önceden eğitilmiş API'leri kullanın.
- ONNX Çalışma Zamanı: Eğitilen modelleri çalıştırın Python/.NET uygulamaları içindeki TensorFlow.
- OpenAI API Entegrasyonu: Üretken yapay zekaya (örneğin GPT modelleri) REST aracılığıyla güvenli bir şekilde erişin.
Örnek (ML.NET):
var mlContext = new MLContext();
var model = mlContext.Model.Load("model.zip", out _);
Kullanım Örneği: Kurumsal sistemlerde kullanıcı kaybını tahmin etme, anormallik tespiti veya akıllı öneriler.
34) .NET 8'deki REST API'ler ile Minimal API'ler arasındaki temel farklar nelerdir?
Minimum API'ler minimum standart kodla HTTP API'leri oluşturmanın hafif bir yolunu sağlar.
| Özellikler | REST API (Denetleyici tabanlı) | Minimum API |
|---|---|---|
| Structure | Denetleyicileri ve Yönlendirmeyi Kullanır | Satır içi rota tanımları |
| Kurmak | Nitelikler ve ara yazılım gerektirir | Daha hızlı ve daha basit |
| Performans | ılımlı | Biraz daha hızlı (daha az ek yük) |
| Kullanım çantası | Karmaşık kurumsal API'ler | Mikro hizmetler veya küçük API'ler |
Örnek:
app.MapGet("/hello", () => "Hello, World!");
Minimal API'ler, basitlikleri ve performansları nedeniyle mikroservisler ve sunucusuz uygulamalar için idealdir.
35) .NET uygulamalarında güvenli kodlamanın temel prensipleri nelerdir?
Güvenlik, geliştirme aşamasından itibaren uygulanmalıdır. .NET, güvenli kodlama için yerleşik mekanizmalar ve en iyi uygulamaları sağlar.
Temel İlkeler:
- Tüm Girişleri Doğrula: Enjeksiyon ataklarını önleyin.
- Parametreli Sorguları Kullanın: SQL Enjeksiyonundan kaçının.
- Hassas Verileri Şifreleyin: Kullanım
System.Security.Cryptography. - Sırları Güvenli Şekilde Saklayın: Kullanım Azure anahtar Vault veya kullanıcı sırları.
- Kimlik Doğrulama ve Yetkilendirmeyi Uygula: Uygulamak
ASP.NET Identityveya JWT tokenları. - HTTPS ve CORS politikalarını kullanın: Veri sızıntılarını ve yetkisiz erişimi önleyin.
Örnek:
using (var cmd = new SqlCommand("SELECT * FROM Users WHERE Id = @id", conn))
{
cmd.Parameters.AddWithValue("@id", userId);
}
36) .NET performansını optimize etmek için profilleme ve tanılama araçlarını nasıl kullanıyorsunuz?
Profilleme, CPU, bellek veya G/Ç'deki performans darboğazlarını belirlemeye yardımcı olur.
Popüler Araçlar:
| araç | Amaç |
|---|---|
| dotTrace / dotMemory | Profilleme ve bellek sızıntısı tespiti |
| Mükemmel Görünüm | Düşük seviyeli performans analizi |
| dotnet-izleme | Komut satırı izleme |
| Uygulama Trendleri | Üretimde gerçek zamanlı telemetri |
Yaklaşım:
- Performans sayaçlarını kullanarak darboğazları belirleyin.
- Profil kod yolları ve bellek tahsisleri.
- LINQ sorgularını optimize edin ve nesne oluşturmayı azaltın.
Örnek: Kullanım dotnet-counters monitor CPU ve GC aktivitesi gibi gerçek zamanlı ölçümleri izlemek için.
37) .NET uygulamaları için etkili DevOps uygulamaları nelerdir?
DevOps entegrasyonu Otomasyon ve işbirliği yoluyla daha hızlı teslimat ve daha iyi kalite sağlar.
Temel Uygulamalar:
- CI/CD Boru Hatları: GitHub Actions'ı kullanın veya Azure Otomatikleştirilmiş derlemeler ve dağıtımlar için DevOps.
- Kod Olarak Altyapı (IaC): ARM şablonları, Terraform veya Bicep ile dağıtın.
- Otomatik Test: xUnit/NUnit'i CI iş akışlarına entegre edin.
- Konteynerleştirme: Docker imajlarını ve Kubernetes'i (AKS) kullanın.
- İzleme: Application Insights ile sürekli telemetri.
Örnek: Bir CI/CD boru hattı Azure DevOps, .NET API'sini oluşturabilir, test edebilir ve dağıtabilir Azure Git commit'i üzerine App Service otomatik olarak çalışır.
38) .NET tabanlı dağıtık sistemlerde ölçeklenebilirlik ve hata toleransını nasıl sağlıyorsunuz?
Dağıtık tasarım prensipleri ve dayanıklı kalıplar kullanılarak ölçeklenebilirlik ve hata toleransı sağlanabilir.
stratejiler:
- Yatay Ölçekleme: Bir yük dengeleyicinin arkasına birden fazla örnek dağıtın.
- Sigorta Şablonu: Geçici hataları yönetmek için Polly kütüphanesini kullanın.
- Önbelleğe Alma ve Sıraya Alma: Redis'i kullanın ve Azure Asenkron işleme için Service Bus.
- Veritabanı Parçalama: Büyük veri kümelerini dağıtın.
- Sağlık kontrolleri: Kullanım
AddHealthChecks().NET Core'da ara yazılım.
Örnek (Devre Kesici):
Policy.Handle<HttpRequestException>()
.CircuitBreaker(3, TimeSpan.FromMinutes(1));
39) Modern .NET dağıtımlarında konteynerleştirmenin rolü nedir?
Konteynerleştirme, öncelikle liman işçisi, uygulamaları ve bunların bağımlılıklarını izole ederek ortamlar arasında tutarlılığı sağlar.
Faydaları:
- Öngörülebilir dağıtımlar (herhangi bir ana bilgisayarda çalışır).
- Kubernetes (AKS) ile basitleştirilmiş ölçekleme.
- Sanal makinelerden daha hafif ve daha hızlı.
- CI/CD iş akışlarıyla kolayca entegre olur.
Örnek (Dockerfile):
FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "MyApp.dll"]
Kullanım Örneği: Kubernetes'te .NET mikro hizmet kümesinin dağıtılması ölçeklenebilirliği ve hata izolasyonunu iyileştirir.
40) Milyonlarca kullanıcı için ölçeklenebilir bir .NET sistemi nasıl tasarlarsınız?
.NET'te sistem tasarımı, performans, kullanılabilirlik ve sürdürülebilirliği birleştiren mimari öngörü gerektirir.
anahtar Architeknik Kararlar:
- Mikroservisleri kullanın: Her servis bağımsız olarak dağıtılabilir.
- CQRS + Etkinlik Kaynağını benimseyin: Ayrı okuma/yazma modelleri.
- Asenkron Mesajlaşma: Kullanım Azure Servis Otobüsü veya Kafka.
- API Ağ Geçidi: Trafiği ve güvenliği yönetin.
- Önbellek Katmanı: Yüksek hızlı erişim için Redis veya MemoryCache.
- Veritabanı Ölçeklenebilirliği: Kullanım Azure Cosmos DB veya bölümlenmiş SQL.
- Otomatik ölçeklendirme: Aracılığıyla yapılandırın Azure Uygulama Servisi veya AKS.
Örnek Tasarım Akışı:
Kullanıcılar → API Ağ Geçidi → Yük Dengeleyici → Mikroservisler (.NET 8 API'leri) → Veritabanı + Redis Önbelleği → Uygulama İçgörüleri aracılığıyla telemetri.
🔍 Gerçek Dünya Senaryoları ve Stratejik Yanıtlarla En İyi .NET Mülakat Soruları
Aşağıda, stratejik açıklamalar ve örnek cevaplarla birlikte 10 gerçekçi, sık sorulan .NET mülakat sorusu bulunmaktadır. Bilgiye dayalı, davranışsal ve durumsal soruların bir karışımı yer almaktadır.
Gerekli ifadeler her seferinde bir kez kullanılmıştır.
1) .NET Framework, .NET Core ve .NET 6/7/8 arasındaki farkı açıklayabilir misiniz?
Adaydan beklenenler: .NET ekosisteminin evrimini, platformlar arası yetenekleri ve uzun vadeli desteği anlamak.
Örnek cevap: “.NET Framework orijinaldir Windows-yalnızca bir çerçeve sunarken, .NET Core platformlar arası yetenekler ve daha iyi performans sunmuştur. .NET 6 ve sonraki sürümler, ekosistemi tek bir modern, platformlar arası SDK altında birleştirerek performans, buluta hazır olma ve geliştirme hızı açısından önemli iyileştirmeler sağlamıştır.”
2) .NET'te bağımlılık enjeksiyonu nasıl uygulanır ve neden faydalıdır?
Adaydan beklenenler: Ayrıştırma, sürdürülebilirlik ve test edilebilirlik konularında anlayış.
Örnek cevap: .NET'teki bağımlılık enjeksiyonu genellikle yerleşik kapsayıcı aracılığıyla uygulanır. Microsoft.Extensions.DependencyInjection ad alanı. Sıkı bağlantıları azaltmaya yardımcı olur, test edilebilirliği artırır ve bağımlılıkların çalışma zamanında çözülmesine olanak tanıyarak yaşam döngüsü yönetimini basitleştirir.”
3) Üzerinde çalıştığınız zorlu bir .NET projesini ve başarısına nasıl katkıda bulunduğunuzu anlatın.
Adaydan beklenenler: Gerçek dünyaya katkı, problem çözme ve sahiplenme.
Örnek cevap: "Önceki görevimde, veri erişim katmanlarını yeniden tasarlayarak ve yanıt sürelerini kısaltmak için önbelleğe alma özelliğini ekleyerek eski bir .NET uygulamasının optimizasyonuna yardımcı oldum. Bu, performansı yüzde otuzdan fazla artırdı ve kullanıcı deneyimini önemli ölçüde iyileştirdi."
4) Bir .NET uygulamasının performansını ve ölçeklenebilirliğini nasıl sağlarsınız?
Adaydan beklenenler: Profil oluşturma araçlarının, mimari kalıpların ve kodlama en iyi uygulamalarının kullanımı.
Örnek cevap: “dotTrace ve Application Insights gibi profil oluşturma araçlarını kullanarak performansı izliyorum, uygun durumlarda eşzamansız programlama uyguluyorum, önbelleğe almayı uyguluyorum ve gerektiğinde mikroservisler gibi ölçeklenebilir mimari kalıpları kullanıyorum.”
5) .NET'te async/await ile multithreading arasındaki farkı açıklayınız.
Adaydan beklenenler: Eşzamanlılık modellerinin anlaşılması.
Örnek cevap: "Async ve await, Görev Tabanlı Asenkron Desen'den yararlanarak bloke olmayan işlemleri mümkün kılarken, çoklu iş parçacığı, paralel olarak çalışan ayrı iş parçacıkları oluşturmayı içerir. Asenkron programlama, G/Ç'ye bağlı görevler için idealken, çoklu iş parçacığı, CPU'ya bağlı işlemler için kullanışlıdır."
6) Yeni bir .NET teknolojisini hızlıca öğrenmeniz gereken bir durumdan bahseder misiniz? Bu duruma nasıl yaklaştınız?
Adaydan beklenenler: Uyum sağlama ve sürekli öğrenme.
Örnek cevap: "Önceki bir görevimde, bir müşteri projesi için Blazor'u hızla öğrenmem gerekiyordu. Resmi olarak Blazor'u öğrenmeye zaman ayırdım. Microsoft "Belgeleme yaptım, küçük deneme projeleriyle pratik yaptım ve kaliteli sonuçları zamanında teslim etmek için ekip üyeleriyle iş birliği yaptım."
7) ASP.NET Core'da bir RESTful API nasıl tasarlanır? Hangi temel prensipleri takip ediyorsunuz?
Adaydan beklenenler: HTTP yöntemleri, yönlendirme, sürümleme ve en iyi uygulamalar hakkında bilgi.
Örnek cevap: "Doğru kaynak adlandırma, durumsuzluk ve HTTP fiillerinin doğru kullanımı gibi REST prensiplerini takip ediyorum. Ayrıca model doğrulama, doğru durum kodları, sürümleme ve JWT gibi kimlik doğrulama mekanizmalarını da uyguluyorum."
8) Aynı anda birden fazla .NET projesi üzerinde çalışırken sıkı teslim tarihleriyle nasıl başa çıkıyorsunuz?
Adaydan beklenenler: Önceliklendirme, organizasyon, iletişim.
Örnek cevap: “Önceki işimde, görevleri yönetilebilir bileşenlere ayırarak, kritik özellikleri önceliklendirerek ve gerçekçi beklentiler belirlemek için paydaşlarla sürekli iletişim halinde kalarak sıkı teslim tarihleriyle başa çıkıyordum.”
9) .NET uygulamalarında kod kalitesini nasıl koruyorsunuz?
Adaydan beklenenler: Test etme, inceleme ve araçlara aşinalık.
Örnek cevap: "xUnit ile birim testleri, kod incelemeleri, statik kod analizi ve SOLID ilkelerine bağlılık yoluyla kod kalitesini koruyorum. Bu adımlar uzun vadeli sürdürülebilirlik ve güvenilirlik sağlıyor."
10) Bir üretim .NET API'sinin aralıklı olarak 500 hata döndürmeye başladığını varsayalım. Sorunu teşhis etmek için nasıl bir yaklaşım benimserdiniz?
Adaydan beklenenler: Yapılandırılmış hata ayıklama, araç kullanımı ve baskı altında sakinlik.
Örnek cevap: "Son görevimde, günlükleri inceleyerek, bağımlılık durumunu kontrol ederek ve hataları izlemek için Application Insights veya benzeri araçları kullanarak işe başlardım. Ardından, sorunun veritabanıyla mı, yapılandırmayla mı yoksa kodla mı ilgili olduğunu belirler ve çoğaltma ve doğrulamanın ardından hedefli düzeltmeleri dağıtırdım."
