[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en: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","en",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 Design",{"key":22,"name":23,"count":11},"caching","Caching",{"key":25,"name":26,"count":11},"concurrency","Concurrency",{"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","Databases \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","Messaging \u002F Queues",{"key":86,"name":87,"count":11},"networking-http","Networking \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","Security",{"key":146,"name":147,"count":11},"testing","Testing",[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```\nWhat is the compile-time type of `box.Value`?",[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","When `Box\u003CT>` is closed with `int` (i.e. `Box\u003Cint>`), every occurrence of `T` inside the type is replaced by `int`, so `box.Value` has the concrete compile-time type `int`, not the open type parameter `T`.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":178,"explanation":199},"019f70e2-e824-7ca1-99e6-d82177f87a24","In C#, generic type parameters are reified at runtime. What does this mean compared to Java's type erasure?",[191,193,195,197],{"key":175,"text":192},"The runtime has no knowledge of T once compiled — same as Java.",{"key":178,"text":194},"The actual type argument used is known at runtime, so `typeof(T)` returns the real type.",{"key":181,"text":196},"Only value type arguments are preserved; reference type arguments are erased.",{"key":184,"text":198},"Reification only applies to generic interfaces, not generic classes.","Unlike Java, where generic type information is erased at compile time, the CLR keeps full type information for generics at runtime (reification). This is why `typeof(T)` and reflection over generic types work correctly in C#, for both value and reference type arguments.",{"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```\nWhat is the output?",[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>` is a generic delegate taking two `int` parameters and returning an `int`. The lambda adds its two arguments, so `add(3, 4)` returns `3 + 4 = 7`.",{"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```\nWhat is the output?",[217,219,221,222],{"key":175,"text":218},"Hello, {name}",{"key":178,"text":220},"nothing is printed",{"key":181,"text":207},{"key":184,"text":223},"Hello, Ada","`Action\u003Cstring>` is a generic delegate that takes a `string` argument and returns nothing. Calling `greet(\"Ada\")` runs the lambda with `name = \"Ada\"`, printing the interpolated string `Hello, Ada`.",{"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```\nWhat is the output?",[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","The compiler infers `T` from each call's argument type: `42` makes `T` = `int` (`Int32`), `\"hello\"` makes `T` = `string` (`String`). `typeof(T).Name` reflects the actual inferred type for each call, not a generic placeholder like `T` or `object`.",{"id":239,"topic":9,"difficulty":171,"body":240,"options":241,"correct_key":175,"explanation":250},"019f70e2-e827-7db1-b6e5-e2d0cf36451f","How is an extension method declared in C#?",[242,244,246,248],{"key":175,"text":243},"As a static method in a static class, with `this` before the first parameter.",{"key":178,"text":245},"As a virtual instance method inside the class it extends.",{"key":181,"text":247},"As a method decorated with the `[Extension]` attribute in any class.",{"key":184,"text":249},"As a partial method added to the original class definition.","Extension methods must be static methods defined in a static class; the `this` modifier on the first parameter tells the compiler which type is being extended, allowing the method to be called as if it were an instance method on that type.",{"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":378,"name_en":144,"sort":379,"specializations":380},"Güvenlik",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},[430,10],"tr",[432,433],"google","github",21750,true]