[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:backend\u002Fpython-memory-performance":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","","python-memory-performance","Python Memory Performance","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,123,126,129,132,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":121,"name":122,"count":11},"php-stdlib-http","Php Stdlib Http",{"key":124,"name":125,"count":11},"php-testing-tooling","Php Testing Tooling",{"key":127,"name":128,"count":11},"python-concurrency-async","Python Concurrency Async",{"key":130,"name":131,"count":11},"python-errors-context","Python Errors Context",{"key":8,"name":9,"count":11},{"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":178,"explanation":186},"019f6c9d-372d-7430-8474-be19b570443b",1,"```python\nx = [1, 2, 3]\ny = x\ndel x\n```\nBu kod çalıştıktan sonra `[1, 2, 3]` listesine ne olur?",[174,177,180,183],{"key":175,"text":176},"a","Hemen silinir, çünkü `del x` listenin kendisini kaldırır",{"key":178,"text":179},"b","Canlı kalır, çünkü `y` hâlâ ona referans verir ve refcount yalnızca 2'den 1'e düşer",{"key":181,"text":182},"c","Buna yalnızca cycle-detecting collector karar verir; refcounting'in burada rolü yoktur",{"key":184,"text":185},"d","`del x` hata fırlatır, çünkü başka bir isim aynı nesneye hâlâ referans verirken bir ismi silmek yasaktır","`del x`, `x` adının bağlanmasını kaldırır ve nesnenin reference count'unu bir azaltır. `y` hâlâ aynı listeyi gösterdiği için refcount yalnızca 2'den 1'e düşer, bu yüzden CPython nesneyi canlı tutar. Liste ancak refcount 0'a ulaştığında, yani `y` de artık ona referans vermediğinde bellekten atılır.",{"id":188,"topic":9,"difficulty":189,"body":190,"options":191,"correct_key":175,"explanation":200},"019f6c9d-372d-7adb-8c44-bc287626449c",2,"```python\nimport sys\n\na = []\nb = a\nprint(sys.getrefcount(a))\n```\nBurada yazdırılan sayı neyi temsil eder?",[192,194,196,198],{"key":175,"text":193},"Listeye olan her referans, çağrının kendi geçici referansı dahil (bu her zaman oluşturulur) — genelde 3",{"key":178,"text":195},"Yalnızca `a` ve `b`, çünkü çağrının kendisi nadiren referans sayılır — genelde 2",{"key":181,"text":197},"Aynı nesneye kaç isim alias olursa olsun her zaman 1",{"key":184,"text":199},"`TypeError` fırlatır, çünkü listeler hashlenemez","`sys.getrefcount(obj)`, çağrıldığı andaki `obj` reference count'unu raporlar; ama `obj`'yi argüman olarak geçirmenin kendisi çağrı süresince ekstra, geçici bir referans oluşturur. `a` ve `b` aynı listeye bağlıyken sayı genelde 2 değil 3 çıkar (`a`, `b` ve çağrının kendi geçici referansı).",{"id":202,"topic":9,"difficulty":189,"body":203,"options":204,"correct_key":184,"explanation":213},"019f6c9d-372e-71bc-b44e-27ca800ff2b9","```python\ndef f():\n    x = [1, 2, 3]\n    return None\n\nf()\n```\n`f()` döndükten sonra içinde oluşturulan listeye ne olur?",[205,207,209,211],{"key":175,"text":206},"Program bitene kadar bellekte kalır, çünkü Python yerel nesneleri erken serbest bırakması beklenmez",{"key":178,"text":208},"Sonraki çağrılarda yeniden kullanılmak üzere global bir önbelleğe taşınır",{"key":181,"text":210},"`gc.get_objects()` aracılığıyla sonsuza kadar erişilebilir kalır",{"key":184,"text":212},"Frame yok edildiğinde refcount 0'a düşer, CPython listeyi hemen serbest bırakır","Listeye tek referans yerel isim `x`'tir. `f()` döndüğünde stack frame'i (ve tuttuğu yerel değişkenler) yok edilir, bu yüzden `x`'in listeye referansı ortadan kalkar. Refcount 0'a ulaştığında CPython'ın reference-counting collector'ı listeyi hemen serbest bırakır — bu basit, döngüsel olmayan durumda bir garbage collection döngüsü beklemeye gerek yoktur.",{"id":215,"topic":9,"difficulty":189,"body":216,"options":217,"correct_key":181,"explanation":226},"019f6c9d-372e-7705-9d9b-2b7dbd9b2091","İki nesne, `a` ve `b`, birbirine referans veriyor (`a.other = b`, `b.other = a`) ve programdaki başka hiçbir isim ikisine de referans vermiyor. Reference counting tek başına neden bunları serbest bırakmaz?",[218,220,222,224],{"key":175,"text":219},"Reference counting yeterli zaman geçtikten sonra kendiliğinden 0'a ulaşır",{"key":178,"text":221},"Circular reference'lar yasaktır ve oluşturulur oluşturulmaz hata fırlatır",{"key":181,"text":223},"Her iki refcount da hep 0'ın üstünde kalır, bu yüzden yalnızca `gc` cycle collector geri kazanabilir",{"key":184,"text":225},"CPython bu tür circular reference'ları sızıntıyı önlemek için sessizce weak reference'a çevirir","`a` veya `b`'ye işaret eden hiçbir dış isim olmasa bile `a` hâlâ `b`'ye, `b` de hâlâ `a`'ya referans tutar; bu yüzden saf reference counting ile hiçbirinin refcount'u asla 0'a düşmez. Bu tam olarak generational cycle-detecting garbage collector'ın (`gc` modülü) var olma sebebidir: periyodik olarak yalnızca birbirlerinden erişilebilen nesne gruplarını arar ve geri kazanır.",{"id":228,"topic":9,"difficulty":189,"body":229,"options":230,"correct_key":175,"explanation":239},"019f6c9d-372f-7075-8d6a-145b30e0fc17","```python\nclass Node:\n    def __init__(self):\n        self.other = None\n\na = Node()\nb = Node()\na.other = b\nb.other = a\n\ndel a\ndel b\n```\n`del a; del b` sonrası, iki `Node` nesnesi yalnızca reference counting ile hemen serbest bırakılır mı?",[231,233,235,237],{"key":175,"text":232},"Hayır — her biri diğerinden gelen 1 refcount'u korur, collector çalışana kadar",{"key":178,"text":234},"Evet, `del` kaç referans olursa olsun genelde anında serbest bırakmayı zorlar",{"key":181,"text":236},"Evet, Python kendine referans veren attribute'ları tespit edip `del`'de sıfırlar",{"key":184,"text":238},"Hayır, ve sürecin geri kalanında hiçbir zaman serbest bırakılmazlar","`a` ve `b` isimlerini silmek yalnızca *dışarıdan* olan referansları kaldırır; ama `a.other` hâlâ `b`'yi, `b.other` hâlâ `a`'yı gösterir. Her nesnenin refcount'u yalnızca 2'den 1'e düşer, asla 0'a değil, bu yüzden düz reference counting onları geri kazanamaz. Generational `gc` collector çalışana kadar (otomatik olarak bir noktada ya da açık bir `gc.collect()` ile) çöp olarak kalırlar; collector çalıştığında izole döngüyü tanır ve ikisini de serbest bırakır.",{"id":241,"topic":9,"difficulty":242,"body":243,"options":244,"correct_key":181,"explanation":253},"019f6c9d-372f-779d-a502-c60b93e4a88f",3,"Bir toplu iş, sıcak bir döngüde collection maliyetini azaltmak için başlangıçta `gc.disable()` çağırıyor. Haftalar sonra, uzun çalıştırmalarda bellek kullanımı istikrarlı biçimde büyüyor ve bir bellek profiler'ı birbirine referans veren (parent\u002Fchild geri referansları) birçok `Node` benzeri nesnenin biriktiğini gösteriyor. En olası açıklama nedir?",[245,247,249,251],{"key":175,"text":246},"`gc.disable()` yalnızca generation 2'yi kapatır; genç nesillerdeki döngüler hâlâ otomatik toplanır",{"key":178,"text":248},"Büyüme `gc.disable()` ile ilgisizdir; bunun yerine bir C extension sızıntısı olmalıdır",{"key":181,"text":250},"`gc.disable()` cycle collector'ı tamamen kapatır; bu yüzden sonrasında oluşan döngüler basitçe sızar",{"key":184,"text":252},"`gc.disable()` yalnızca `gc` debug istatistik yazdırmasını bastırır, collection'ın kendisini değil","`gc.disable()`, otomatik generational cycle collector'ın hiç çalışmamasını sağlar. Reference counting döngüsel olmayan çöpü her zamanki gibi geri kazanmaya devam eder, ama collector kapalıyken herhangi bir nesne döngüsü (parent\u002Fchild geri referansları gibi) kendiliğinden asla serbest bırakılmaz — `gc.enable()` çağrılıp bir döngü sonunda çalışana ya da `gc.collect()` açıkça çağrılana kadar bellekte kalırlar. Döngüsel yapılara dayanan kod için `gc`'yi performans kazancı adına kapatmak, bu kazancı yavaş ama istikrarlı bir bellek sızıntısıyla takas eder.",{"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":171,"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":189,"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]