[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:backend\u002Fpython-concurrency-async":4,"config":252},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","","python-concurrency-async","Python Concurrency Async","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,123,126,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":121,"name":122,"count":11},"php-stdlib-http","Php Stdlib Http",{"key":124,"name":125,"count":11},"php-testing-tooling","Php Testing Tooling",{"key":8,"name":9,"count":11},{"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,239],{"id":170,"topic":9,"difficulty":171,"body":172,"options":173,"correct_key":181,"explanation":186},"019f6c9d-36f4-72f1-9f9b-b7f8f5fe1977",1,"```python\nimport threading\n\ndef greet(name):\n    print(f\"hello {name}\")\n\nt = threading.Thread(target=greet, args=(\"ada\",))\nt.start()\nt.join()\nprint(\"done\")\n```\nWhat does this print?",[174,177,180,183],{"key":175,"text":176},"a","It raises TypeError because args must be a dict, not a tuple",{"key":178,"text":179},"b","\"done\" then \"hello ada\", since the main thread doesn't wait for t by default",{"key":181,"text":182},"c","\"hello ada\" then \"done\" — join() blocks until t finishes",{"key":184,"text":185},"d","It prints nothing because target= expects a bound function call, not a reference","`threading.Thread(target=greet, args=(\"ada\",))` schedules `greet(\"ada\")` to run in a new thread once `start()` is called. `join()` blocks the calling thread until `t` finishes, so \"hello ada\" is guaranteed to print before \"done\". `args` takes a tuple\u002Fiterable of positional arguments, not a dict.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":175,"explanation":199},"019f6c9d-36fd-7d57-b60c-f1423a3ad321","```python\nimport asyncio\n\nasync def compute():\n    print(\"computing\")\n    return 42\n\nresult = compute()\nprint(result)\n```\nWhat happens?",[191,193,195,197],{"key":175,"text":192},"It prints something like `\u003Ccoroutine object compute at 0x...>`; \"computing\" is never printed",{"key":178,"text":194},"It raises TypeError because compute() must be called with await",{"key":181,"text":196},"It prints \"computing\" immediately, then 42 right after",{"key":184,"text":198},"It prints 42 immediately, since compute() runs synchronously","Calling an `async def` function does not execute its body — it creates and returns a coroutine object. The body only starts running when the coroutine is awaited (e.g. inside `asyncio.run(compute())` or `await compute()`). Since `result` is never awaited here, \"computing\" never prints, and Python may also warn \"coroutine was never awaited\".",{"id":201,"topic":9,"difficulty":171,"body":202,"options":203,"correct_key":184,"explanation":212},"019f6c9d-36fe-7a15-a4eb-492664da476e","```python\nimport asyncio\n\nasync def main():\n    print(\"start\")\n    await asyncio.sleep(0.1)\n    print(\"end\")\n\nasyncio.run(main())\n```\nWhat does running this script print?",[204,206,208,210],{"key":175,"text":205},"\"end\" then \"start\"",{"key":178,"text":207},"It raises RuntimeError because main() has no return value",{"key":181,"text":209},"Only \"start\"; asyncio.run does not wait for the coroutine to finish",{"key":184,"text":211},"\"start\" then \"end\", with a short pause in between","`asyncio.run(main())` creates a new event loop, runs the `main()` coroutine to completion, and closes the loop. Execution proceeds top to bottom: \"start\" prints, then `await asyncio.sleep(0.1)` suspends `main` for roughly 100ms without blocking anything else, then \"end\" prints.",{"id":214,"topic":9,"difficulty":171,"body":215,"options":216,"correct_key":178,"explanation":225},"019f6c9d-36ff-7727-8441-591e1364fe8a","```python\nimport threading\n\ndef worker():\n    print(\"working\")\n\nt = threading.Thread(target=worker)\nt.start()\nt.join()\nprint(\"main continues\")\n```\nWhat is guaranteed about the order of the two prints?",[217,219,221,223],{"key":175,"text":218},"\"main continues\" always prints first because the main thread has priority",{"key":178,"text":220},"\"working\" is guaranteed to print before \"main continues\"",{"key":181,"text":222},"The order is undefined even with join(), since threads are scheduled randomly",{"key":184,"text":224},"Nothing prints because join() must be called before start()","`t.join()` blocks the calling (main) thread until `t` has fully finished running. Since \"main continues\" is only printed after `join()` returns, and `join()` cannot return until `worker()` has completed (and thus printed \"working\"), the ordering is guaranteed.",{"id":227,"topic":9,"difficulty":171,"body":228,"options":229,"correct_key":175,"explanation":238},"019f6c9d-3700-7386-b7eb-f5fca900de02","In CPython, what is the Global Interpreter Lock (GIL)?",[230,232,234,236],{"key":175,"text":231},"A mutex allowing only one thread to execute Python bytecode at a time",{"key":178,"text":233},"A lock that prevents more than one process from running Python at the same time on a single machine",{"key":181,"text":235},"A lock automatically acquired by every `with` statement to make code thread-safe",{"key":184,"text":237},"A configuration flag that disables multithreading entirely in the `threading` module","The GIL is a mutex internal to the CPython interpreter that ensures only one thread executes Python bytecode at any given moment, even on multi-core machines. It exists to simplify memory management (reference counting) but limits true parallel execution of pure-Python code across threads within one process.",{"id":240,"topic":9,"difficulty":171,"body":241,"options":242,"correct_key":181,"explanation":251},"019f6c9d-3701-704c-86fc-02fa37b3c49c","How does asyncio achieve concurrency for multiple coroutines?",[243,245,247,249],{"key":175,"text":244},"By assigning each coroutine to its own OS thread automatically",{"key":178,"text":246},"By spawning a separate process for every `async def` function",{"key":181,"text":248},"By running them cooperatively on a single thread, switching between coroutines at `await` points",{"key":184,"text":250},"By using the GIL to run coroutines truly in parallel on multiple cores","asyncio runs an event loop on a single thread. Coroutines cooperate by voluntarily yielding control at `await` points; the event loop then picks another ready coroutine to run. No preemption and no extra OS threads or processes are involved by default — concurrency here means interleaving, not parallel execution.",{"fields":253,"seniorities":424,"interview_shapes":425,"locales":430,"oauth":432,"question_count":435,"coach_enabled":436,"jd_match_enabled":436},[254,265,286,303,327,340,359,378,398,405,411,418],{"key":5,"name_tr":6,"name_en":6,"sort":171,"specializations":255},[256,259,260,261,262,263,264],{"key":257,"name":258,"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":266,"name_tr":267,"name_en":267,"sort":268,"specializations":269},"frontend","Frontend",2,[270,271,274,277,280,283],{"key":257,"name":258,"field":266},{"key":272,"name":273,"field":266},"javascript","JavaScript",{"key":275,"name":276,"field":266},"typescript","TypeScript",{"key":278,"name":279,"field":266},"react","React",{"key":281,"name":282,"field":266},"vue","Vue",{"key":284,"name":285,"field":266},"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":257,"name":258,"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":266},{"key":275,"name":276,"field":266},{"key":278,"name":279,"field":266},{"key":281,"name":282,"field":266},{"key":284,"name":285,"field":266},{"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":257,"name":258,"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":257,"name":258,"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":257,"name":258,"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":257,"name":258,"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":257,"name":258,"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":257,"name":258,"field":399},{"key":406,"name_tr":407,"name_en":407,"sort":408,"specializations":409},"data-engineer","Data Engineer",10,[410],{"key":257,"name":258,"field":406},{"key":412,"name_tr":413,"name_en":414,"sort":415,"specializations":416},"game-dev","Oyun Geliştirme","Game Development",11,[417],{"key":257,"name":258,"field":412},{"key":419,"name_tr":420,"name_en":420,"sort":421,"specializations":422},"ml-engineer","ML Engineer",12,[423],{"key":257,"name":258,"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]