[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en: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","Databases \u002F SQL","en",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 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":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","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,214,227,240],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":178,"explanation":186},"019f56bb-b372-71cd-937b-4e2f0f9af62a",1,"What does defining a PRIMARY KEY on a table column guarantee?",[174,177,180,183],{"key":175,"text":176},"a","Values are unique, but NULLs are allowed",{"key":178,"text":179},"b","Values are unique and cannot be NULL",{"key":181,"text":182},"c","Values cannot be NULL, but duplicates are allowed",{"key":184,"text":185},"d","Values are automatically generated as an incrementing sequence","A primary key combines a uniqueness constraint with NOT NULL. Auto-increment behavior (d) is a separate feature (SERIAL \u002F IDENTITY \u002F AUTO_INCREMENT) that is often used together with primary keys but is not implied by them.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":181,"explanation":199},"019f56bb-b373-7e1c-9fd2-2ab956b7bba0","In the query `SELECT u.name, o.total FROM users u LEFT JOIN orders o ON o.user_id = u.id`, which rows appear in the result?",[191,193,195,197],{"key":175,"text":192},"Only users who have at least one order",{"key":178,"text":194},"Only orders that belong to an existing user",{"key":181,"text":196},"All users; order columns are NULL for users without orders",{"key":184,"text":198},"All users and all orders, even when nothing matches","LEFT JOIN keeps every row of the left table (users). Users without a matching order still appear, with the order columns filled as NULL. Option (a) describes INNER JOIN, and (d) describes something closer to a FULL OUTER JOIN.",{"id":201,"topic":9,"difficulty":202,"body":203,"options":204,"correct_key":178,"explanation":213},"019f56bb-b374-7936-a45e-7372735ef034",2,"The `email` column contains some NULL values.\n```sql\nSELECT COUNT(*), COUNT(email) FROM users;\n```\nHow do the two counts differ?",[205,207,209,211],{"key":175,"text":206},"They are always equal",{"key":178,"text":208},"COUNT(*) counts all rows; COUNT(email) skips rows where email is NULL",{"key":181,"text":210},"COUNT(email) also counts NULLs but ignores duplicate emails",{"key":184,"text":212},"COUNT(*) is slower because it has to read every column","When given a column argument, aggregate functions ignore NULLs, so COUNT(email) counts only rows with a non-NULL email. COUNT(*) counts rows regardless of column values — and it does not need to read all columns, so (d) is a common myth. Ignoring duplicates would require COUNT(DISTINCT email), so (c) is wrong.",{"id":215,"topic":9,"difficulty":202,"body":216,"options":217,"correct_key":175,"explanation":226},"019f56bb-b375-767b-813e-74dc7158e8f3","In a query that uses GROUP BY, what is the difference between WHERE and HAVING?",[218,220,222,224],{"key":175,"text":219},"WHERE filters rows before grouping; HAVING filters groups after aggregation",{"key":178,"text":221},"HAVING filters rows before grouping; WHERE filters the aggregated results",{"key":181,"text":223},"They are interchangeable as long as the query has GROUP BY",{"key":184,"text":225},"WHERE works only on indexed columns; HAVING works on any column","WHERE runs first and eliminates individual rows before they are grouped. HAVING runs after aggregation and can therefore filter on aggregate results like COUNT(*) or SUM(total). Indexes (d) are irrelevant to which clause you can use.",{"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```\nWhat happens when this query runs on PostgreSQL?",[231,233,235,237],{"key":175,"text":232},"It returns one row per department with an arbitrarily chosen name",{"key":178,"text":234},"It returns every employee together with their department's row count",{"key":181,"text":236},"It fails: `name` is neither in GROUP BY nor inside an aggregate function",{"key":184,"text":238},"It fails: COUNT(*) cannot be selected together with other columns","Standard SQL requires every selected column to appear in GROUP BY or inside an aggregate. PostgreSQL enforces this and raises an error for `name`. Option (a) describes MySQL's historical loose mode (ONLY_FULL_GROUP_BY disabled); (d) is wrong because COUNT(*) combines fine with properly grouped columns.",{"id":241,"topic":9,"difficulty":202,"body":242,"options":243,"correct_key":184,"explanation":252},"019f56bb-b376-7e94-a561-927af75a68ea","Which statement about PRIMARY KEY and UNIQUE constraints is correct?",[244,246,248,250],{"key":175,"text":245},"A table can have multiple primary keys but only one unique constraint",{"key":178,"text":247},"UNIQUE implies NOT NULL, just like a primary key does",{"key":181,"text":249},"A primary key must be a single column; UNIQUE can span multiple columns",{"key":184,"text":251},"A table can have only one primary key but multiple unique constraints","A table has at most one primary key (which may be composite, so (c) is wrong), while any number of UNIQUE constraints can coexist. Unlike a primary key, UNIQUE does not imply NOT NULL, so (b) is wrong.",{"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":379,"name_en":144,"sort":380,"specializations":381},"Güvenlik",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},[431,10],"tr",[433,434],"google","github",21750,true]