[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fmid":4,"config":254},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":8,"spec_key":8,"spec_name":8,"locale":9,"cell_total":10,"field_total":11,"seniorities":12,"topics":15,"specs":149,"samples":169},"backend","Backend","mid","","tr",2789,3300,[13,7,14],"junior","senior",[16,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125,128,131,134,137,140,143,146],{"key":17,"name":18,"count":19},"api-design","API Tasarımı",75,{"key":21,"name":22,"count":19},"caching","Caching",{"key":24,"name":25,"count":19},"concurrency","Eşzamanlılık",{"key":27,"name":28,"count":19},"csharp-concurrency-async","Csharp Concurrency Async",{"key":30,"name":31,"count":19},"csharp-exceptions","Csharp Exceptions",{"key":33,"name":34,"count":19},"csharp-generics-interfaces","Csharp Generics Interfaces",{"key":36,"name":37,"count":19},"csharp-memory-performance","Csharp Memory Performance",{"key":39,"name":40,"count":19},"csharp-stdlib-http","Csharp Stdlib Http",{"key":42,"name":43,"count":19},"csharp-testing-tooling","Csharp Testing Tooling",{"key":45,"name":46,"count":19},"databases-sql","Veritabanı \u002F SQL",{"key":48,"name":49,"count":19},"go-concurrency","Go Concurrency",{"key":51,"name":52,"count":19},"go-errors","Go Errors",{"key":54,"name":55,"count":19},"go-interfaces-generics","Go Interfaces Generics",{"key":57,"name":58,"count":19},"go-memory-performance","Go Memory Performance",{"key":60,"name":61,"count":19},"go-stdlib-http","Go Stdlib Http",{"key":63,"name":64,"count":19},"go-testing-tooling","Go Testing Tooling",{"key":66,"name":67,"count":19},"java-concurrency","Java Concurrency",{"key":69,"name":70,"count":19},"java-exceptions","Java Exceptions",{"key":72,"name":73,"count":19},"java-generics-interfaces","Java Generics Interfaces",{"key":75,"name":76,"count":19},"java-memory-jvm","Java Memory Jvm",{"key":78,"name":79,"count":19},"java-stdlib-http","Java Stdlib Http",{"key":81,"name":82,"count":19},"java-testing-tooling","Java Testing Tooling",{"key":84,"name":85,"count":19},"messaging-queues","Mesajlaşma \u002F Kuyruklar",{"key":87,"name":88,"count":19},"networking-http","Ağ \u002F HTTP",{"key":90,"name":91,"count":19},"nodejs-error-handling","Nodejs Error Handling",{"key":93,"name":94,"count":19},"nodejs-event-loop-async","Nodejs Event Loop Async",{"key":96,"name":97,"count":19},"nodejs-memory-performance","Nodejs Memory Performance",{"key":99,"name":100,"count":19},"nodejs-modules-streams","Nodejs Modules Streams",{"key":102,"name":103,"count":19},"nodejs-stdlib-http","Nodejs Stdlib Http",{"key":105,"name":106,"count":19},"nodejs-testing-tooling","Nodejs Testing Tooling",{"key":108,"name":109,"count":19},"php-concurrency-async","Php Concurrency Async",{"key":111,"name":112,"count":19},"php-exceptions","Php Exceptions",{"key":114,"name":115,"count":19},"php-generics-interfaces","Php Generics Interfaces",{"key":117,"name":118,"count":19},"php-memory-performance","Php Memory Performance",{"key":120,"name":121,"count":19},"php-stdlib-http","Php Stdlib Http",{"key":123,"name":124,"count":19},"php-testing-tooling","Php Testing Tooling",{"key":126,"name":127,"count":19},"python-concurrency-async","Python Concurrency Async",{"key":129,"name":130,"count":19},"python-errors-context","Python Errors Context",{"key":132,"name":133,"count":19},"python-memory-performance","Python Memory Performance",{"key":135,"name":136,"count":19},"python-stdlib-http","Python Stdlib Http",{"key":138,"name":139,"count":19},"python-testing-tooling","Python Testing Tooling",{"key":141,"name":142,"count":19},"python-typing-oop","Python Typing Oop",{"key":144,"name":145,"count":19},"security","Güvenlik",{"key":147,"name":148,"count":19},"testing","Test",[150,154,157,160,163,166],{"key":151,"name":152,"count":153},"csharp","C#\u002F.NET",450,{"key":155,"name":156,"count":153},"go","Go",{"key":158,"name":159,"count":153},"java","Java",{"key":161,"name":162,"count":153},"nodejs","Node.js",{"key":164,"name":165,"count":153},"php","PHP",{"key":167,"name":168,"count":153},"python","Python",[170,188,201,215,228,241],{"id":171,"topic":18,"difficulty":172,"body":173,"options":174,"correct_key":182,"explanation":187},"019f56bb-b324-7af3-81dc-b6c1b3f549a2",2,"Hangi HTTP metodu idempotent DEĞİLDİR?",[175,178,181,184],{"key":176,"text":177},"a","GET",{"key":179,"text":180},"b","DELETE",{"key":182,"text":183},"c","POST",{"key":185,"text":186},"d","PUT","Idempotent, aynı isteğin tekrarlanmasının sunucuyu bir kez gönderilmişle aynı state'te bırakması demektir. POST tipik olarak her çağrıda yeni bir resource yaratır; tekrar etkiyi çoğaltır. DELETE, tekrar 404 dönse bile idempotent kalır — resource iki durumda da silinmiştir.",{"id":189,"topic":18,"difficulty":172,"body":190,"options":191,"correct_key":179,"explanation":200},"019f56bb-b326-7a53-97e1-b839433ee2ca","401 Unauthorized ile 403 Forbidden arasındaki fark nedir?",[192,194,196,198],{"key":176,"text":193},"401 kullanıcının o resource için yetkisi olmadığını, 403 istekte geçerli kimlik bilgisi bulunmadığını belirtir",{"key":179,"text":195},"401 kimlik bilgisi eksik\u002Fgeçersiz demektir; 403 kimliği doğrulanmış kullanıcının yetkisi yok demektir",{"key":182,"text":197},"Birbirlerinin yerine kullanılabilirler; seçim ekip tercihine kalmıştır",{"key":185,"text":199},"401 sadece süresi dolmuş session'lar, 403 sadece banlanmış hesaplar içindir","401 \"kim olduğunu kanıtla\" der (authentication problemi); 403 ise \"kim olduğunu biliyorum ama bunu yapamazsın\" der (authorization problemi). (a) şıkkı bunu tam tersinden anlatır — en klasik karıştırma budur.",{"id":202,"topic":18,"difficulty":203,"body":204,"options":205,"correct_key":176,"explanation":214},"019f56bb-b327-74ec-85da-533f10fc0c08",3,"Aynı DELETE isteği iki kez gönderiliyor:\n```http\nDELETE \u002Forders\u002F42   ->  204 No Content\nDELETE \u002Forders\u002F42   ->  404 Not Found\n```\nİki çağrı farklı status code döndürüyor. DELETE'in idempotency'si ihlal edilmiş midir?",[206,208,210,212],{"key":176,"text":207},"Hayır — idempotency sunucu state'iyle ilgilidir; iki çağrıdan sonra da sipariş eşit derecede silinmiştir",{"key":179,"text":209},"Evet — idempotent bir metod her tekrarda aynı status code'u döndürmek zorundadır; yalnızca aynı son state'e ulaşmak yetmez",{"key":182,"text":211},"Evet — istemci retry'ı bırakana kadar sunucu 204 döndürmeye devam etmeliydi",{"key":185,"text":213},"Hayır — çünkü DELETE zaten hiçbir zaman idempotent bir metod olmadı","Idempotency, isteğin tekrarının sunucuyu aynı state'te bırakacağını vadeder; response'un birebir aynı olacağını değil. İki çağrıdan sonra da sipariş yoktur; 404 sadece artık var olmadığını raporlar. Aynı status code beklemek (b), tanımın en sık yanlış okunma biçimidir.",{"id":216,"topic":18,"difficulty":172,"body":217,"options":218,"correct_key":176,"explanation":227},"019f56bb-b328-7d81-abc7-ff9b4c702b2f","Kayıtlı kullanıcı `{\"name\": \"Ali\", \"email\": \"ali@old.com\"}`. Şu istek geliyor:\n```http\nPATCH \u002Fusers\u002F7\nContent-Type: application\u002Fjson\n\n{\"email\": \"ali@new.com\"}\n```\nDoğru implemente edilmiş bir PATCH ile `name` alanına ne olur?",[219,221,223,225],{"key":176,"text":220},"\"Ali\" olarak kalır — PATCH yalnızca istekte yer alan alanları değiştirir",{"key":179,"text":222},"null olur, çünkü request body'de gönderilmemiştir",{"key":182,"text":224},"İstek reddedilir: PATCH, resource'un tam halini gerektirir",{"key":185,"text":226},"O alan için tanımlı sunucu tarafı default değerine sıfırlanır","PATCH kısmi güncellemedir: istekte olmayan alanlara dokunulmaz. Gönderilmeyen alanları null'lamak (b), PUT ile tam değiştirme davranışını tarif eder — eksik objeyi PUT ile göndermek, verinin kazayla silinmesinin tam da klasik yoludur.",{"id":229,"topic":18,"difficulty":172,"body":230,"options":231,"correct_key":185,"explanation":240},"019f56bb-b329-784b-8d0c-735598585391","Bir request body geçerli JSON olarak parse ediliyor ama bir iş kuralını ihlal ediyor (doğum tarihi gelecekte). Ekip, istemcilerin bunu parse edilemeyen JSON'dan ayırt edebilmesini istiyor. Yaygın konvansiyon hangi status code ayrımıdır?",[232,234,236,238],{"key":176,"text":233},"İki durumda da 400, çünkü tüm istemci hataları tek code paylaşmalıdır",{"key":179,"text":235},"Bozuk ya da parse edilemeyen isteğe 422, düzgün ama anlamsal olarak geçersiz olana 400",{"key":182,"text":237},"Validation hatalarına 500, parse hatalarına 400",{"key":185,"text":239},"Bozuk\u002Fparse edilemeyen isteğe 400, düzgün ama anlamsal olarak geçersiz olana 422","Yaygın konvansiyon: sunucu isteği parse bile edemiyorsa 400; parse edilip validation kurallarına takılıyorsa 422 (Unprocessable Content). (b) aynı ikilinin tersidir; 500 (c) ise istemcinin bozuk verisinin suçunu sunucuya atar.",{"id":242,"topic":18,"difficulty":203,"body":243,"options":244,"correct_key":179,"explanation":253},"019f56bb-b32a-79e1-adfd-b3e512867a2e","İki istemci aynı dokümanı düzenliyor. Sunucuda şu an `version: 5` kayıtlı. Şu güncelleme geliyor:\n```http\nPUT \u002Fdocuments\u002F12\nContent-Type: application\u002Fjson\n\n{\"title\": \"Final\", \"version\": 4}\n```\nİstek bayat bir versiyona dayanıyor. Bu optimistic-locking tasarımında en uygun response hangisidir?",[245,247,249,251],{"key":176,"text":246},"200 OK — eşzamanlı düzenlemede işleyen tek politika last write wins'tir",{"key":179,"text":248},"409 Conflict — güncelleme eski state'e dayanıyor",{"key":182,"text":250},"404 Not Found — dokümanın 4. versiyonu artık sunucuda mevcut değil",{"key":185,"text":252},"401 Unauthorized — istemcinin düzenleme session'ının süresi dolmuş","409 Conflict, isteğin resource'un güncel state'iyle çatıştığını söyler — versiyon uyuşmazlığının standart cevabıdır; istemcinin yapması gereken, güncel hali yeniden çekip tekrar denemektir. Sessizce kabul etmek (a), diğer istemcinin değişikliklerini ezerdi; optimistic locking tam olarak bunu önlemek için vardır. (c) ise versiyonu ayrı bir alt-resource sanma hatasıdır.",{"fields":255,"seniorities":425,"interview_shapes":426,"locales":431,"oauth":433,"question_count":436,"coach_enabled":437,"jd_match_enabled":437},[256,268,288,304,328,341,360,379,399,406,412,419],{"key":5,"name_tr":6,"name_en":6,"sort":257,"specializations":258},1,[259,262,263,264,265,266,267],{"key":260,"name":261,"field":5},"general","Genel",{"key":155,"name":156,"field":5},{"key":167,"name":168,"field":5},{"key":158,"name":159,"field":5},{"key":151,"name":152,"field":5},{"key":161,"name":162,"field":5},{"key":164,"name":165,"field":5},{"key":269,"name_tr":270,"name_en":270,"sort":172,"specializations":271},"frontend","Frontend",[272,273,276,279,282,285],{"key":260,"name":261,"field":269},{"key":274,"name":275,"field":269},"javascript","JavaScript",{"key":277,"name":278,"field":269},"typescript","TypeScript",{"key":280,"name":281,"field":269},"react","React",{"key":283,"name":284,"field":269},"vue","Vue",{"key":286,"name":287,"field":269},"angular","Angular",{"key":289,"name_tr":290,"name_en":290,"sort":203,"specializations":291},"fullstack","Fullstack",[292,293,294,295,296,297,298,299,300,301,302,303],{"key":260,"name":261,"field":289},{"key":155,"name":156,"field":5},{"key":167,"name":168,"field":5},{"key":158,"name":159,"field":5},{"key":151,"name":152,"field":5},{"key":161,"name":162,"field":5},{"key":164,"name":165,"field":5},{"key":274,"name":275,"field":269},{"key":277,"name":278,"field":269},{"key":280,"name":281,"field":269},{"key":283,"name":284,"field":269},{"key":286,"name":287,"field":269},{"key":305,"name_tr":306,"name_en":306,"sort":307,"specializations":308},"devops-cloud","DevOps \u002F Cloud",4,[309,310,313,316,319,322,325],{"key":260,"name":261,"field":305},{"key":311,"name":312,"field":305},"aws","AWS",{"key":314,"name":315,"field":305},"gcp","GCP",{"key":317,"name":318,"field":305},"azure","Azure",{"key":320,"name":321,"field":305},"kubernetes","Kubernetes",{"key":323,"name":324,"field":305},"terraform","Terraform",{"key":326,"name":327,"field":305},"linux","Linux",{"key":329,"name_tr":330,"name_en":330,"sort":331,"specializations":332},"ai-engineer","AI Engineer",5,[333,334,335,338],{"key":260,"name":261,"field":329},{"key":167,"name":168,"field":329},{"key":336,"name":337,"field":329},"llm-rag","LLM\u002FRAG",{"key":339,"name":340,"field":329},"mlops","MLOps",{"key":342,"name_tr":343,"name_en":344,"sort":345,"specializations":346},"database","Veritabanı","Database",6,[347,348,351,354,357],{"key":260,"name":261,"field":342},{"key":349,"name":350,"field":342},"postgresql","PostgreSQL",{"key":352,"name":353,"field":342},"mysql","MySQL",{"key":355,"name":356,"field":342},"mongodb","MongoDB",{"key":358,"name":359,"field":342},"redis","Redis",{"key":361,"name_tr":362,"name_en":363,"sort":364,"specializations":365},"mobile","Mobil","Mobile",7,[366,367,370,373,376],{"key":260,"name":261,"field":361},{"key":368,"name":369,"field":361},"ios-swift","iOS (Swift)",{"key":371,"name":372,"field":361},"android-kotlin","Android (Kotlin)",{"key":374,"name":375,"field":361},"flutter","Flutter",{"key":377,"name":378,"field":361},"react-native","React Native",{"key":144,"name_tr":145,"name_en":380,"sort":381,"specializations":382},"Security",8,[383,384,387,390,393,396],{"key":260,"name":261,"field":144},{"key":385,"name":386,"field":144},"appsec","AppSec",{"key":388,"name":389,"field":144},"offensive-pentest","Offensive \u002F Pentest",{"key":391,"name":392,"field":144},"cloud-security","Cloud Security",{"key":394,"name":395,"field":144},"devsecops","DevSecOps",{"key":397,"name":398,"field":144},"blue-team-incident","Blue Team \u002F Incident",{"key":400,"name_tr":401,"name_en":402,"sort":403,"specializations":404},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[405],{"key":260,"name":261,"field":400},{"key":407,"name_tr":408,"name_en":408,"sort":409,"specializations":410},"data-engineer","Data Engineer",10,[411],{"key":260,"name":261,"field":407},{"key":413,"name_tr":414,"name_en":415,"sort":416,"specializations":417},"game-dev","Oyun Geliştirme","Game Development",11,[418],{"key":260,"name":261,"field":413},{"key":420,"name_tr":421,"name_en":421,"sort":422,"specializations":423},"ml-engineer","ML Engineer",12,[424],{"key":260,"name":261,"field":420},[13,7,14],{"junior":427,"mid":429,"senior":430},{"questions":428,"median_sec":3},20,{"questions":428,"median_sec":3},{"questions":428,"median_sec":3},[9,432],"en",[434,435],"google","github",21750,true]