[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fcsharp-generics-interfaces":4,"config":251},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":148,"samples":168},"backend","Backend","","csharp-generics-interfaces","Csharp Generics Interfaces","tr",75,3300,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,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],{"key":19,"name":20,"count":11},"api-design","API Tasarımı",{"key":22,"name":23,"count":11},"caching","Caching",{"key":25,"name":26,"count":11},"concurrency","Eşzamanlılık",{"key":28,"name":29,"count":11},"csharp-concurrency-async","Csharp Concurrency Async",{"key":31,"name":32,"count":11},"csharp-exceptions","Csharp Exceptions",{"key":8,"name":9,"count":11},{"key":35,"name":36,"count":11},"csharp-memory-performance","Csharp Memory Performance",{"key":38,"name":39,"count":11},"csharp-stdlib-http","Csharp Stdlib Http",{"key":41,"name":42,"count":11},"csharp-testing-tooling","Csharp Testing Tooling",{"key":44,"name":45,"count":11},"databases-sql","Veritabanı \u002F SQL",{"key":47,"name":48,"count":11},"go-concurrency","Go Concurrency",{"key":50,"name":51,"count":11},"go-errors","Go Errors",{"key":53,"name":54,"count":11},"go-interfaces-generics","Go Interfaces Generics",{"key":56,"name":57,"count":11},"go-memory-performance","Go Memory Performance",{"key":59,"name":60,"count":11},"go-stdlib-http","Go Stdlib Http",{"key":62,"name":63,"count":11},"go-testing-tooling","Go Testing Tooling",{"key":65,"name":66,"count":11},"java-concurrency","Java Concurrency",{"key":68,"name":69,"count":11},"java-exceptions","Java Exceptions",{"key":71,"name":72,"count":11},"java-generics-interfaces","Java Generics Interfaces",{"key":74,"name":75,"count":11},"java-memory-jvm","Java Memory Jvm",{"key":77,"name":78,"count":11},"java-stdlib-http","Java Stdlib Http",{"key":80,"name":81,"count":11},"java-testing-tooling","Java Testing Tooling",{"key":83,"name":84,"count":11},"messaging-queues","Mesajlaşma \u002F Kuyruklar",{"key":86,"name":87,"count":11},"networking-http","Ağ \u002F HTTP",{"key":89,"name":90,"count":11},"nodejs-error-handling","Nodejs Error Handling",{"key":92,"name":93,"count":11},"nodejs-event-loop-async","Nodejs Event Loop Async",{"key":95,"name":96,"count":11},"nodejs-memory-performance","Nodejs Memory Performance",{"key":98,"name":99,"count":11},"nodejs-modules-streams","Nodejs Modules Streams",{"key":101,"name":102,"count":11},"nodejs-stdlib-http","Nodejs Stdlib Http",{"key":104,"name":105,"count":11},"nodejs-testing-tooling","Nodejs Testing Tooling",{"key":107,"name":108,"count":11},"php-concurrency-async","Php Concurrency Async",{"key":110,"name":111,"count":11},"php-exceptions","Php Exceptions",{"key":113,"name":114,"count":11},"php-generics-interfaces","Php Generics Interfaces",{"key":116,"name":117,"count":11},"php-memory-performance","Php Memory Performance",{"key":119,"name":120,"count":11},"php-stdlib-http","Php Stdlib Http",{"key":122,"name":123,"count":11},"php-testing-tooling","Php Testing Tooling",{"key":125,"name":126,"count":11},"python-concurrency-async","Python Concurrency Async",{"key":128,"name":129,"count":11},"python-errors-context","Python Errors Context",{"key":131,"name":132,"count":11},"python-memory-performance","Python Memory Performance",{"key":134,"name":135,"count":11},"python-stdlib-http","Python Stdlib Http",{"key":137,"name":138,"count":11},"python-testing-tooling","Python Testing Tooling",{"key":140,"name":141,"count":11},"python-typing-oop","Python Typing Oop",{"key":143,"name":144,"count":11},"security","Güvenlik",{"key":146,"name":147,"count":11},"testing","Test",[149,153,156,159,162,165],{"key":150,"name":151,"count":152},"csharp","C#\u002F.NET",450,{"key":154,"name":155,"count":152},"go","Go",{"key":157,"name":158,"count":152},"java","Java",{"key":160,"name":161,"count":152},"nodejs","Node.js",{"key":163,"name":164,"count":152},"php","PHP",{"key":166,"name":167,"count":152},"python","Python",[169,187,200,213,225,238],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":181,"explanation":186},"019f70e2-e823-7aec-9e68-fee0f531a574",1,"```csharp\npublic class Box\u003CT>\n{\n    public T Value { get; set; }\n}\n\nvar box = new Box\u003Cint>();\nbox.Value = 42;\n```\n`box.Value`'nun derleme zamanı tipi nedir?",[174,177,180,183],{"key":175,"text":176},"a","object",{"key":178,"text":179},"b","dynamic",{"key":181,"text":182},"c","int",{"key":184,"text":185},"d","T","`Box\u003CT>` tipi `int` ile kapatıldığında (`Box\u003Cint>`), tip içindeki her `T` yerine `int` geçer; bu yüzden `box.Value` açık tip parametresi `T` değil, somut `int` tipine sahiptir.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":178,"explanation":199},"019f70e2-e824-7ca1-99e6-d82177f87a24","C#'ta generic tip parametreleri runtime'da reify edilir (korunur). Java'nın type erasure'ına kıyasla bu ne anlama gelir?",[191,193,195,197],{"key":175,"text":192},"Derlendikten sonra runtime, T hakkında hiçbir şey bilmez — Java ile aynıdır.",{"key":178,"text":194},"Kullanılan gerçek tip argümanı runtime'da bilinir; bu yüzden `typeof(T)` gerçek tipi döndürür.",{"key":181,"text":196},"Sadece value type argümanları korunur; reference type argümanları silinir.",{"key":184,"text":198},"Reification yalnızca generic interface'ler için geçerlidir, generic class'lar için değil.","Java'da generic tip bilgisi derleme zamanında silinirken (erasure), CLR generics için tip bilgisini runtime'da tam olarak korur (reification). Bu yüzden C#'ta `typeof(T)` ve generic tipler üzerinde reflection, hem value hem reference type argümanları için doğru çalışır.",{"id":201,"topic":9,"difficulty":171,"body":202,"options":203,"correct_key":181,"explanation":212},"019f70e2-e825-7925-a028-dc3ecf7020dd","```csharp\nFunc\u003Cint, int, int> add = (a, b) => a + b;\nConsole.WriteLine(add(3, 4));\n```\nÇıktı nedir?",[204,206,208,210],{"key":175,"text":205},"34",{"key":178,"text":207},"compile error",{"key":181,"text":209},"7",{"key":184,"text":211},"12","`Func\u003Cint, int, int>`, iki `int` parametre alıp bir `int` döndüren generic bir delegate'tir. Lambda iki argümanı topladığı için `add(3, 4)` çağrısı `3 + 4 = 7` döndürür.",{"id":214,"topic":9,"difficulty":171,"body":215,"options":216,"correct_key":184,"explanation":224},"019f70e2-e826-7017-af2a-7c0d8a82bcae","```csharp\nAction\u003Cstring> greet = name => Console.WriteLine($\"Hello, {name}\");\ngreet(\"Ada\");\n```\nÇıktı nedir?",[217,219,221,222],{"key":175,"text":218},"Hello, {name}",{"key":178,"text":220},"hiçbir şey yazdırılmaz",{"key":181,"text":207},{"key":184,"text":223},"Hello, Ada","`Action\u003Cstring>`, bir `string` parametre alan ve hiçbir şey döndürmeyen generic bir delegate'tir. `greet(\"Ada\")` çağrısı lambda'yı `name = \"Ada\"` ile çalıştırır ve interpolasyonlu string `Hello, Ada` yazdırılır.",{"id":226,"topic":9,"difficulty":171,"body":227,"options":228,"correct_key":184,"explanation":237},"019f70e2-e826-7939-900f-f9934a34a198","```csharp\npublic static void PrintType\u003CT>(T value)\n{\n    Console.WriteLine(typeof(T).Name);\n}\n\nPrintType(42);\nPrintType(\"hello\");\n```\nÇıktı nedir?",[229,231,233,235],{"key":175,"text":230},"Int32\nInt32",{"key":178,"text":232},"T\nT",{"key":181,"text":234},"object\nobject",{"key":184,"text":236},"Int32\nString","Derleyici `T`'yi her çağrının argüman tipinden çıkarımlar: `42`, `T`'yi `int` (`Int32`) yapar; `\"hello\"`, `T`'yi `string` (`String`) yapar. `typeof(T).Name`, her çağrı için `T` ya da `object` gibi genel bir yer tutucuyu değil, gerçek çıkarımlanan tipi yansıtır.",{"id":239,"topic":9,"difficulty":171,"body":240,"options":241,"correct_key":175,"explanation":250},"019f70e2-e827-7db1-b6e5-e2d0cf36451f","C#'ta bir extension method nasıl tanımlanır?",[242,244,246,248],{"key":175,"text":243},"Static bir class içinde static bir metot olarak, ilk parametrenin önünde `this` ile.",{"key":178,"text":245},"Genişletilen class'ın içinde virtual bir instance metodu olarak.",{"key":181,"text":247},"Herhangi bir class içinde `[Extension]` attribute'ı ile işaretlenmiş bir metot olarak.",{"key":184,"text":249},"Orijinal class tanımına eklenen partial bir metot olarak.","Extension method'lar static bir class içinde tanımlanmış static metotlar olmalıdır; ilk parametredeki `this` niteleyicisi derleyiciye hangi tipin genişletildiğini söyler ve metodun o tip üzerinde bir instance metodu gibi çağrılmasını sağlar.",{"fields":252,"seniorities":423,"interview_shapes":424,"locales":429,"oauth":431,"question_count":434,"coach_enabled":435,"jd_match_enabled":435},[253,264,285,302,326,339,358,377,397,404,410,417],{"key":5,"name_tr":6,"name_en":6,"sort":171,"specializations":254},[255,258,259,260,261,262,263],{"key":256,"name":257,"field":5},"general","Genel",{"key":154,"name":155,"field":5},{"key":166,"name":167,"field":5},{"key":157,"name":158,"field":5},{"key":150,"name":151,"field":5},{"key":160,"name":161,"field":5},{"key":163,"name":164,"field":5},{"key":265,"name_tr":266,"name_en":266,"sort":267,"specializations":268},"frontend","Frontend",2,[269,270,273,276,279,282],{"key":256,"name":257,"field":265},{"key":271,"name":272,"field":265},"javascript","JavaScript",{"key":274,"name":275,"field":265},"typescript","TypeScript",{"key":277,"name":278,"field":265},"react","React",{"key":280,"name":281,"field":265},"vue","Vue",{"key":283,"name":284,"field":265},"angular","Angular",{"key":286,"name_tr":287,"name_en":287,"sort":288,"specializations":289},"fullstack","Fullstack",3,[290,291,292,293,294,295,296,297,298,299,300,301],{"key":256,"name":257,"field":286},{"key":154,"name":155,"field":5},{"key":166,"name":167,"field":5},{"key":157,"name":158,"field":5},{"key":150,"name":151,"field":5},{"key":160,"name":161,"field":5},{"key":163,"name":164,"field":5},{"key":271,"name":272,"field":265},{"key":274,"name":275,"field":265},{"key":277,"name":278,"field":265},{"key":280,"name":281,"field":265},{"key":283,"name":284,"field":265},{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"devops-cloud","DevOps \u002F Cloud",4,[307,308,311,314,317,320,323],{"key":256,"name":257,"field":303},{"key":309,"name":310,"field":303},"aws","AWS",{"key":312,"name":313,"field":303},"gcp","GCP",{"key":315,"name":316,"field":303},"azure","Azure",{"key":318,"name":319,"field":303},"kubernetes","Kubernetes",{"key":321,"name":322,"field":303},"terraform","Terraform",{"key":324,"name":325,"field":303},"linux","Linux",{"key":327,"name_tr":328,"name_en":328,"sort":329,"specializations":330},"ai-engineer","AI Engineer",5,[331,332,333,336],{"key":256,"name":257,"field":327},{"key":166,"name":167,"field":327},{"key":334,"name":335,"field":327},"llm-rag","LLM\u002FRAG",{"key":337,"name":338,"field":327},"mlops","MLOps",{"key":340,"name_tr":341,"name_en":342,"sort":343,"specializations":344},"database","Veritabanı","Database",6,[345,346,349,352,355],{"key":256,"name":257,"field":340},{"key":347,"name":348,"field":340},"postgresql","PostgreSQL",{"key":350,"name":351,"field":340},"mysql","MySQL",{"key":353,"name":354,"field":340},"mongodb","MongoDB",{"key":356,"name":357,"field":340},"redis","Redis",{"key":359,"name_tr":360,"name_en":361,"sort":362,"specializations":363},"mobile","Mobil","Mobile",7,[364,365,368,371,374],{"key":256,"name":257,"field":359},{"key":366,"name":367,"field":359},"ios-swift","iOS (Swift)",{"key":369,"name":370,"field":359},"android-kotlin","Android (Kotlin)",{"key":372,"name":373,"field":359},"flutter","Flutter",{"key":375,"name":376,"field":359},"react-native","React Native",{"key":143,"name_tr":144,"name_en":378,"sort":379,"specializations":380},"Security",8,[381,382,385,388,391,394],{"key":256,"name":257,"field":143},{"key":383,"name":384,"field":143},"appsec","AppSec",{"key":386,"name":387,"field":143},"offensive-pentest","Offensive \u002F Pentest",{"key":389,"name":390,"field":143},"cloud-security","Cloud Security",{"key":392,"name":393,"field":143},"devsecops","DevSecOps",{"key":395,"name":396,"field":143},"blue-team-incident","Blue Team \u002F Incident",{"key":398,"name_tr":399,"name_en":400,"sort":401,"specializations":402},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[403],{"key":256,"name":257,"field":398},{"key":405,"name_tr":406,"name_en":406,"sort":407,"specializations":408},"data-engineer","Data Engineer",10,[409],{"key":256,"name":257,"field":405},{"key":411,"name_tr":412,"name_en":413,"sort":414,"specializations":415},"game-dev","Oyun Geliştirme","Game Development",11,[416],{"key":256,"name":257,"field":411},{"key":418,"name_tr":419,"name_en":419,"sort":420,"specializations":421},"ml-engineer","ML Engineer",12,[422],{"key":256,"name":257,"field":418},[14,15,16],{"junior":425,"mid":427,"senior":428},{"questions":426,"median_sec":3},20,{"questions":426,"median_sec":3},{"questions":426,"median_sec":3},[10,430],"en",[432,433],"google","github",21750,true]