[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:backend\u002Fconcurrency":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","","concurrency","Concurrency","en",75,3300,[14,15,16],"junior","mid","senior",[18,21,24,25,28,31,34,37,40,43,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":8,"name":9,"count":11},{"key":26,"name":27,"count":11},"csharp-concurrency-async","Csharp Concurrency Async",{"key":29,"name":30,"count":11},"csharp-exceptions","Csharp Exceptions",{"key":32,"name":33,"count":11},"csharp-generics-interfaces","Csharp Generics Interfaces",{"key":35,"name":36,"count":11},"csharp-memory-performance","Csharp Memory Performance",{"key":38,"name":39,"count":11},"csharp-stdlib-http","Csharp Stdlib Http",{"key":41,"name":42,"count":11},"csharp-testing-tooling","Csharp Testing Tooling",{"key":44,"name":45,"count":11},"databases-sql","Databases \u002F SQL",{"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":175,"explanation":186},"019f56bb-b356-78e3-be73-1f391c974776",1,"What is the key memory difference between a process and a thread?",[174,177,180,183],{"key":175,"text":176},"a","Threads in the same process share its memory; separate processes normally have their own address spaces",{"key":178,"text":179},"b","Processes share memory by default, while each thread gets an isolated address space",{"key":181,"text":182},"c","Both threads and processes always get fully isolated memory",{"key":184,"text":185},"d","Threads share memory only when they happen to run on the same CPU core","A process owns an address space; its threads live inside it and share that memory. That sharing is what makes threads cheap to communicate with — and what makes shared-state bugs possible. Sharing is not tied to CPU cores (d): threads share memory no matter where they are scheduled.",{"id":188,"topic":9,"difficulty":171,"body":189,"options":190,"correct_key":178,"explanation":199},"019f56bb-b357-765f-9527-d537847911bd","What is the difference between concurrency and parallelism?",[191,193,195,197],{"key":175,"text":192},"They mean exactly the same thing — the two words are interchangeable names for one concept",{"key":178,"text":194},"Concurrency is managing multiple overlapping tasks; parallelism is executing more than one at the same physical instant",{"key":181,"text":196},"Parallelism can happen even on a single core, while concurrency always requires multiple cores",{"key":184,"text":198},"Concurrency applies only to I\u002FO-bound work and parallelism only to CPU-bound work","Concurrency is about structure — juggling tasks whose lifetimes overlap, even on one core. Parallelism is about execution — tasks literally running at the same instant, which requires multiple cores. A single-core machine can be concurrent but never truly parallel, which is why (c) is exactly inverted.",{"id":201,"topic":9,"difficulty":202,"body":203,"options":204,"correct_key":181,"explanation":213},"019f56bb-b358-7050-92b6-0e01528d751b",2,"A server keeps a shared counter in memory.\n```\ncounter = 0\n\nfunction handle_request():\n    counter = counter + 1\n```\nTwo threads each call `handle_request()` 1000 times. What is the final value of `counter`?",[205,207,209,211],{"key":175,"text":206},"Always exactly 2000 — the increment is a single line, so it cannot be interrupted",{"key":178,"text":208},"Always exactly 1000 — the second thread's writes overwrite the first thread's writes",{"key":181,"text":210},"At most 2000, but possibly less — concurrent increments can be lost to a race condition",{"key":184,"text":212},"The program crashes, because two threads may not write the same variable","`counter = counter + 1` is a read-modify-write sequence. When two threads interleave between the read and the write, one increment overwrites the other and is lost, so the result can fall below 2000. Being a single line of source (a) means nothing — it compiles to multiple steps — and concurrent writes do not crash a program by themselves (d).",{"id":215,"topic":9,"difficulty":171,"body":216,"options":217,"correct_key":178,"explanation":226},"019f56bb-b359-7030-a5b9-738e9337de84","In concurrent programming, what is a critical section?",[218,220,222,224],{"key":175,"text":219},"The most performance-critical hot path of the program, which should be optimized before anything else",{"key":178,"text":221},"Code that accesses a shared resource and must run in only one thread at a time",{"key":181,"text":223},"The code that runs during application startup, before any threads exist",{"key":184,"text":225},"A block whose uncaught exceptions bring down the whole process","A critical section is the region that touches shared state, so its execution must be made mutually exclusive (typically with a mutex). The name says nothing about performance (a) — that confusion comes from reading 'critical' as 'performance-critical'.",{"id":228,"topic":9,"difficulty":202,"body":229,"options":230,"correct_key":175,"explanation":239},"019f56bb-b359-7ef7-b082-438e1015b3f5","What does holding a mutex actually guarantee?",[231,233,235,237],{"key":175,"text":232},"At most one thread holds it at a time, so the code between lock and unlock never runs concurrently",{"key":178,"text":234},"The code it protects is pinned to a single CPU core, making it faster",{"key":181,"text":236},"The OS scheduler will not preempt the thread while it holds the lock",{"key":184,"text":238},"Conflicting writes are detected and rolled back automatically","A mutex provides mutual exclusion and nothing more: one holder at a time. It does not stop preemption (c) — the holder can be paused mid-section; other threads simply cannot enter until it releases. Rollback semantics (d) belong to transactions, not locks.",{"id":241,"topic":9,"difficulty":202,"body":242,"options":243,"correct_key":184,"explanation":252},"019f56bb-b35a-7771-8814-2ae49ceba240","```\nthread 1:        thread 2:\nlock(A)          lock(B)\nlock(B)          lock(A)\n# ... work ...   # ... work ...\nunlock(B)        unlock(A)\nunlock(A)        unlock(B)\n```\nWhat can happen when these two threads run at the same time?",[244,246,248,250],{"key":175,"text":245},"They always complete, because lock requests are granted in first-come-first-served order",{"key":178,"text":247},"A runtime error is raised: the same mutex cannot be requested from two different threads",{"key":181,"text":249},"Livelock: both threads endlessly acquire and release the locks without doing work",{"key":184,"text":251},"Deadlock is possible: each thread may hold one lock while waiting forever for the other","If thread 1 acquires A and thread 2 acquires B before either takes its second lock, each waits on a lock the other holds — forever. FIFO granting (a) is not a general guarantee and would not help, since the threads wait on different locks. Livelock (c) involves active retrying, which plain blocking locks do not do.",{"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]