[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fnodejs-event-loop-async":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","","nodejs-event-loop-async","Nodejs Event Loop Async","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,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":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":8,"name":9,"count":11},{"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,201,214,227,240],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":175,"explanation":186},"019f71b0-db3f-73b5-a315-fb983e358ffc",1,"```javascript\nconsole.log(\"A\");\nconsole.log(\"B\");\nconsole.log(\"C\");\n```\nBu ne yazdırır ve sıradan neden emin olabiliriz?",[174,177,180,183],{"key":175,"text":176},"a","\"A\", \"B\", \"C\"",{"key":178,"text":179},"b","Sıra garanti değildir, çünkü her console.log ayrı bir task olarak zamanlanır",{"key":181,"text":182},"c","\"C\", \"B\", \"A\" — Node, hoisting nedeniyle ifadeleri ters sırada değerlendirir",{"key":184,"text":185},"d","Script başladığında hangi event loop fazının aktif olduğuna bağlıdır","Burada hiçbir asenkron işlem yok. Node, senkron ifadeleri kaynak koddaki sırayla, tek bir JavaScript thread'inde birer birer çalıştırır. `console.log(\"B\")` veya `console.log(\"C\")`'yi erteleyen hiçbir şey yok, bu yüzden çıktı her zaman \"A\", \"B\", \"C\" olur.",{"id":188,"topic":9,"difficulty":189,"body":190,"options":191,"correct_key":181,"explanation":200},"019f71b0-db41-72f1-aef8-253706d35286",2,"Node.js event loop'unun görevi nedir?",[192,194,196,198],{"key":175,"text":193},"Çalışmaya başlamadan önce JavaScript kaynak kodunu makine koduna derlemek",{"key":178,"text":195},"Her biri aynı anda bir callback çalıştıran bir OS thread havuzunu yönetmek",{"key":181,"text":197},"Call stack'in boş olup olmadığını kontrol etmek ve boşsa sıradaki callback'i stack'e almak",{"key":184,"text":199},"V8 heap üzerindeki nesneler için bellek ayırmak ve serbest bırakmak","Event loop, tek thread'li JavaScript'in asenkron işleri yönetebilmesini sağlayan mekanizmadır: call stack'in boş olup olmadığını sürekli kontrol eder, boşsa (timer, I\u002FO tamamlanması, microtask kuyruğu vb. kaynaklı) hazır bir sonraki callback'i stack'e alıp çalıştırır. Derleme ya da bellek yönetimiyle doğrudan ilgisi yoktur.",{"id":202,"topic":9,"difficulty":171,"body":203,"options":204,"correct_key":178,"explanation":213},"019f71b0-db43-7301-b17b-71b8dde3b1d3","```javascript\nconsole.log(\"start\");\nsetTimeout(() => {\n  console.log(\"timeout\");\n}, 0);\nconsole.log(\"end\");\n```\nBu ne yazdırır?",[205,207,209,211],{"key":175,"text":206},"\"start\", \"timeout\", \"end\"",{"key":178,"text":208},"\"start\", \"end\", \"timeout\"",{"key":181,"text":210},"\"timeout\", \"start\", \"end\"",{"key":184,"text":212},"setTimeout 0'dan büyük pozitif bir gecikme gerektirdiği için hata fırlatır","`setTimeout(fn, 0)`, `fn`'yi hemen çalıştırmaz — mevcut senkron kod bittikten sonra, event loop'un daha sonraki bir fazında çalışmasını planlar. Bu yüzden önce \"start\" ve \"end\" (senkron olarak) yazdırılır, \"timeout\" ise event loop timers fazına ulaştığında yazdırılır.",{"id":215,"topic":9,"difficulty":171,"body":216,"options":217,"correct_key":184,"explanation":226},"019f71b0-db43-7d20-bbe2-8c59c31a56d7","Node.js, varsayılan olarak JavaScript kodunuzu kaç thread üzerinde çalıştırır?",[218,220,222,224],{"key":175,"text":219},"Açık her socket bağlantısı için bir thread",{"key":178,"text":221},"setTimeout çağrı sayısına göre büyüyen 4'lü bir thread havuzu",{"key":181,"text":223},"Her asenkron callback için ayrı bir thread",{"key":184,"text":225},"Tek bir thread, ancak libuv bazı işletim sistemi seviyesindeki işlemler için arka planda ek thread'ler kullanabilir","JavaScript kodunuz her zaman tek bir ana thread üzerinde çalışır. Uzun süren senkron bir hesaplamanın her şeyi bloklamasının nedeni budur. Node (libuv aracılığıyla) bazı işler için içeride ek thread'ler kullanır, ama JS callback'lerinizin kendisi o tek thread üzerinde birer birer çalışır.",{"id":228,"topic":9,"difficulty":189,"body":229,"options":230,"correct_key":181,"explanation":239},"019f71b0-db44-7a3a-a66f-a77fdd44d0a4","```javascript\nsetTimeout(() => console.log(\"first\"), 100);\nsetTimeout(() => console.log(\"second\"), 10);\n```\nBu ne yazdırır ve hangi sırayla?",[231,233,235,237],{"key":175,"text":232},"Kaydedilme sırasıyla önce \"first\" sonra \"second\"",{"key":178,"text":234},"Hata fırlatır, çünkü iki setTimeout çağrısı aynı fazı paylaşamaz",{"key":181,"text":236},"Önce \"second\" sonra \"first\"",{"key":184,"text":238},"Her iki callback de tam olarak aynı anda çalışır, bu yüzden sıra rastgeledir","Her timer, gecikme süresi dolduğunda çalışmaya hazır hale gelir. 10ms'lik timer'ın süresi 100ms'likten önce dolar, bu yüzden kaynak kodda hangi setTimeout çağrısının önce yazıldığından bağımsız olarak onun callback'i önce çalışır.",{"id":241,"topic":9,"difficulty":171,"body":242,"options":243,"correct_key":175,"explanation":252},"019f71b0-db45-72a1-9177-6f4079bd7a3e","```javascript\nconsole.log(\"1\");\nPromise.resolve().then(() => console.log(\"2\"));\nconsole.log(\"3\");\n```\nBu ne yazdırır?",[244,246,248,250],{"key":175,"text":245},"\"1\", \"3\", \"2\"",{"key":178,"text":247},"\"1\", \"2\", \"3\"",{"key":181,"text":249},"\"2\", \"1\", \"3\"",{"key":184,"text":251},"Promise.resolve() bir argümanla çağrılmak zorunda olduğu için hata fırlatır","`Promise.resolve()` zaten çözülmüş bir promise oluşturur, ama `.then` callback'i yine de doğrudan değil, bir microtask olarak zamanlanır. Microtask'lar ancak mevcut senkron blok bittikten sonra çalışır, bu yüzden önce \"1\" ve \"3\" yazdırılır, sonra \"2\".",{"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":189,"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]