[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fdatabases-sql":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","","databases-sql","Veritabanı \u002F SQL","tr",75,3300,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,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":34,"name":35,"count":11},"csharp-generics-interfaces","Csharp Generics Interfaces",{"key":37,"name":38,"count":11},"csharp-memory-performance","Csharp Memory Performance",{"key":40,"name":41,"count":11},"csharp-stdlib-http","Csharp Stdlib Http",{"key":43,"name":44,"count":11},"csharp-testing-tooling","Csharp Testing Tooling",{"key":8,"name":9,"count":11},{"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,214,227,240],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":178,"explanation":186},"019f56bb-b372-71cd-937b-4e2f0f9af62a",1,"Bir tablo kolonunda PRIMARY KEY tanımlamak neyi garanti eder?",[174,177,180,183],{"key":175,"text":176},"a","Değerler unique olur ama NULL olabilir",{"key":178,"text":179},"b","Değerler unique olur ve NULL olamaz",{"key":181,"text":182},"c","Değerler NULL olamaz ama tekrar edebilir",{"key":184,"text":185},"d","Değerler otomatik artan bir sequence ile üretilir","Primary key, uniqueness kısıtı ile NOT NULL kısıtını birleştirir. Otomatik artan değer (d) ayrı bir özelliktir (SERIAL \u002F IDENTITY \u002F AUTO_INCREMENT); primary key ile sık birlikte kullanılsa da primary key'in garantisi değildir.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":181,"explanation":199},"019f56bb-b373-7e1c-9fd2-2ab956b7bba0","`SELECT u.name, o.total FROM users u LEFT JOIN orders o ON o.user_id = u.id` sorgusunun sonucunda hangi satırlar yer alır?",[191,193,195,197],{"key":175,"text":192},"Sadece en az bir siparişi olan kullanıcılar",{"key":178,"text":194},"Sadece geçerli bir kullanıcıya ait siparişler",{"key":181,"text":196},"Tüm kullanıcılar; siparişi olmayanlarda sipariş kolonları NULL gelir",{"key":184,"text":198},"Eşleşme olmasa bile tüm kullanıcılar ve tüm siparişler","LEFT JOIN sol tablonun (users) tüm satırlarını korur. Siparişi olmayan kullanıcılar da sonuçta yer alır, sipariş kolonları NULL döner. (a) INNER JOIN'i, (d) ise FULL OUTER JOIN'e yakın bir davranışı tarif eder.",{"id":201,"topic":9,"difficulty":202,"body":203,"options":204,"correct_key":178,"explanation":213},"019f56bb-b374-7936-a45e-7372735ef034",2,"`email` kolonunda bazı NULL değerler var.\n```sql\nSELECT COUNT(*), COUNT(email) FROM users;\n```\nİki sayım arasındaki fark nedir?",[205,207,209,211],{"key":175,"text":206},"Her zaman eşittirler",{"key":178,"text":208},"COUNT(*) tüm satırları sayar; COUNT(email) email'i NULL olan satırları atlar",{"key":181,"text":210},"COUNT(email) NULL'ları da sayar ama tekrar eden email'leri yok sayar",{"key":184,"text":212},"COUNT(*) tüm kolonları okumak zorunda olduğu için daha yavaştır","Aggregate fonksiyonlara kolon argümanı verildiğinde NULL değerler yok sayılır; COUNT(email) yalnızca email'i dolu satırları sayar. COUNT(*) satırları sayar ve tüm kolonları okuması gerekmez — (d) yaygın bir efsanedir. Tekrarları yok saymak için COUNT(DISTINCT email) gerekirdi, bu yüzden (c) yanlıştır.",{"id":215,"topic":9,"difficulty":202,"body":216,"options":217,"correct_key":175,"explanation":226},"019f56bb-b375-767b-813e-74dc7158e8f3","GROUP BY kullanan bir sorguda WHERE ile HAVING arasındaki fark nedir?",[218,220,222,224],{"key":175,"text":219},"WHERE satırları gruplamadan önce filtreler; HAVING grupları aggregation sonrası filtreler",{"key":178,"text":221},"HAVING satırları gruplamadan önce filtreler; WHERE aggregate sonuçları filtreler",{"key":181,"text":223},"Sorguda GROUP BY olduğu sürece ikisi birbirinin yerine kullanılabilir",{"key":184,"text":225},"WHERE sadece index'li kolonlarda çalışır; HAVING her kolonda çalışır","WHERE önce çalışır ve satırları gruplanmadan önce eler. HAVING aggregation'dan sonra çalışır; bu sayede COUNT(*) veya SUM(total) gibi aggregate sonuçlara göre filtreleme yapabilir. Index durumu (d) hangi clause'un kullanılacağıyla ilgisizdir.",{"id":228,"topic":9,"difficulty":202,"body":229,"options":230,"correct_key":181,"explanation":239},"019f56bb-b376-7204-b146-cf402fed6bfa","```sql\nSELECT department, name, COUNT(*)\nFROM employees\nGROUP BY department;\n```\nBu sorgu PostgreSQL'de çalıştırıldığında ne olur?",[231,233,235,237],{"key":175,"text":232},"Departman başına bir satır döner, name kolonuna rastgele bir değer seçilir",{"key":178,"text":234},"Her çalışan, departmanının satır sayısıyla birlikte döner",{"key":181,"text":236},"Hata verir: `name` ne GROUP BY'da ne de bir aggregate fonksiyonun içinde",{"key":184,"text":238},"Hata verir: COUNT(*) başka kolonlarla birlikte SELECT edilemez","Standart SQL, SELECT edilen her kolonun ya GROUP BY'da ya da bir aggregate içinde olmasını ister; PostgreSQL bunu katı uygular ve `name` için hata verir. (a) seçeneği MySQL'in eski gevşek modunu (ONLY_FULL_GROUP_BY kapalı) tarif eder; (d) yanlıştır çünkü COUNT(*) doğru gruplanmış kolonlarla sorunsuz kullanılır.",{"id":241,"topic":9,"difficulty":202,"body":242,"options":243,"correct_key":184,"explanation":252},"019f56bb-b376-7e94-a561-927af75a68ea","PRIMARY KEY ve UNIQUE kısıtlarıyla ilgili hangi ifade doğrudur?",[244,246,248,250],{"key":175,"text":245},"Bir tabloda birden çok primary key olabilir ama tek bir unique kısıt olabilir",{"key":178,"text":247},"UNIQUE, primary key gibi NOT NULL anlamına da gelir",{"key":181,"text":249},"Primary key tek kolon olmak zorundadır; UNIQUE birden çok kolona yayılabilir",{"key":184,"text":251},"Bir tabloda tek primary key olur ama birden çok unique kısıt olabilir","Bir tabloda en fazla bir primary key olur (composite olabilir, bu yüzden (c) yanlış); UNIQUE kısıtlardan ise istenildiği kadar tanımlanabilir. UNIQUE, primary key'in aksine NOT NULL garantisi vermez, bu yüzden (b) yanlıştı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":202,"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]