[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fcsharp":4,"config":252},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":151,"samples":168},"backend","Backend","","csharp","C#\u002F.NET","tr",450,3300,[14,15,16],"junior","mid","senior",[18,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148],{"key":19,"name":20,"count":21},"api-design","API Tasarımı",75,{"key":23,"name":24,"count":21},"caching","Caching",{"key":26,"name":27,"count":21},"concurrency","Eşzamanlılık",{"key":29,"name":30,"count":21},"csharp-concurrency-async","Csharp Concurrency Async",{"key":32,"name":33,"count":21},"csharp-exceptions","Csharp Exceptions",{"key":35,"name":36,"count":21},"csharp-generics-interfaces","Csharp Generics Interfaces",{"key":38,"name":39,"count":21},"csharp-memory-performance","Csharp Memory Performance",{"key":41,"name":42,"count":21},"csharp-stdlib-http","Csharp Stdlib Http",{"key":44,"name":45,"count":21},"csharp-testing-tooling","Csharp Testing Tooling",{"key":47,"name":48,"count":21},"databases-sql","Veritabanı \u002F SQL",{"key":50,"name":51,"count":21},"go-concurrency","Go Concurrency",{"key":53,"name":54,"count":21},"go-errors","Go Errors",{"key":56,"name":57,"count":21},"go-interfaces-generics","Go Interfaces Generics",{"key":59,"name":60,"count":21},"go-memory-performance","Go Memory Performance",{"key":62,"name":63,"count":21},"go-stdlib-http","Go Stdlib Http",{"key":65,"name":66,"count":21},"go-testing-tooling","Go Testing Tooling",{"key":68,"name":69,"count":21},"java-concurrency","Java Concurrency",{"key":71,"name":72,"count":21},"java-exceptions","Java Exceptions",{"key":74,"name":75,"count":21},"java-generics-interfaces","Java Generics Interfaces",{"key":77,"name":78,"count":21},"java-memory-jvm","Java Memory Jvm",{"key":80,"name":81,"count":21},"java-stdlib-http","Java Stdlib Http",{"key":83,"name":84,"count":21},"java-testing-tooling","Java Testing Tooling",{"key":86,"name":87,"count":21},"messaging-queues","Mesajlaşma \u002F Kuyruklar",{"key":89,"name":90,"count":21},"networking-http","Ağ \u002F HTTP",{"key":92,"name":93,"count":21},"nodejs-error-handling","Nodejs Error Handling",{"key":95,"name":96,"count":21},"nodejs-event-loop-async","Nodejs Event Loop Async",{"key":98,"name":99,"count":21},"nodejs-memory-performance","Nodejs Memory Performance",{"key":101,"name":102,"count":21},"nodejs-modules-streams","Nodejs Modules Streams",{"key":104,"name":105,"count":21},"nodejs-stdlib-http","Nodejs Stdlib Http",{"key":107,"name":108,"count":21},"nodejs-testing-tooling","Nodejs Testing Tooling",{"key":110,"name":111,"count":21},"php-concurrency-async","Php Concurrency Async",{"key":113,"name":114,"count":21},"php-exceptions","Php Exceptions",{"key":116,"name":117,"count":21},"php-generics-interfaces","Php Generics Interfaces",{"key":119,"name":120,"count":21},"php-memory-performance","Php Memory Performance",{"key":122,"name":123,"count":21},"php-stdlib-http","Php Stdlib Http",{"key":125,"name":126,"count":21},"php-testing-tooling","Php Testing Tooling",{"key":128,"name":129,"count":21},"python-concurrency-async","Python Concurrency Async",{"key":131,"name":132,"count":21},"python-errors-context","Python Errors Context",{"key":134,"name":135,"count":21},"python-memory-performance","Python Memory Performance",{"key":137,"name":138,"count":21},"python-stdlib-http","Python Stdlib Http",{"key":140,"name":141,"count":21},"python-testing-tooling","Python Testing Tooling",{"key":143,"name":144,"count":21},"python-typing-oop","Python Typing Oop",{"key":146,"name":147,"count":21},"security","Güvenlik",{"key":149,"name":150,"count":21},"testing","Test",[152,153,156,159,162,165],{"key":8,"name":9,"count":11},{"key":154,"name":155,"count":11},"go","Go",{"key":157,"name":158,"count":11},"java","Java",{"key":160,"name":161,"count":11},"nodejs","Node.js",{"key":163,"name":164,"count":11},"php","PHP",{"key":166,"name":167,"count":11},"python","Python",[169,187,200,213,226,239],{"id":170,"topic":30,"difficulty":171,"body":172,"options":173,"correct_key":178,"explanation":186},"019f70e2-e71c-7726-8b01-737b8350936d",1,"C#'ta `await` anahtar kelimesi bir `Task` üzerinde kullanıldığında ne yapar?",[174,177,180,183],{"key":175,"text":176},"a","Task tamamlanana kadar çağıran thread'i bloklar",{"key":178,"text":179},"b","Metodu, thread'i bloklamadan, task tamamlanana kadar askıya alır",{"key":181,"text":182},"c","Task henüz başlamadıysa onu anında iptal eder",{"key":184,"text":185},"d","Task'ı senkron bir metot çağrısına dönüştürür","`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`\u002F`.Wait()` ile aradaki temel farktır.",{"id":188,"topic":30,"difficulty":171,"body":189,"options":190,"correct_key":184,"explanation":199},"019f70e2-e784-709d-aa21-f3126e356753","Bir `async void` metodun çağırıcısı, o metodun bitişini neden bekleyemez (await edemez)?",[191,193,195,197],{"key":175,"text":192},"Çünkü `async void` metotlar her zaman senkron çalışır",{"key":178,"text":194},"Çünkü `async void` metotlar hiçbir değer döndürmez",{"key":181,"text":196},"Çünkü `async void` metotların içinde `await` ifadesi kullanılmasına izin verilmez",{"key":184,"text":198},"Çünkü `async void`, çağırıcıya tutup await edebileceği bir `Task` vermez","Bir `async Task` metot, çağırıcının await edebileceği, exception'larını gözlemleyebileceği ya da `WhenAll`\u002F`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.",{"id":201,"topic":30,"difficulty":171,"body":202,"options":203,"correct_key":175,"explanation":212},"019f70e2-e786-7144-90cd-1d294c13df16","C#'taki `lock` ifadesiyle ilgili aşağıdakilerden hangisi doğrudur?",[204,206,208,210],{"key":175,"text":205},"Lock monitörü olarak referans tipinde bir nesne gerekir; değer tipi vermek derleme hatası üretir",{"key":178,"text":207},"`lock`, `int` ya da bir `struct` gibi herhangi bir değer tipi üzerinde doğrudan kullanılabilir",{"key":181,"text":209},"`lock` yalnızca `async` işaretli metotların içinde çalışır",{"key":184,"text":211},"İçinde bulunduğu sınıf garbage collect edildiğinde `lock` monitörünü otomatik olarak serbest bırakır","`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.",{"id":214,"topic":30,"difficulty":171,"body":215,"options":216,"correct_key":181,"explanation":225},"019f70e2-e788-7917-a07b-e9962f15dbe4","Bir async metoda `CancellationToken.None` geçmek ne anlama gelir?",[217,219,221,223],{"key":175,"text":218},"İşlemin bir background thread'de çalışacağı garanti edilir",{"key":178,"text":220},"Hiçbir token verilmediği için metot anında exception fırlatır",{"key":181,"text":222},"Metot, asla iptal edilemeyecek bir token alır",{"key":184,"text":224},"Varsayılan token, işlemi sabit bir süre sonra otomatik iptal eder","`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.",{"id":227,"topic":30,"difficulty":171,"body":228,"options":229,"correct_key":184,"explanation":238},"019f70e2-e78c-787f-bc43-db017d3ab545","`Task.CompletedTask` genellikle ne için kullanılır?",[230,232,234,236],{"key":175,"text":231},"Thread pool üzerinde yepyeni bir task başlatmak için",{"key":178,"text":233},"Uygulamada o an çalışan bütün task'ları iptal etmek için",{"key":181,"text":235},"Bekleyen tüm task'lar bitene kadar çağıran thread'i bloklamak için",{"key":184,"text":237},"Zaten tamamlanmış bir `Task` singleton'ı; bir `Task` dönen imzayı karşılamak için kullanışlıdır","`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.",{"id":240,"topic":30,"difficulty":171,"body":241,"options":242,"correct_key":178,"explanation":251},"019f70e2-e793-7d2d-969c-bf4efb2eaaf2","C#'taki `lock (obj) { ... }` ifadesi, temelde hangi kalıbın syntactic sugar'ıdır?",[243,245,247,249],{"key":175,"text":244},"Bloğu saran bir `Interlocked.Increment(ref obj)` çağrısı",{"key":178,"text":246},"`Monitor.Enter(obj)` ve ardından `Monitor.Exit(obj)`'i çağıran bir `try\u002Ffinally`",{"key":181,"text":248},"Zaman aşımı sıfır olarak çağrılan bir `SemaphoreSlim.Wait()`",{"key":184,"text":250},"Bloğun gövdesini saran bir `Task.Run(() => obj)`","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.",{"fields":253,"seniorities":424,"interview_shapes":425,"locales":430,"oauth":432,"question_count":435,"coach_enabled":436,"jd_match_enabled":436},[254,265,286,303,327,340,359,378,398,405,411,418],{"key":5,"name_tr":6,"name_en":6,"sort":171,"specializations":255},[256,259,260,261,262,263,264],{"key":257,"name":258,"field":5},"general","Genel",{"key":154,"name":155,"field":5},{"key":166,"name":167,"field":5},{"key":157,"name":158,"field":5},{"key":8,"name":9,"field":5},{"key":160,"name":161,"field":5},{"key":163,"name":164,"field":5},{"key":266,"name_tr":267,"name_en":267,"sort":268,"specializations":269},"frontend","Frontend",2,[270,271,274,277,280,283],{"key":257,"name":258,"field":266},{"key":272,"name":273,"field":266},"javascript","JavaScript",{"key":275,"name":276,"field":266},"typescript","TypeScript",{"key":278,"name":279,"field":266},"react","React",{"key":281,"name":282,"field":266},"vue","Vue",{"key":284,"name":285,"field":266},"angular","Angular",{"key":287,"name_tr":288,"name_en":288,"sort":289,"specializations":290},"fullstack","Fullstack",3,[291,292,293,294,295,296,297,298,299,300,301,302],{"key":257,"name":258,"field":287},{"key":154,"name":155,"field":5},{"key":166,"name":167,"field":5},{"key":157,"name":158,"field":5},{"key":8,"name":9,"field":5},{"key":160,"name":161,"field":5},{"key":163,"name":164,"field":5},{"key":272,"name":273,"field":266},{"key":275,"name":276,"field":266},{"key":278,"name":279,"field":266},{"key":281,"name":282,"field":266},{"key":284,"name":285,"field":266},{"key":304,"name_tr":305,"name_en":305,"sort":306,"specializations":307},"devops-cloud","DevOps \u002F Cloud",4,[308,309,312,315,318,321,324],{"key":257,"name":258,"field":304},{"key":310,"name":311,"field":304},"aws","AWS",{"key":313,"name":314,"field":304},"gcp","GCP",{"key":316,"name":317,"field":304},"azure","Azure",{"key":319,"name":320,"field":304},"kubernetes","Kubernetes",{"key":322,"name":323,"field":304},"terraform","Terraform",{"key":325,"name":326,"field":304},"linux","Linux",{"key":328,"name_tr":329,"name_en":329,"sort":330,"specializations":331},"ai-engineer","AI Engineer",5,[332,333,334,337],{"key":257,"name":258,"field":328},{"key":166,"name":167,"field":328},{"key":335,"name":336,"field":328},"llm-rag","LLM\u002FRAG",{"key":338,"name":339,"field":328},"mlops","MLOps",{"key":341,"name_tr":342,"name_en":343,"sort":344,"specializations":345},"database","Veritabanı","Database",6,[346,347,350,353,356],{"key":257,"name":258,"field":341},{"key":348,"name":349,"field":341},"postgresql","PostgreSQL",{"key":351,"name":352,"field":341},"mysql","MySQL",{"key":354,"name":355,"field":341},"mongodb","MongoDB",{"key":357,"name":358,"field":341},"redis","Redis",{"key":360,"name_tr":361,"name_en":362,"sort":363,"specializations":364},"mobile","Mobil","Mobile",7,[365,366,369,372,375],{"key":257,"name":258,"field":360},{"key":367,"name":368,"field":360},"ios-swift","iOS (Swift)",{"key":370,"name":371,"field":360},"android-kotlin","Android (Kotlin)",{"key":373,"name":374,"field":360},"flutter","Flutter",{"key":376,"name":377,"field":360},"react-native","React Native",{"key":146,"name_tr":147,"name_en":379,"sort":380,"specializations":381},"Security",8,[382,383,386,389,392,395],{"key":257,"name":258,"field":146},{"key":384,"name":385,"field":146},"appsec","AppSec",{"key":387,"name":388,"field":146},"offensive-pentest","Offensive \u002F Pentest",{"key":390,"name":391,"field":146},"cloud-security","Cloud Security",{"key":393,"name":394,"field":146},"devsecops","DevSecOps",{"key":396,"name":397,"field":146},"blue-team-incident","Blue Team \u002F Incident",{"key":399,"name_tr":400,"name_en":401,"sort":402,"specializations":403},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[404],{"key":257,"name":258,"field":399},{"key":406,"name_tr":407,"name_en":407,"sort":408,"specializations":409},"data-engineer","Data Engineer",10,[410],{"key":257,"name":258,"field":406},{"key":412,"name_tr":413,"name_en":414,"sort":415,"specializations":416},"game-dev","Oyun Geliştirme","Game Development",11,[417],{"key":257,"name":258,"field":412},{"key":419,"name_tr":420,"name_en":420,"sort":421,"specializations":422},"ml-engineer","ML Engineer",12,[423],{"key":257,"name":258,"field":419},[14,15,16],{"junior":426,"mid":428,"senior":429},{"questions":427,"median_sec":3},20,{"questions":427,"median_sec":3},{"questions":427,"median_sec":3},[10,431],"en",[433,434],"google","github",21750,true]