[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr: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","tr",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 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":46,"name":47,"count":11},"databases-sql","Veritabanı \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","Mesajlaşma \u002F Kuyruklar",{"key":88,"name":89,"count":11},"networking-http","Ağ \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","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,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```\nNe yazdırılır?",[174,177,180,183],{"key":175,"text":176},"a","Array ( [0] => 4 [1] => 6 ) — array_map anahtarları her zaman 0'dan yeniden numaralandırır",{"key":178,"text":179},"b","Array ( [apple] => 2 [pear] => 3 ) — array_map arrow function alamadığı için closure yok sayılır",{"key":181,"text":182},"c","Array ( [apple] => 4 [pear] => 6 ) — orijinal anahtarlar korunur, her değer ikiye katlanır",{"key":184,"text":185},"d","Fatal error verir, çünkü array_map tek bir girdi dizisiyle birlikte kullanılamaz","array_map(), tam olarak bir girdi dizisi verildiğinde orijinal dizinin anahtarlarını korur — sonucu sayısal olarak yeniden indekslemesi yalnızca birden fazla dizi verildiğinde olur. Burada her değer ikiye katlanır (2*2=4, 3*2=6) ve 'apple'\u002F'pear' string anahtarları yeni değerlere bağlı kalır.",{"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```\nNe yazdırılır?",[191,193,195,197],{"key":175,"text":192},"Array ( [0] => 2 [1] => 20 )",{"key":178,"text":194},"22 — callback null olduğunda array_map(null, ...) karşılık gelen elemanları toplar",{"key":181,"text":196},"2 — yalnızca ilk dizinin o pozisyondaki elemanı tutulur",{"key":184,"text":198},"Array ( [0] => 1 [1] => 10 [2] => 2 [3] => 20 ) — tüm elemanlar tek bir dizide düzleştirilir","Birden fazla dizi ile callback olarak null vermek, array_map()'in onları eşleştirmesini (zip) sağlar: her çıktı elemanı, o indeksteki her girdi dizisinin karşılık gelen elemanını içeren bir dizidir. $result[1], $a[1]=2 ile $b[1]=20'yi eşleştirir, [2, 20] verir. Sonuç, girdi dizilerinin orijinal anahtarlarına bakılmaksızın sayısal olarak yeniden indekslenir.",{"id":201,"topic":9,"difficulty":171,"body":202,"options":203,"correct_key":184,"explanation":212},"019f7281-52b4-7123-a4e0-957f8a61c33a","Bir junior geliştirici, veritabanına kaydetmeden önce \"boşa yakın\" değerleri elemek için karışık bir diziyi filtreliyor:\n```php\n$values = [0 => 'x', 1 => 0, 2 => '', 3 => 'y', 4 => null, 5 => '0'];\n$filtered = array_filter($values);\nprint_r($filtered);\n```\nNe yazdırılır?",[204,206,208,210],{"key":175,"text":205},"Array ( [0] => 'x' [1] => 0 [2] => '' [3] => 'y' [4] => null [5] => '0' ) — callback'siz array_filter() diziyi değiştirmeden döndürür",{"key":178,"text":207},"Array ( [0] => 'x' [1] => 'y' ) — ayakta kalan değerler 0'dan yeniden numaralandırılır",{"key":181,"text":209},"Array ( ) — açık bir callback verilmediğinde array_filter() her zaman boş dizi döndürür",{"key":184,"text":211},"Array ( [0] => x [3] => y ) — falsy değerler (0, '', null, '0') elenir ve ayakta kalanların orijinal anahtarları korunur","Callback verilmediğinde array_filter(), her değere boolean cast uygular: 0, '', null ve özel '0' string'i PHP'de falsy'dir ve elenir; 'x' ve 'y' ise truthy olduğu için kalır. Önemli olan, array_filter()'ın anahtarları asla yeniden numaralandırmamasıdır — ayakta kalan elemanlar orijinal dizi anahtarlarını (burada 0 ve 3) korur, bu yüzden temiz 0-tabanlı bir liste gerekiyorsa genellikle ardından bir foreach ya da array_values() çağrısı gerekir.",{"id":214,"topic":9,"difficulty":171,"body":215,"options":216,"correct_key":178,"explanation":225},"019f7281-52b5-7ca0-8342-b89c98835669","Bir dizide değeri açıkça null olarak ayarlanmış bir anahtar var: `$data = ['name' => 'Ada', 'age' => null];`. Bu durumda `isset($data['age'])` ile `array_key_exists('age', $data)` arasındaki temel fark nedir?",[217,219,221,223],{"key":175,"text":218},"Hiçbir fark yok — anahtar mevcut olduğu sürece ikisi de, değeri null olsa bile true döndürür",{"key":178,"text":220},"isset() false döndürür çünkü değerin null olmamasını da şart koşar, array_key_exists() ise true döndürür çünkü yalnızca anahtarın dizide var olup olmadığını kontrol eder",{"key":181,"text":222},"array_key_exists() null bir değer için false döndürür, isset() ise true döndürür, çünkü isset() yalnızca anahtar varlığını kontrol eder ve değeri tamamen yok sayar",{"key":184,"text":224},"İkisi de false döndürür, çünkü PHP değeri null olan bir anahtarı sanki dizide hiç ayarlanmamış gibi ele alır","isset(), aynı anda iki şeyi kontrol eder: anahtarın var olması VE değerinin null olmaması — bu yüzden açıkça null tutan bir anahtar için isset() false döndürür. array_key_exists() ise yalnızca anahtarın dizide var olup olmadığını kontrol eder, orada hangi değer (null dahil) saklandığından bağımsız olarak, bu yüzden true döndürür. Bu ayrım, bir config ya da opsiyonel bir alan meşru şekilde null tutabildiğinde ve kod \"eksik\" ile \"var ama null\" durumlarını ayırt etmesi gerektiğinde önem kazanır.",{"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```\nNe yazdırılır?",[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(), diziyi soldan sağa gezer, callback'i çalışan $carry (başlangıç değeri 0 ile başlar) ve her eleman $n ile çağırır, her seferinde $carry'yi callback'in dönüş değeriyle değiştirir: 0+1=1, 1+2=3, 3+3=6, 6+4=10. Son carry olan 10 döndürülür.",{"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```\nNe yazdırılır?",[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},"array_reduce()'un açık bir initial value gerektirdiği için fatal error fırlatır","array_reduce()'un üçüncü parametresi (başlangıç carry'si), belirtilmediğinde varsayılan olarak null'dur. Girdi dizisi boş olduğu için callback hiç çağrılmaz ve fonksiyon başlangıç değerini değiştirmeden döndürür — burada 0 değil null. Biri, belirtilmemiş bir initial value'nun sayısal bir toplam için 0 gibi davrandığını varsaydığında bu yaygın bir bug kaynağıdır.",{"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":144,"name_en":379,"sort":380,"specializations":381},"Security",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},[10,431],"en",[433,434],"google","github",21750,true]