[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:database\u002Fredis-data-structures":4,"config":214},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":115,"samples":129},"database","Veritabanı","","redis-data-structures","Redis Data Structures","tr",75,2475,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,94,97,100,103,106,109,112],{"key":19,"name":20,"count":11},"backup-recovery","Backup Recovery",{"key":22,"name":23,"count":11},"data-modeling","Data Modeling",{"key":25,"name":26,"count":11},"indexing","Indexing",{"key":28,"name":29,"count":11},"mongodb-aggregation","Mongodb Aggregation",{"key":31,"name":32,"count":11},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":34,"name":35,"count":11},"mongodb-operations","Mongodb Operations",{"key":37,"name":38,"count":11},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":40,"name":41,"count":11},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":43,"name":44,"count":11},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":46,"name":47,"count":11},"mysql-indexes","Mysql Indexes",{"key":49,"name":50,"count":11},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":52,"name":53,"count":11},"mysql-operations","Mysql Operations",{"key":55,"name":56,"count":11},"mysql-query-optimization","Mysql Query Optimization",{"key":58,"name":59,"count":11},"mysql-replication-scaling","Mysql Replication Scaling",{"key":61,"name":62,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":64,"name":65,"count":11},"nosql-models","Nosql Models",{"key":67,"name":68,"count":11},"performance-tuning","Performance Tuning",{"key":70,"name":71,"count":11},"pg-indexes","Pg Indexes",{"key":73,"name":74,"count":11},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":76,"name":77,"count":11},"pg-operations","Pg Operations",{"key":79,"name":80,"count":11},"pg-query-planning","Pg Query Planning",{"key":82,"name":83,"count":11},"pg-transactions-locking","Pg Transactions Locking",{"key":85,"name":86,"count":11},"pg-types-constraints","Pg Types Constraints",{"key":88,"name":89,"count":11},"query-optimization","Query Optimization",{"key":91,"name":92,"count":11},"redis-cluster-sharding","Redis Cluster Sharding",{"key":8,"name":9,"count":11},{"key":95,"name":96,"count":11},"redis-expiration-eviction","Redis Expiration Eviction",{"key":98,"name":99,"count":11},"redis-persistence","Redis Persistence",{"key":101,"name":102,"count":11},"redis-replication-sentinel","Redis Replication Sentinel",{"key":104,"name":105,"count":11},"redis-transactions-scripting","Redis Transactions Scripting",{"key":107,"name":108,"count":11},"replication-scaling","Replication Scaling",{"key":110,"name":111,"count":11},"security-access","Security Access",{"key":113,"name":114,"count":11},"transactions-isolation","Transactions Isolation",[116,120,123,126],{"key":117,"name":118,"count":119},"mongodb","MongoDB",450,{"key":121,"name":122,"count":119},"mysql","MySQL",{"key":124,"name":125,"count":119},"postgresql","PostgreSQL",{"key":127,"name":128,"count":119},"redis","Redis",[130,148,161,175,188,201],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":139,"explanation":147},"019f89ea-0596-71ed-a23f-fe5fe1d089df",1,"Sayfa görüntülenme sayısı gibi basit bir sayaç saklamak için hangi Redis veri tipi en uygundur?",[135,138,141,144],{"key":136,"text":137},"a","Hash",{"key":139,"text":140},"b","String",{"key":142,"text":143},"c","Set",{"key":145,"text":146},"d","List","Redis string'ler integer değer tutabilir ve atomik `INCR`\u002F`INCRBY` operasyonlarını destekler; bu da onları sayaçlar için doğal seçim yapar. Hash'ler (a) çok alanlı nesneler için, set'ler (c) benzersiz sırasız koleksiyonlar için, list'ler (d) sıralı diziler içindir — hiçbiri tek bir skaler değer üzerinde doğrudan atomik sayısal artış sunmaz.",{"id":149,"topic":9,"difficulty":132,"body":150,"options":151,"correct_key":142,"explanation":160},"019f89ea-0596-7aec-b37c-0407c6bf4d15","```\nRPUSH tasks \"a\" \"b\" \"c\"\nLRANGE tasks 0 -1\n```\n`LRANGE tasks 0 -1` ne döner?",[152,154,156,158],{"key":136,"text":153},"Sadece ilk eleman, \"a\"",{"key":139,"text":155},"Sadece son eleman, \"c\"",{"key":142,"text":157},"Tüm elemanlar: \"a\", \"b\", \"c\"",{"key":145,"text":159},"Hata verir, çünkü -1 geçerli bir index değildir","`LRANGE key start stop` negatif index'leri destekler; -1 son elemanı ifade eder. Dolayısıyla `0 -1` tüm listeyi kapsar ve elemanları sırayla döner: \"a\", \"b\", \"c\". Negatif index'ler normal, belgelenmiş bir özelliktir (d yanlış) ve aralık tek bir uca sınırlı değildir (a, b).",{"id":162,"topic":9,"difficulty":163,"body":164,"options":165,"correct_key":136,"explanation":174},"019f89ea-0597-7304-ac96-12c721260141",2,"Bir kullanıcı profilini (isim, email, yaş) tek bir Redis key altında saklamak ve sadece `yaş` alanını, tüm nesneyi yeniden yazmadan güncelleyebilmek istiyorsun. Hangi veri tipi en uygun?",[166,168,170,172],{"key":136,"text":167},"Hash; her profil alanı içinde bir field-value çifti olarak",{"key":139,"text":169},"String; tüm profili bir JSON blob olarak saklayıp her güncellemede yeniden yazarak",{"key":142,"text":171},"List; her alan değiştiğinde yeni bir profil versiyonu ekleyerek",{"key":145,"text":173},"Set; her field-value çifti bir set üyesi olarak","Hash, tek bir key altında field isimlerini value'lara eşler; bu yüzden `HSET user:1 age 31` tek bir O(1) komutla sadece o alanı günceller, tüm nesneyi okuyup-değiştirip-yazmaya gerek kalmaz. JSON string (b) çalışır ama tek bir alan değişikliği için bile tüm blob'un okunup yeniden yazılmasını zorunlu kılar. List'in (c) adlandırılmış alan kavramı yoktur ve sınırsız büyür. Set'in (d) field-value yapısı yoktur ve kısmi alan güncellemesini temiz şekilde desteklemez.",{"id":176,"topic":9,"difficulty":132,"body":177,"options":178,"correct_key":145,"explanation":187},"019f89ea-0597-7d51-a160-031da63449ab","Bir Redis Set'in (List'in aksine) üyeleri hakkında verdiği garanti nedir?",[179,181,183,185],{"key":136,"text":180},"Üyeler her zaman eklendikleri sırayla döner",{"key":139,"text":182},"Üyeler otomatik olarak alfabetik sıralanır",{"key":142,"text":184},"Üyeler, bir list gibi birden fazla kez görünebilir",{"key":145,"text":186},"Her üye benzersizdir — duplicate'ler otomatik olarak reddedilir","Redis Set, benzersiz string'lerden oluşan sırasız bir koleksiyondur; aynı üyeyi `SADD` ile iki kez eklemenin ikinci seferde hiçbir etkisi yoktur. Ekleme-sırası garantisi (a) yoktur ve otomatik alfabetik sıralama (b) yoktur (buna en yakın olan Sorted Set'in score'a göre sıralamasıdır, o da varsayılan olarak alfabetik değildir). Duplicate'lere izin verilmesi (c) tam olarak Set'in engellediği şeydir.",{"id":189,"topic":9,"difficulty":163,"body":190,"options":191,"correct_key":142,"explanation":200},"019f89ea-0598-741b-8e0f-ee8ba27d9b44","Her oyuncunun sayısal bir skoru olduğu, ilk 10 oyuncuyu skora göre sıralı ve verimli şekilde çekmen gereken canlı bir liderlik tablosu kurmak istiyorsun. Hangi veri tipi tam olarak bunun için tasarlanmıştır?",[192,194,196,198],{"key":136,"text":193},"Her oyuncu için düz bir String, sonra uygulama tarafında client-side sıralama",{"key":139,"text":195},"Skorları kabaca sırada tutmak için `LPUSH` kullanan bir List",{"key":142,"text":197},"Sıralama değeri olarak score'u kullanan bir Sorted Set (ZSET)",{"key":145,"text":199},"Score'ların benzersiz olması gerekmediği için bir Set","Sorted Set her üyeyi bir kayan noktalı score ile saklar ve üyeleri (bir skip list aracılığıyla) dahili olarak bu score'a göre sıralı tutar; bu yüzden `ZRANGE`\u002F`ZREVRANGE` O(log N + M) karmaşıklıkla bir top-N dilimi çekebilir. Düz string'ler (a) tüm sıralama işini client'a iter ve her oyuncunun çekilmesini gerektirir. List'in (b) score-tabanlı sıralama kavramı yoktur — `LPUSH` sadece pozisyonu etkiler, rank'i değil. Set'in (d) hiç score'u yoktur, bu yüzden ranking mümkün değildir.",{"id":202,"topic":9,"difficulty":132,"body":203,"options":204,"correct_key":136,"explanation":213},"019f89ea-0598-7c46-9dc0-69f2c7f10717","```\nSET counter 10\nINCR counter\nGET counter\n```\nSon `GET counter` ne döner?",[205,207,209,211],{"key":136,"text":206},"\"11\"",{"key":139,"text":208},"\"10\"",{"key":142,"text":210},"Hata verir, çünkü INCR sadece INCR ile oluşturulmuş key'lerde çalışır",{"key":145,"text":212},"\"101\", çünkü INCR 1'i karakter olarak ekler","`INCR`, string değeri bir integer olarak parse eder ve atomik olarak 1 artırır, sonucu tekrar string olarak saklar. \"10\" 11 olur, \"11\" olarak saklanır. `INCR`, key'in nasıl oluşturulduğundan bağımsız olarak geçerli bir integer tutan her string üzerinde çalışır (c yanlış) ve string birleştirme değil, sayısal artış yapar (d yanlış).",{"fields":215,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[216,241,261,278,302,315,324,343,365,372,378,385],{"key":217,"name_tr":218,"name_en":218,"sort":132,"specializations":219},"backend","Backend",[220,223,226,229,232,235,238],{"key":221,"name":222,"field":217},"general","Genel",{"key":224,"name":225,"field":217},"go","Go",{"key":227,"name":228,"field":217},"python","Python",{"key":230,"name":231,"field":217},"java","Java",{"key":233,"name":234,"field":217},"csharp","C#\u002F.NET",{"key":236,"name":237,"field":217},"nodejs","Node.js",{"key":239,"name":240,"field":217},"php","PHP",{"key":242,"name_tr":243,"name_en":243,"sort":163,"specializations":244},"frontend","Frontend",[245,246,249,252,255,258],{"key":221,"name":222,"field":242},{"key":247,"name":248,"field":242},"javascript","JavaScript",{"key":250,"name":251,"field":242},"typescript","TypeScript",{"key":253,"name":254,"field":242},"react","React",{"key":256,"name":257,"field":242},"vue","Vue",{"key":259,"name":260,"field":242},"angular","Angular",{"key":262,"name_tr":263,"name_en":263,"sort":264,"specializations":265},"fullstack","Fullstack",3,[266,267,268,269,270,271,272,273,274,275,276,277],{"key":221,"name":222,"field":262},{"key":224,"name":225,"field":217},{"key":227,"name":228,"field":217},{"key":230,"name":231,"field":217},{"key":233,"name":234,"field":217},{"key":236,"name":237,"field":217},{"key":239,"name":240,"field":217},{"key":247,"name":248,"field":242},{"key":250,"name":251,"field":242},{"key":253,"name":254,"field":242},{"key":256,"name":257,"field":242},{"key":259,"name":260,"field":242},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":221,"name":222,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":221,"name":222,"field":303},{"key":227,"name":228,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":6,"name_en":316,"sort":317,"specializations":318},"Database",6,[319,320,321,322,323],{"key":221,"name":222,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":117,"name":118,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":221,"name":222,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":221,"name":222,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":221,"name":222,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":221,"name":222,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":221,"name":222,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":221,"name":222,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[10,398],"en",[400,401],"google","github",21750,true]