[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:game-dev\u002Fgame-performance-optimization":4,"config":127},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":40,"samples":41},"game-dev","Oyun Geliştirme","","game-performance-optimization","Game Performance Optimization","tr",75,600,[14,15,16],"junior","mid","senior",[18,21,24,27,30,31,34,37],{"key":19,"name":20,"count":11},"game-ai-pathfinding","Game Ai Pathfinding",{"key":22,"name":23,"count":11},"game-input-audio","Game Input Audio",{"key":25,"name":26,"count":11},"game-loop-fundamentals","Game Loop Fundamentals",{"key":28,"name":29,"count":11},"game-networking-multiplayer","Game Networking Multiplayer",{"key":8,"name":9,"count":11},{"key":32,"name":33,"count":11},"game-physics-collision","Game Physics Collision",{"key":35,"name":36,"count":11},"game-rendering-pipeline","Game Rendering Pipeline",{"key":38,"name":39,"count":11},"game-state-management","Game State Management",[],[42,60,74,87,100,113],{"id":43,"topic":9,"difficulty":44,"body":45,"options":46,"correct_key":54,"explanation":59},"019f6b28-1756-7414-a34d-394bfbd7f98e",1,"Oyun geliştirmede 'frame budget' (kare bütçesi) nedir?",[47,50,53,56],{"key":48,"text":49},"a","Bir oyunun çökmeden önce render edebileceği toplam kare sayısı",{"key":51,"text":52},"b","Tek bir kare için izin verilen maksimum varlık (asset) dosya boyutu",{"key":54,"text":55},"c","Hedef kare hızında bir kareyi üretmek için izin verilen maksimum süre",{"key":57,"text":58},"d","Platformun saniyede izin verdiği draw call sayısı","Frame budget, seçilen hedef kare hızında tek bir kareyi üretmek için ayrılan zaman penceresidir; bir karedeki iş bu pencereyi aşarsa kare hızı düşer ya da takılma (stutter) oluşur.",{"id":61,"topic":9,"difficulty":62,"body":63,"options":64,"correct_key":48,"explanation":73},"019f6b28-1756-7d3b-afd8-4efffea6394a",2,"Bir karenin CPU-bound mu yoksa GPU-bound mu olduğunu en iyi hangi ifade ayırt eder?",[65,67,69,71],{"key":48,"text":66},"CPU-bound, CPU işinin GPU'dan daha geç bitmesidir; GPU-bound bunun tersidir",{"key":51,"text":68},"CPU-bound kareler yalnızca mobilde, GPU-bound kareler yalnızca PC'de oluşur",{"key":54,"text":70},"CPU-bound, oyunun GPU-bound karelere göre daha fazla disk alanı kullanması demektir",{"key":57,"text":72},"GPU-bound kareler, iş yüküne bakılmaksızın her zaman CPU-bound karelerden daha hızlı çalışır","Bir kare, darboğaz CPU tarafındaki oyun mantığı\u002Fsimülasyon\u002Fgönderim işinin GPU'nun tüketebileceğinden daha geç bitmesiyse CPU-bound'dur; darboğaz grafik donanımıysa GPU-bound'dur.",{"id":75,"topic":9,"difficulty":62,"body":76,"options":77,"correct_key":57,"explanation":86},"019f6b28-1757-7592-99b5-f1841497c3d1","Bir oyun, oyuncu ateş ettiğinde yoğun çatışmada saniyede onlarca kez yeni bir mermi nesnesi oluşturup yok ediyor. Bu anlarda kare süreleri sıçrama yapıyor. En uygun genel çözüm nedir?",[78,80,82,84],{"key":48,"text":79},"Aynı anda daha az mermi olması için oyuncunun ateş hızını düşürmek",{"key":51,"text":81},"Başka hiçbir değişiklik yapmadan tüm mermi oluşturmayı arka plan thread'ine taşımak",{"key":54,"text":83},"Sıçramaların daha az fark edilmesi için hedef kare hızını artırmak",{"key":57,"text":85},"Mermileri oluşturup yok etmek yerine sabit bir havuzu yeniden kullanmak","Bu klasik object pooling durumudur: kısa ömürlü nesnelerin sık sık oluşturulup yok edilmesinin gerçek bir maliyeti vardır (ayırma, başlatma, temizleme). Önceden ayrılmış bir havuzu yeniden kullanmak bu tekrarlayan maliyeti sık çalışan yoldan kaldırır.",{"id":88,"topic":9,"difficulty":44,"body":89,"options":90,"correct_key":51,"explanation":99},"019f6b28-1757-7e12-a817-c4ca9f73ac43","Kare hızı endişeleri bağlamında 'garbage collection' (çöp toplama) kavramsal olarak nedir?",[91,93,95,97],{"key":48,"text":92},"Geliştiricinin gönderim öncesi kullanılmayan varlıkları diskten manuel olarak sildiği bir süreç",{"key":51,"text":94},"Kullanılmayan belleği geri kazanan ve yürütmeyi duraklatabilen otomatik bir süreç",{"key":54,"text":96},"Kamera görüş alanı dışındaki nesneleri kaldıran bir render tekniği",{"key":57,"text":98},"Kullanılmayan oyuncu bağlantılarını temizleyen bir ağ protokolü adımı","Garbage collection, artık erişilemeyen belleği otomatik olarak tespit edip serbest bırakır. Öngörülemeyen zamanlarda çalıştığı ve ana thread ile kısaca rekabet edip duraklatabildiği için, oyun yoğun bellek ayırıyorsa kare süresi sıçramalarının yaygın bir nedenidir.",{"id":101,"topic":9,"difficulty":62,"body":102,"options":103,"correct_key":54,"explanation":112},"019f6b28-1758-75b6-aed1-e819290c062b","Bir oyun saniyede 60 kare (60 fps) hedefliyor. Her karenin sığması gereken süre yaklaşık kaç milisaniyedir?",[104,106,108,110],{"key":48,"text":105},"33.3 ms",{"key":51,"text":107},"8.3 ms",{"key":54,"text":109},"16.7 ms",{"key":57,"text":111},"20 ms","1000ms \u002F 60 ≈ 16.7ms\u002Fkare. Bu bütçenin tutarlı biçimde aşılması kare hızının 60'ın altına düşmesine neden olur.",{"id":114,"topic":9,"difficulty":115,"body":116,"options":117,"correct_key":57,"explanation":126},"019f6b28-1758-7dec-bf82-92342b82e25b",3,"Bir mobil oyun, bir seviyenin tüm dokularını tam çözünürlükte tek seferde belleğe yüklüyor. Düşük seviyeli cihazlarda işletim sistemi uygulamayı sonlandırmaya başlıyor ya da dokular gözle görülür şekilde bozuluyor. En olası temel sorun nedir?",[118,120,122,124],{"key":48,"text":119},"60fps için frame budget yanlış hesaplanmış",{"key":51,"text":121},"CPU, fizik broad-phase kontrollerinde fazla zaman harcıyor",{"key":54,"text":123},"Garbage collector çok sık çalışıyor",{"key":57,"text":125},"Oyunun bellek kullanımı cihazın kullanılabilir bellek bütçesini aşıyor","Mobil ve konsol platformlarında sabit ve kesin bir bellek tavanı vardır. Cihaz kapasitesine bakılmaksızın her şeyi tam çözünürlükte yüklemek bu bütçeyi aşabilir ve işletim sistemi düzeyinde sonlandırmaya ya da acil varlık düşürmelere yol açabilir — bu klasik bir bellek bütçeleme hatasıdır.",{"fields":128,"seniorities":311,"interview_shapes":312,"locales":317,"oauth":319,"question_count":322,"coach_enabled":323,"jd_match_enabled":323},[129,154,174,190,214,227,246,265,287,294,300,305],{"key":130,"name_tr":131,"name_en":131,"sort":44,"specializations":132},"backend","Backend",[133,136,139,142,145,148,151],{"key":134,"name":135,"field":130},"general","Genel",{"key":137,"name":138,"field":130},"go","Go",{"key":140,"name":141,"field":130},"python","Python",{"key":143,"name":144,"field":130},"java","Java",{"key":146,"name":147,"field":130},"csharp","C#\u002F.NET",{"key":149,"name":150,"field":130},"nodejs","Node.js",{"key":152,"name":153,"field":130},"php","PHP",{"key":155,"name_tr":156,"name_en":156,"sort":62,"specializations":157},"frontend","Frontend",[158,159,162,165,168,171],{"key":134,"name":135,"field":155},{"key":160,"name":161,"field":155},"javascript","JavaScript",{"key":163,"name":164,"field":155},"typescript","TypeScript",{"key":166,"name":167,"field":155},"react","React",{"key":169,"name":170,"field":155},"vue","Vue",{"key":172,"name":173,"field":155},"angular","Angular",{"key":175,"name_tr":176,"name_en":176,"sort":115,"specializations":177},"fullstack","Fullstack",[178,179,180,181,182,183,184,185,186,187,188,189],{"key":134,"name":135,"field":175},{"key":137,"name":138,"field":130},{"key":140,"name":141,"field":130},{"key":143,"name":144,"field":130},{"key":146,"name":147,"field":130},{"key":149,"name":150,"field":130},{"key":152,"name":153,"field":130},{"key":160,"name":161,"field":155},{"key":163,"name":164,"field":155},{"key":166,"name":167,"field":155},{"key":169,"name":170,"field":155},{"key":172,"name":173,"field":155},{"key":191,"name_tr":192,"name_en":192,"sort":193,"specializations":194},"devops-cloud","DevOps \u002F Cloud",4,[195,196,199,202,205,208,211],{"key":134,"name":135,"field":191},{"key":197,"name":198,"field":191},"aws","AWS",{"key":200,"name":201,"field":191},"gcp","GCP",{"key":203,"name":204,"field":191},"azure","Azure",{"key":206,"name":207,"field":191},"kubernetes","Kubernetes",{"key":209,"name":210,"field":191},"terraform","Terraform",{"key":212,"name":213,"field":191},"linux","Linux",{"key":215,"name_tr":216,"name_en":216,"sort":217,"specializations":218},"ai-engineer","AI Engineer",5,[219,220,221,224],{"key":134,"name":135,"field":215},{"key":140,"name":141,"field":215},{"key":222,"name":223,"field":215},"llm-rag","LLM\u002FRAG",{"key":225,"name":226,"field":215},"mlops","MLOps",{"key":228,"name_tr":229,"name_en":230,"sort":231,"specializations":232},"database","Veritabanı","Database",6,[233,234,237,240,243],{"key":134,"name":135,"field":228},{"key":235,"name":236,"field":228},"postgresql","PostgreSQL",{"key":238,"name":239,"field":228},"mysql","MySQL",{"key":241,"name":242,"field":228},"mongodb","MongoDB",{"key":244,"name":245,"field":228},"redis","Redis",{"key":247,"name_tr":248,"name_en":249,"sort":250,"specializations":251},"mobile","Mobil","Mobile",7,[252,253,256,259,262],{"key":134,"name":135,"field":247},{"key":254,"name":255,"field":247},"ios-swift","iOS (Swift)",{"key":257,"name":258,"field":247},"android-kotlin","Android (Kotlin)",{"key":260,"name":261,"field":247},"flutter","Flutter",{"key":263,"name":264,"field":247},"react-native","React Native",{"key":266,"name_tr":267,"name_en":268,"sort":269,"specializations":270},"security","Güvenlik","Security",8,[271,272,275,278,281,284],{"key":134,"name":135,"field":266},{"key":273,"name":274,"field":266},"appsec","AppSec",{"key":276,"name":277,"field":266},"offensive-pentest","Offensive \u002F Pentest",{"key":279,"name":280,"field":266},"cloud-security","Cloud Security",{"key":282,"name":283,"field":266},"devsecops","DevSecOps",{"key":285,"name":286,"field":266},"blue-team-incident","Blue Team \u002F Incident",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[293],{"key":134,"name":135,"field":288},{"key":295,"name_tr":296,"name_en":296,"sort":297,"specializations":298},"data-engineer","Data Engineer",10,[299],{"key":134,"name":135,"field":295},{"key":5,"name_tr":6,"name_en":301,"sort":302,"specializations":303},"Game Development",11,[304],{"key":134,"name":135,"field":5},{"key":306,"name_tr":307,"name_en":307,"sort":308,"specializations":309},"ml-engineer","ML Engineer",12,[310],{"key":134,"name":135,"field":306},[14,15,16],{"junior":313,"mid":315,"senior":316},{"questions":314,"median_sec":3},20,{"questions":314,"median_sec":3},{"questions":314,"median_sec":3},[10,318],"en",[320,321],"google","github",21750,true]