[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fcaching":4,"config":253},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","","caching","Caching","tr",75,3300,[14,15,16],"junior","mid","senior",[18,21,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],{"key":19,"name":20,"count":11},"api-design","API Tasarımı",{"key":8,"name":9,"count":11},{"key":23,"name":24,"count":11},"concurrency","Eşzamanlılık",{"key":26,"name":27,"count":11},"csharp-concurrency-async","Csharp Concurrency Async",{"key":29,"name":30,"count":11},"csharp-exceptions","Csharp Exceptions",{"key":32,"name":33,"count":11},"csharp-generics-interfaces","Csharp Generics Interfaces",{"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,227,240],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":178,"explanation":186},"019f56bb-b33c-7a92-9888-fbbfb5818421",1,"Yavaş bir veri kaynağının önüne cache koymanın temel amacı nedir?",[174,177,180,183],{"key":175,"text":176},"a","Sık erişilen veriyi şifreleyerek daha güvenli sunmak",{"key":178,"text":179},"b","Sık erişilen veriyi hızlı bir depoda tutarak gecikmeyi ve kaynağın üzerindeki yükü azaltmak",{"key":181,"text":182},"c","Cache'lenen verinin kalıcı biçimde saklanıp process restart'larından ve makine çökmelerinden sağ çıkmasını garanti etmek",{"key":184,"text":185},"d","Uygulamanın çalışma anındaki toplam bellek tüketimini azaltmak","Cache, hız için bellek harcar: sık istenen veri yeniden hesaplanmak ya da kaynaktan okunmak yerine hızlı depodan sunulur; bu hem yanıt süresini hem kaynak yükünü düşürür. Kalıcılık (c) cache'in sunduğunun tersidir — cache verisi tipik olarak volatile'dır — ve cache belleği azaltmaz, ek bellek tüketir (d).",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":175,"explanation":199},"019f56bb-b33d-7535-a229-5c93d3e06f72","Cache terminolojisinde **cache hit** nedir?",[191,193,195,197],{"key":175,"text":192},"İstenen verinin cache'te bulunması ve oradan sunulması",{"key":178,"text":194},"İstenen verinin cache'te olmaması ve kaynağın sorgulanmak zorunda kalması",{"key":181,"text":196},"Cache'in dolması ve mevcut bir kaydın eviction ile çıkarılması gerekmesi",{"key":184,"text":198},"Cache'teki bir kaydın kaynak veriyle tutarsız hale gelmesi","Hit, aramanın başarılı olması ve isteğin cache'ten sunulması demektir. (b) cache miss'i, (c) eviction'ı, (d) ise staleness'ı tarif eder — ilişkili ama ayrı üç kavram.",{"id":201,"topic":9,"difficulty":171,"body":202,"options":203,"correct_key":181,"explanation":212},"019f56bb-b33e-7387-a06c-a9f0b7b8b2a0","Bir cache %95 hit ratio raporluyor. Bu metrik ne anlama gelir?",[204,206,208,210],{"key":175,"text":205},"Cache, ayrılan belleğin %95'ini kullanıyor",{"key":178,"text":207},"Cache'teki kayıtların %95'i hâlâ kaynakla tutarlı",{"key":181,"text":209},"Okuma isteklerinin %95'i cache'ten yanıtlandı",{"key":184,"text":211},"Yazma işlemlerinin %95'i cache üzerinden geçti","Hit ratio = hit \u002F toplam arama; %95, okumaların yalnızca %5'inin kaynağa ulaşmak zorunda kaldığı anlamına gelir. Metrik, bellek kullanımı (a) ya da kayıtların tazeliği (b) hakkında bir şey söylemez.",{"id":214,"topic":9,"difficulty":215,"body":216,"options":217,"correct_key":175,"explanation":226},"019f56bb-b33e-7be8-8890-cd9f3dd161d8",2,"Cache kayıtları için TTL (time-to-live) seçerken temel trade-off nedir?",[218,220,222,224],{"key":175,"text":219},"Uzun TTL hit ratio'yu yükseltir ama stale veri penceresini genişletir",{"key":178,"text":221},"Uzun TTL veriyi daha taze yapar ama bellek kullanımını artırır",{"key":181,"text":223},"Kısa TTL hem tazeliği hem hit ratio'yu aynı anda iyileştirir",{"key":184,"text":225},"TTL sadece yazma throughput'unu etkiler, okuma davranışını etkilemez","Uzun yaşayan kayıt cache'te daha sık bulunur (yüksek hit ratio) ama kaynaktan daha uzun süre geri kalabilir (staleness). Kısa TTL, tazeliği daha çok miss pahasına satın alır — ikisi aynı anda maksimize edilemez; (c) bu yüzden yanlıştır.",{"id":228,"topic":9,"difficulty":215,"body":229,"options":230,"correct_key":181,"explanation":239},"019f56bb-b33f-7a29-b554-5a50a2dab0a7","```\nvalue = cache.get(key)\nif value == null:\n    value = db.query(key)\n    cache.set(key, value, ttl=300)\nreturn value\n```\nBu kod hangi caching desenini uygular?",[231,233,235,237],{"key":175,"text":232},"Write-through: yazmalar cache ve veritabanını birlikte günceller",{"key":178,"text":234},"Read-through: eksik değeri cache kütüphanesinin kendisi veritabanından yükler",{"key":181,"text":236},"Cache-aside: uygulama cache'e bakar, miss durumunda yükleyip cache'i doldurur",{"key":184,"text":238},"Write-behind: yazmalar cache'te biriktirilip veritabanına sonradan yazılır","Miss'i uygulama kodunun kendisi ele alıyor: veritabanını sorgulayıp cache'i dolduruyor. Bu, cache-aside'dır (lazy loading). Read-through'da (b) yüklemeyi uygulama değil cache bileşeni yapar; (a) ve (d) yazma yollarını tarif eder, buradaki kod ise bir okuma yoludur.",{"id":241,"topic":9,"difficulty":215,"body":242,"options":243,"correct_key":184,"explanation":252},"019f56bb-b340-720f-95f8-34c4ea731c54","Write-through caching stratejisinde uygulama veri yazdığında ne olur?",[244,246,248,250],{"key":175,"text":245},"Yazma sadece cache'e gider; veritabanı daha sonra asenkron güncellenir",{"key":178,"text":247},"Yazma sadece veritabanına gider; cache yeni değeri bir sonraki okumada alır",{"key":181,"text":249},"Tutarsızlık olmasın diye yazma tüm cache'i temizler",{"key":184,"text":251},"Yazma aynı işlemin parçası olarak cache'e uygulanır ve veritabanına iletilir","Write-through, ikisine de senkron yazarak cache ile kaynağı tutarlı tutar. (a) write-behind'ı (write-back) tarif eder; (b) ise cache-aside kurulumunun yazmadaki tipik davranışıdır.",{"fields":254,"seniorities":424,"interview_shapes":425,"locales":430,"oauth":432,"question_count":435,"coach_enabled":436,"jd_match_enabled":436},[255,266,286,303,327,340,359,378,398,405,411,418],{"key":5,"name_tr":6,"name_en":6,"sort":171,"specializations":256},[257,260,261,262,263,264,265],{"key":258,"name":259,"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":267,"name_tr":268,"name_en":268,"sort":215,"specializations":269},"frontend","Frontend",[270,271,274,277,280,283],{"key":258,"name":259,"field":267},{"key":272,"name":273,"field":267},"javascript","JavaScript",{"key":275,"name":276,"field":267},"typescript","TypeScript",{"key":278,"name":279,"field":267},"react","React",{"key":281,"name":282,"field":267},"vue","Vue",{"key":284,"name":285,"field":267},"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":258,"name":259,"field":287},{"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":272,"name":273,"field":267},{"key":275,"name":276,"field":267},{"key":278,"name":279,"field":267},{"key":281,"name":282,"field":267},{"key":284,"name":285,"field":267},{"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":258,"name":259,"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":258,"name":259,"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":258,"name":259,"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":258,"name":259,"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":143,"name_tr":144,"name_en":379,"sort":380,"specializations":381},"Security",8,[382,383,386,389,392,395],{"key":258,"name":259,"field":143},{"key":384,"name":385,"field":143},"appsec","AppSec",{"key":387,"name":388,"field":143},"offensive-pentest","Offensive \u002F Pentest",{"key":390,"name":391,"field":143},"cloud-security","Cloud Security",{"key":393,"name":394,"field":143},"devsecops","DevSecOps",{"key":396,"name":397,"field":143},"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":258,"name":259,"field":399},{"key":406,"name_tr":407,"name_en":407,"sort":408,"specializations":409},"data-engineer","Data Engineer",10,[410],{"key":258,"name":259,"field":406},{"key":412,"name_tr":413,"name_en":414,"sort":415,"specializations":416},"game-dev","Oyun Geliştirme","Game Development",11,[417],{"key":258,"name":259,"field":412},{"key":419,"name_tr":420,"name_en":420,"sort":421,"specializations":422},"ml-engineer","ML Engineer",12,[423],{"key":258,"name":259,"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]