[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:backend\u002Fphp-stdlib-http":4,"config":254},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","","php-stdlib-http","Php Stdlib Http","en",75,3300,[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,96,99,102,105,108,111,114,117,120,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":46,"name":47,"count":11},"databases-sql","Databases \u002F SQL",{"key":49,"name":50,"count":11},"go-concurrency","Go Concurrency",{"key":52,"name":53,"count":11},"go-errors","Go Errors",{"key":55,"name":56,"count":11},"go-interfaces-generics","Go Interfaces Generics",{"key":58,"name":59,"count":11},"go-memory-performance","Go Memory Performance",{"key":61,"name":62,"count":11},"go-stdlib-http","Go Stdlib Http",{"key":64,"name":65,"count":11},"go-testing-tooling","Go Testing Tooling",{"key":67,"name":68,"count":11},"java-concurrency","Java Concurrency",{"key":70,"name":71,"count":11},"java-exceptions","Java Exceptions",{"key":73,"name":74,"count":11},"java-generics-interfaces","Java Generics Interfaces",{"key":76,"name":77,"count":11},"java-memory-jvm","Java Memory Jvm",{"key":79,"name":80,"count":11},"java-stdlib-http","Java Stdlib Http",{"key":82,"name":83,"count":11},"java-testing-tooling","Java Testing Tooling",{"key":85,"name":86,"count":11},"messaging-queues","Messaging \u002F Queues",{"key":88,"name":89,"count":11},"networking-http","Networking \u002F HTTP",{"key":91,"name":92,"count":11},"nodejs-error-handling","Nodejs Error Handling",{"key":94,"name":95,"count":11},"nodejs-event-loop-async","Nodejs Event Loop Async",{"key":97,"name":98,"count":11},"nodejs-memory-performance","Nodejs Memory Performance",{"key":100,"name":101,"count":11},"nodejs-modules-streams","Nodejs Modules Streams",{"key":103,"name":104,"count":11},"nodejs-stdlib-http","Nodejs Stdlib Http",{"key":106,"name":107,"count":11},"nodejs-testing-tooling","Nodejs Testing Tooling",{"key":109,"name":110,"count":11},"php-concurrency-async","Php Concurrency Async",{"key":112,"name":113,"count":11},"php-exceptions","Php Exceptions",{"key":115,"name":116,"count":11},"php-generics-interfaces","Php Generics Interfaces",{"key":118,"name":119,"count":11},"php-memory-performance","Php Memory Performance",{"key":8,"name":9,"count":11},{"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,213,226,240],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":181,"explanation":186},"019f7281-52af-7a95-9dc7-f65ea7eb6b85",2,"```php\n$prices = ['apple' => 2, 'pear' => 3];\n$doubled = array_map(fn($p) => $p * 2, $prices);\nprint_r($doubled);\n```\nWhat is printed?",[174,177,180,183],{"key":175,"text":176},"a","Array ( [0] => 4 [1] => 6 ) — array_map always renumbers keys starting from 0",{"key":178,"text":179},"b","Array ( [apple] => 2 [pear] => 3 ) — the closure is ignored because array_map cannot take arrow functions",{"key":181,"text":182},"c","Array ( [apple] => 4 [pear] => 6 ) — original keys are preserved, each value doubled",{"key":184,"text":185},"d","A fatal error, because array_map cannot be combined with a single input array","array_map() preserves the original array's keys whenever exactly one input array is passed — only when multiple arrays are passed does it reindex the result numerically. Here each value is doubled (2*2=4, 3*2=6) while the string keys 'apple' and 'pear' stay attached to their new values.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":175,"explanation":199},"019f7281-52b1-7040-bd60-405e4f40974c","```php\n$a = [1, 2, 3];\n$b = [10, 20, 30];\n$result = array_map(null, $a, $b);\nprint_r($result[1]);\n```\nWhat is printed?",[191,193,195,197],{"key":175,"text":192},"Array ( [0] => 2 [1] => 20 )",{"key":178,"text":194},"22 — array_map(null, ...) sums corresponding elements when the callback is null",{"key":181,"text":196},"2 — only the first array's element at that position is kept",{"key":184,"text":198},"Array ( [0] => 1 [1] => 10 [2] => 2 [3] => 20 ) — all elements flattened into one array","Passing null as the callback with multiple arrays makes array_map() zip them: each output element is an array containing the corresponding element from every input array at that index. $result[1] pairs $a[1]=2 with $b[1]=20, giving [2, 20]. The result is reindexed numerically regardless of the input arrays' original keys.",{"id":201,"topic":9,"difficulty":171,"body":202,"options":203,"correct_key":184,"explanation":212},"019f7281-52b4-7123-a4e0-957f8a61c33a","A junior developer filters a mixed array to drop \"empty-ish\" values before saving to the database:\n```php\n$values = [0 => 'x', 1 => 0, 2 => '', 3 => 'y', 4 => null, 5 => '0'];\n$filtered = array_filter($values);\nprint_r($filtered);\n```\nWhat gets printed?",[204,206,208,210],{"key":175,"text":205},"Array ( [0] => 'x' [1] => 0 [2] => '' [3] => 'y' [4] => null [5] => '0' ) — array_filter() without a callback returns the array unchanged",{"key":178,"text":207},"Array ( [0] => 'x' [1] => 'y' ) — surviving values are renumbered starting from 0",{"key":181,"text":209},"Array ( ) — array_filter() without an explicit callback always returns an empty array",{"key":184,"text":211},"Array ( [0] => x [3] => y ) — falsy values (0, '', null, '0') are dropped and the original keys of survivors are kept","Without a callback, array_filter() uses a boolean cast on each value: 0, '', null, and the special string '0' are all falsy in PHP and get removed, while 'x' and 'y' are truthy and survive. Crucially, array_filter() never renumbers keys — the surviving elements keep their original array keys (0 and 3 here), which is why a subsequent foreach or array_values() call is often needed if a clean 0-based list is required.",{"id":214,"topic":9,"difficulty":171,"body":215,"options":216,"correct_key":178,"explanation":225},"019f7281-52b5-7ca0-8342-b89c98835669","An array holds a key whose value is explicitly set to null: `$data = ['name' => 'Ada', 'age' => null];`. What is the key difference between `isset($data['age'])` and `array_key_exists('age', $data)` in this case?",[217,219,221,223],{"key":175,"text":218},"There is no difference — both return true whenever the key is present, whether or not its value is null",{"key":178,"text":220},"isset() returns false because it also requires the value to be non-null, whereas array_key_exists() returns true because it only checks whether the key is present in the array",{"key":181,"text":222},"array_key_exists() returns false for a null value while isset() returns true, since isset() only checks key presence and ignores the value entirely",{"key":184,"text":224},"Both return false, because PHP treats a key whose value is null as if the key were never set in the array","isset() checks two things at once: that the key exists AND that its value is not null — so for a key explicitly holding null, isset() returns false. array_key_exists() checks only whether the key is present in the array, regardless of what value (including null) is stored there, so it returns true. This distinction matters whenever a config or optional field can legitimately hold null and code needs to tell \"missing\" apart from \"present but null\".",{"id":227,"topic":9,"difficulty":228,"body":229,"options":230,"correct_key":175,"explanation":239},"019f7281-52b8-7e5f-865c-b1aee74699e5",1,"```php\n$total = array_reduce([1, 2, 3, 4], fn($carry, $n) => $carry + $n, 0);\necho $total;\n```\nWhat is printed?",[231,233,235,237],{"key":175,"text":232},"10",{"key":178,"text":234},"0",{"key":181,"text":236},"4",{"key":184,"text":238},"24","array_reduce() walks the array left to right, calling the callback with the running $carry (starting at the initial value 0) and each element $n, replacing $carry with the callback's return value each time: 0+1=1, 1+2=3, 3+3=6, 6+4=10. The final carry, 10, is returned.",{"id":241,"topic":9,"difficulty":242,"body":243,"options":244,"correct_key":181,"explanation":253},"019f7281-52b9-7580-93b1-d67bb21a025e",3,"```php\n$result = array_reduce([], fn($carry, $n) => $carry + $n);\nvar_dump($result);\n```\nWhat is printed?",[245,247,249,251],{"key":175,"text":246},"int(0)",{"key":178,"text":248},"bool(false)",{"key":181,"text":250},"NULL",{"key":184,"text":252},"It throws a fatal error because array_reduce() requires an explicit initial value","array_reduce()'s third parameter (the initial carry) defaults to null when omitted. Since the input array is empty, the callback is never invoked at all, and the function simply returns the initial value unchanged — null here, not 0. This is a common source of bugs when someone assumes an omitted initial value behaves like 0 for a numeric sum.",{"fields":255,"seniorities":424,"interview_shapes":425,"locales":430,"oauth":432,"question_count":435,"coach_enabled":436,"jd_match_enabled":436},[256,267,287,303,327,340,359,378,398,405,411,418],{"key":5,"name_tr":6,"name_en":6,"sort":228,"specializations":257},[258,261,262,263,264,265,266],{"key":259,"name":260,"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":268,"name_tr":269,"name_en":269,"sort":171,"specializations":270},"frontend","Frontend",[271,272,275,278,281,284],{"key":259,"name":260,"field":268},{"key":273,"name":274,"field":268},"javascript","JavaScript",{"key":276,"name":277,"field":268},"typescript","TypeScript",{"key":279,"name":280,"field":268},"react","React",{"key":282,"name":283,"field":268},"vue","Vue",{"key":285,"name":286,"field":268},"angular","Angular",{"key":288,"name_tr":289,"name_en":289,"sort":242,"specializations":290},"fullstack","Fullstack",[291,292,293,294,295,296,297,298,299,300,301,302],{"key":259,"name":260,"field":288},{"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":273,"name":274,"field":268},{"key":276,"name":277,"field":268},{"key":279,"name":280,"field":268},{"key":282,"name":283,"field":268},{"key":285,"name":286,"field":268},{"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":259,"name":260,"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":259,"name":260,"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":259,"name":260,"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":259,"name":260,"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":259,"name":260,"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":259,"name":260,"field":399},{"key":406,"name_tr":407,"name_en":407,"sort":408,"specializations":409},"data-engineer","Data Engineer",10,[410],{"key":259,"name":260,"field":406},{"key":412,"name_tr":413,"name_en":414,"sort":415,"specializations":416},"game-dev","Oyun Geliştirme","Game Development",11,[417],{"key":259,"name":260,"field":412},{"key":419,"name_tr":420,"name_en":420,"sort":421,"specializations":422},"ml-engineer","ML Engineer",12,[423],{"key":259,"name":260,"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]