yoklateknik mülakat

C#/.NET Backend Mülakat Soruları

450 doğrulanmış C#/.NET Backend mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Csharp Concurrency AsyncZorluk 1
C#'ta await anahtar kelimesi bir Task üzerinde kullanıldığında ne yapar?
  • aTask tamamlanana kadar çağıran thread'i bloklar
  • bMetodu, thread'i bloklamadan, task tamamlanana kadar askıya alır
  • cTask henüz başlamadıysa onu anında iptal eder
  • dTask'ı senkron bir metot çağrısına dönüştürür
Açıklama:await bir state machine üretir: metodun geri kalanı bir continuation olarak kaydedilir, çağıran thread serbest bırakılır ve task tamamlandığında continuation (genelde bir thread-pool thread'inde) devam eder. Thread bloklanmaz — bu, .Result/.Wait() ile aradaki temel farktır.
Csharp Concurrency AsyncZorluk 1
Bir async void metodun çağırıcısı, o metodun bitişini neden bekleyemez (await edemez)?
  • aÇünkü async void metotlar her zaman senkron çalışır
  • bÇünkü async void metotlar hiçbir değer döndürmez
  • cÇünkü async void metotların içinde await ifadesi kullanılmasına izin verilmez
  • dÇünkü async void, çağırıcıya tutup await edebileceği bir Task vermez
Açıklama:Bir async Task metot, çağırıcının await edebileceği, exception'larını gözlemleyebileceği ya da WhenAll/WhenAny ile birleştirebileceği bir Task handle döner. async void bir metot ise hiçbir şey döndürmez — elde tutulacak bir handle olmadığından çağırıcı ne zaman bittiğini ya da exception fırlatıp fırlatmadığını bilemez.
Csharp Concurrency AsyncZorluk 1
C#'taki lock ifadesiyle ilgili aşağıdakilerden hangisi doğrudur?
  • aLock monitörü olarak referans tipinde bir nesne gerekir; değer tipi vermek derleme hatası üretir
  • block, int ya da bir struct gibi herhangi bir değer tipi üzerinde doğrudan kullanılabilir
  • clock yalnızca async işaretli metotların içinde çalışır
  • dİçinde bulunduğu sınıf garbage collect edildiğinde lock monitörünü otomatik olarak serbest bırakır
Açıklama:lock (obj) için obj'in referans tipi olması gerekir, çünkü monitör nesnenin kimliğine (heap'teki sync block'una) bağlıdır. Değer tipi vermek derleme zamanı hatasıdır (CS0185); çünkü boxing her seferinde yeni bir nesne oluşturur ve lock hiçbir şeyi gerçekten senkronize etmemiş olur.
Csharp Concurrency AsyncZorluk 1
Bir async metoda CancellationToken.None geçmek ne anlama gelir?
  • aİşlemin bir background thread'de çalışacağı garanti edilir
  • bHiçbir token verilmediği için metot anında exception fırlatır
  • cMetot, asla iptal edilemeyecek bir token alır
  • dVarsayılan token, işlemi sabit bir süre sonra otomatik iptal eder
Açıklama:CancellationToken.None, IsCancellationRequested değeri her zaman false olan ve hiçbir zaman sinyallenmeyen, gerçek ve geçerli bir CancellationToken değeri döndürür. Gerçekten bir iptal kaynağı yokken geçilecek güvenli yer tutucudur ve kontrol edilmesinin ek bir maliyeti yoktur.
Csharp Concurrency AsyncZorluk 1
Task.CompletedTask genellikle ne için kullanılır?
  • aThread pool üzerinde yepyeni bir task başlatmak için
  • bUygulamada o an çalışan bütün task'ları iptal etmek için
  • cBekleyen tüm task'lar bitene kadar çağıran thread'i bloklamak için
  • dZaten tamamlanmış bir Task singleton'ı; bir Task dönen imzayı karşılamak için kullanışlıdır
Açıklama:Task.CompletedTask, önbelleğe alınmış, zaten tamamlanmış bir Task singleton'ıdır. Genelde Task dönmesi gereken bir arayüzü uygulayan ama belirli bir dalda gerçekten async yapılacak bir şeyi olmayan metotlardan döndürülür ve gereksiz bir allocation'dan kaçınır.
Csharp Concurrency AsyncZorluk 1
C#'taki lock (obj) { ... } ifadesi, temelde hangi kalıbın syntactic sugar'ıdır?
  • aBloğu saran bir Interlocked.Increment(ref obj) çağrısı
  • bMonitor.Enter(obj) ve ardından Monitor.Exit(obj)'i çağıran bir try/finally
  • cZaman aşımı sıfır olarak çağrılan bir SemaphoreSlim.Wait()
  • dBloğun gövdesini saran bir Task.Run(() => obj)
Açıklama:Derleyici lock (obj) { body } ifadesini Monitor.Enter(obj); try { body } finally { Monitor.Exit(obj); } şekline indirger (güvenilirlik için iki parametreli Enter aşırı yüklemesiyle). finally, gövde exception fırlatsa bile monitörün serbest bırakılmasını garanti eder.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla