[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:game-dev\u002Fmultiplayer-netcode":4,"config":232},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":133,"samples":147},"game-dev","Oyun Geliştirme","","multiplayer-netcode","Multiplayer \u002F Netcode","tr",450,2850,[14,15,16],"junior","mid","senior",[18,22,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],{"key":19,"name":20,"count":21},"game-ai-pathfinding","Game Ai Pathfinding",75,{"key":23,"name":24,"count":21},"game-input-audio","Game Input Audio",{"key":26,"name":27,"count":21},"game-loop-fundamentals","Game Loop Fundamentals",{"key":29,"name":30,"count":21},"game-networking-multiplayer","Game Networking Multiplayer",{"key":32,"name":33,"count":21},"game-performance-optimization","Game Performance Optimization",{"key":35,"name":36,"count":21},"game-physics-collision","Game Physics Collision",{"key":38,"name":39,"count":21},"game-rendering-pipeline","Game Rendering Pipeline",{"key":41,"name":42,"count":21},"game-state-management","Game State Management",{"key":44,"name":45,"count":21},"gfx-forward-deferred-architectures","Gfx Forward Deferred Architectures",{"key":47,"name":48,"count":21},"gfx-gpu-pipeline-stages","Gfx Gpu Pipeline Stages",{"key":50,"name":51,"count":21},"gfx-post-processing-aa-hdr","Gfx Post Processing Aa Hdr",{"key":53,"name":54,"count":21},"gfx-shading-lighting-pbr","Gfx Shading Lighting Pbr",{"key":56,"name":57,"count":21},"gfx-shadows-depth-precision","Gfx Shadows Depth Precision",{"key":59,"name":60,"count":21},"gfx-textures-sampling-compression","Gfx Textures Sampling Compression",{"key":62,"name":63,"count":21},"gp-ability-cooldown-damage","Gp Ability Cooldown Damage",{"key":65,"name":66,"count":21},"gp-animation-state-locomotion","Gp Animation State Locomotion",{"key":68,"name":69,"count":21},"gp-camera-follow-targeting","Gp Camera Follow Targeting",{"key":71,"name":72,"count":21},"gp-character-controller-movement","Gp Character Controller Movement",{"key":74,"name":75,"count":21},"gp-frame-windows-game-feel","Gp Frame Windows Game Feel",{"key":77,"name":78,"count":21},"gp-interaction-detection-triggers","Gp Interaction Detection Triggers",{"key":80,"name":81,"count":21},"nc-rollback-determinism","Nc Rollback Determinism",{"key":83,"name":84,"count":21},"nc-security-protocol","Nc Security Protocol",{"key":86,"name":87,"count":21},"nc-serialization-bandwidth","Nc Serialization Bandwidth",{"key":89,"name":90,"count":21},"nc-time-sync-tick","Nc Time Sync Tick",{"key":92,"name":93,"count":21},"nc-topology-nat-relay","Nc Topology Nat Relay",{"key":95,"name":96,"count":21},"nc-transport-reliability","Nc Transport Reliability",{"key":98,"name":99,"count":21},"ue-actor-component-lifecycle","Ue Actor Component Lifecycle",{"key":101,"name":102,"count":21},"ue-blueprint-cpp-interop","Ue Blueprint Cpp Interop",{"key":104,"name":105,"count":21},"ue-containers-strings-memory","Ue Containers Strings Memory",{"key":107,"name":108,"count":21},"ue-gameplay-framework-classes","Ue Gameplay Framework Classes",{"key":110,"name":111,"count":21},"ue-modules-build-packaging","Ue Modules Build Packaging",{"key":113,"name":114,"count":21},"ue-uobject-reflection-gc","Ue Uobject Reflection Gc",{"key":116,"name":117,"count":21},"un-csharp-memory-gc-performance","Un Csharp Memory Gc Performance",{"key":119,"name":120,"count":21},"un-gameobject-component-transform","Un Gameobject Component Transform",{"key":122,"name":123,"count":21},"un-jobs-burst-dots-basics","Un Jobs Burst Dots Basics",{"key":125,"name":126,"count":21},"un-monobehaviour-lifecycle-execution-order","Un Monobehaviour Lifecycle Execution Order",{"key":128,"name":129,"count":21},"un-prefabs-instantiate-pooling-addressables","Un Prefabs Instantiate Pooling Addressables",{"key":131,"name":132,"count":21},"un-scriptableobject-serialization","Un Scriptableobject Serialization",[134,137,140,141,144],{"key":135,"name":136,"count":11},"gameplay","Gameplay",{"key":138,"name":139,"count":11},"graphics-rendering","Graphics \u002F Rendering",{"key":8,"name":9,"count":11},{"key":142,"name":143,"count":11},"unity-csharp","Unity (C#)",{"key":145,"name":146,"count":11},"unreal-cpp","Unreal (C++)",[148,166,179,193,206,219],{"id":149,"topic":81,"difficulty":150,"body":151,"options":152,"correct_key":160,"explanation":165},"01a039c8-9e15-71d1-b095-9a25d7c8c7f1",1,"Deterministik lockstep ağ modelinde nesne durumu yerine yalnızca oyuncu girdileri ağdan gönderilir. Sahnedeki simüle edilen nesne sayısı 10'dan 10.000'e çıktığında gereken bant genişliğine ne olur?",[153,156,159,162],{"key":154,"text":155},"a","Yalnızca logaritmik olarak artar, çünkü nesneler daha az pakette gruplanabilir.",{"key":157,"text":158},"b","İkinci dereceden (karesel) artar, çünkü gönderilmeden önce her nesne diğer tüm nesnelerle kontrol edilmelidir.",{"key":160,"text":161},"c","Kabaca sabit kalır, çünkü bant genişliği nesne sayısıyla değil girdinin boyutuyla ölçeklenir.",{"key":163,"text":164},"d","Doğrusal olarak artar, çünkü her nesnenin konumu ve hızı yine de her karede iletilmelidir.","Deterministik lockstep durum yerine girdi gönderir, bu yüzden ağ maliyeti varlık sayısına değil girdi struct'ının boyutuna bağlıdır; girdi küçük kaldığı sürece çok büyük sayıda simüle nesne bile tek nesneyle aynı bant genişliğiyle sürülebilir.",{"id":167,"topic":81,"difficulty":150,"body":168,"options":169,"correct_key":154,"explanation":178},"01a039c8-9e57-7b61-adfa-4941812d7ccb","Deterministik lockstep bir simülasyonda istemci, diğer oyuncunun girdilerini ağdan 60 Hz'de alıyor. Belirli bir karede, N karesine ait uzak girdi henüz gelmemiş. Simülasyon ne yapmalıdır?",[170,172,174,176],{"key":154,"text":171},"N karesine ait gerçek girdi gelene kadar bekler, N'yi ilerletmez.",{"key":157,"text":173},"Önceki karenin uzak girdisini kalıcı bir yerine koyarak N karesini ilerletmeli.",{"key":160,"text":175},"N karesini tamamen atlayıp girdi gelince doğrudan N+1'e geçmeli.",{"key":163,"text":177},"Son alınan iki girdinin ortalamasını enterpole ederek N karesini ilerletmeli.","Lockstep, bir kareyi ancak o karedeki her katılımcının girdisi bilindiğinde ilerletebilir; girdi yoksa kare deterministik biçimde üretilemez, bu yüzden simülasyon tahmin etmek yerine beklemek zorundadır.",{"id":180,"topic":81,"difficulty":181,"body":182,"options":183,"correct_key":163,"explanation":192},"01a039c8-9e58-77ff-bc90-a587999a3966",2,"Bir dövüş oyunu ekibi iki gecikme gizleme stratejisi arasında seçim yapıyor: sabit girdi gecikmesi (herhangi bir girdiye tepki vermeden önce her zaman N kare bekleme) ile tahmin-et-ve-geri-sar (tahmine dayanarak anında tepki ver, sonra düzelt). İkisi arasındaki temel takas nedir?",[184,186,188,190],{"key":154,"text":185},"Sabit gecikme bant genişliği açısından ağırdır, geri sarma ise hiç ağ bant genişliği kullanmaz.",{"key":157,"text":187},"Sabit gecikme yalnızca iki oyuncuda çalışır, geri sarma ise yalnızca ikiden fazla oyuncuda çalışır.",{"key":160,"text":189},"Sabit gecikme kayan nokta determinizmi gerektirir, geri sarma ise hiç determinizm gerektirmez.",{"key":163,"text":191},"Sabit gecikme değişmez bir gecikme katar; geri sarma ise yanlışsa görünür bir sıçrama riski taşır.","Temel takas hissedilen gecikme ile görsel kararlılık arasındadır: sabit gecikme her girdiyi aynı miktarda 'geç' hissettirir ama ekranın asla düzeltilmesi gerekmez; geri sarma ise çoğu zaman anında tepki hissi verir, tahmin yanlış olduğunda ise görünür bir düzeltme bedeli öder.",{"id":194,"topic":81,"difficulty":181,"body":195,"options":196,"correct_key":157,"explanation":205},"01a039c8-9e5c-78c3-ab83-8f0e29040d09","Tahmin-et-ve-geri-sar netcode'unda, zaten simüle edilmiş bir kareye ait gerçek girdinin, kullanılan tahminden farklı çıkması durumunda gerçekleşen doğru sıra hangisidir?",[197,199,201,203],{"key":154,"text":198},"Gerçek girdiyi görmezden gel ve tahmin edilen sonucu koru, çünkü o kare için durum zaten kaydedilmişti.",{"key":157,"text":200},"O karede kaydedilen durumu geri yükle, ardından gerçek girdilerle sonraki her kareyi yeniden simüle et.",{"key":160,"text":202},"O kareden bu yana yapılan tüm simülasyonu at ve maçı sıfırıncı kareden yeniden başlat.",{"key":163,"text":204},"Yalnızca tahmin edilen ile gerçek girdi arasındaki farkı tek karelik bir düzeltme olarak uygula, sonraki karelere dokunma.","Geçmiş bir karenin doğru girdisi öğrenildiğinde motor, o karede kaydedilen duruma geri dönmeli ve ardından o kareden sonra tahmin edilmiş her kareyi yeniden ileri sarmalıdır, çünkü bu karelerin her biri kendinden öncekinin sonucuna bağlıdır.",{"id":207,"topic":81,"difficulty":181,"body":208,"options":209,"correct_key":154,"explanation":218},"01a039c8-9e5e-71ec-907a-081d05973376","Bir oyun tek bir kareyi 0,8 ms'de simüle ediyor. Belirli bir ağ aksaklığında motor, şimdiki ana yetişmeden önce 6 kareyi geri sarıp yeniden simüle etmek zorunda kalıyor. Bu tek geri sarma, normal karenin kendi simülasyonunun üzerine yaklaşık ne kadar ekstra CPU süresi maliyeti getirir?",[210,212,214,216],{"key":154,"text":211},"Yaklaşık 4,8 ms, çünkü geri sarılan 6 kare her biri 0,8 ms'e mal olur.",{"key":157,"text":213},"Yaklaşık 0,8 ms, çünkü yalnızca düzeltilen kare yeniden simüle edilmesi gerekir.",{"key":160,"text":215},"Yaklaşık 6 ms, çünkü kare başı simülasyon maliyetinden bağımsız olarak geri sarılan her kare kabaca 1 ms'e mal olur.",{"key":163,"text":217},"Yaklaşık 9,6 ms, çünkü yeniden simüle edilen her kare iki kez simüle edilmelidir.","Bir geri sarmanın ekstra maliyeti, yeniden simüle edilmesi gereken kare sayısının tek bir karenin simülasyon maliyetiyle çarpımıdır: 6 kare çarpı 0,8 ms, 4,8 ms eder.",{"id":220,"topic":81,"difficulty":181,"body":221,"options":222,"correct_key":160,"explanation":231},"01a039c8-9e60-70ed-a6c3-934758ec5684","Bir geri sarma (rollback) netcode sisteminde, tek bir düzeltmeyi işlemenin en kötü durum CPU maliyetini en iyi hangisi tanımlar?",[223,225,227,229],{"key":154,"text":224},"Gidiş-dönüş süresinin kare süresine bölümü, çünkü bu ne kadar veri kaybedildiğini belirler.",{"key":157,"text":226},"Girdi struct'ının boyutunun oyuncu sayısıyla çarpımı, çünkü yeniden gönderilmesi gereken budur.",{"key":160,"text":228},"Geri sarılan kare sayısı çarpı kare başına simülasyon maliyeti, çünkü o karelerin hepsi tam olarak yeniden çalıştırılmalıdır.",{"key":163,"text":230},"Tam olarak tek bir karenin simülasyon maliyeti, çünkü yalnızca değişen kare yeniden çalıştırılmalıdır.","Geri yüklenen nokta ile şimdiki an arasındaki her kare sırayla yeniden simüle edilmelidir, bu yüzden en kötü durum maliyeti tek bir kareyle ya da ağ\u002Fgirdi boyutuyla değil, kaç karenin geri sarıldığıyla ölçeklenir.",{"fields":233,"seniorities":446,"interview_shapes":447,"locales":452,"oauth":454,"question_count":457,"coach_enabled":458,"jd_match_enabled":458},[234,259,279,296,320,333,352,371,393,412,427,437],{"key":235,"name_tr":236,"name_en":236,"sort":150,"specializations":237},"backend","Backend",[238,241,244,247,250,253,256],{"key":239,"name":240,"field":235},"general","Genel",{"key":242,"name":243,"field":235},"go","Go",{"key":245,"name":246,"field":235},"python","Python",{"key":248,"name":249,"field":235},"java","Java",{"key":251,"name":252,"field":235},"csharp","C#\u002F.NET",{"key":254,"name":255,"field":235},"nodejs","Node.js",{"key":257,"name":258,"field":235},"php","PHP",{"key":260,"name_tr":261,"name_en":261,"sort":181,"specializations":262},"frontend","Frontend",[263,264,267,270,273,276],{"key":239,"name":240,"field":260},{"key":265,"name":266,"field":260},"javascript","JavaScript",{"key":268,"name":269,"field":260},"typescript","TypeScript",{"key":271,"name":272,"field":260},"react","React",{"key":274,"name":275,"field":260},"vue","Vue",{"key":277,"name":278,"field":260},"angular","Angular",{"key":280,"name_tr":281,"name_en":281,"sort":282,"specializations":283},"fullstack","Fullstack",3,[284,285,286,287,288,289,290,291,292,293,294,295],{"key":239,"name":240,"field":280},{"key":242,"name":243,"field":235},{"key":245,"name":246,"field":235},{"key":248,"name":249,"field":235},{"key":251,"name":252,"field":235},{"key":254,"name":255,"field":235},{"key":257,"name":258,"field":235},{"key":265,"name":266,"field":260},{"key":268,"name":269,"field":260},{"key":271,"name":272,"field":260},{"key":274,"name":275,"field":260},{"key":277,"name":278,"field":260},{"key":297,"name_tr":298,"name_en":298,"sort":299,"specializations":300},"devops-cloud","DevOps \u002F Cloud",4,[301,302,305,308,311,314,317],{"key":239,"name":240,"field":297},{"key":303,"name":304,"field":297},"aws","AWS",{"key":306,"name":307,"field":297},"gcp","GCP",{"key":309,"name":310,"field":297},"azure","Azure",{"key":312,"name":313,"field":297},"kubernetes","Kubernetes",{"key":315,"name":316,"field":297},"terraform","Terraform",{"key":318,"name":319,"field":297},"linux","Linux",{"key":321,"name_tr":322,"name_en":322,"sort":323,"specializations":324},"ai-engineer","AI Engineer",5,[325,326,327,330],{"key":239,"name":240,"field":321},{"key":245,"name":246,"field":321},{"key":328,"name":329,"field":321},"llm-rag","LLM\u002FRAG",{"key":331,"name":332,"field":321},"mlops","MLOps",{"key":334,"name_tr":335,"name_en":336,"sort":337,"specializations":338},"database","Veritabanı","Database",6,[339,340,343,346,349],{"key":239,"name":240,"field":334},{"key":341,"name":342,"field":334},"postgresql","PostgreSQL",{"key":344,"name":345,"field":334},"mysql","MySQL",{"key":347,"name":348,"field":334},"mongodb","MongoDB",{"key":350,"name":351,"field":334},"redis","Redis",{"key":353,"name_tr":354,"name_en":355,"sort":356,"specializations":357},"mobile","Mobil","Mobile",7,[358,359,362,365,368],{"key":239,"name":240,"field":353},{"key":360,"name":361,"field":353},"ios-swift","iOS (Swift)",{"key":363,"name":364,"field":353},"android-kotlin","Android (Kotlin)",{"key":366,"name":367,"field":353},"flutter","Flutter",{"key":369,"name":370,"field":353},"react-native","React Native",{"key":372,"name_tr":373,"name_en":374,"sort":375,"specializations":376},"security","Güvenlik","Security",8,[377,378,381,384,387,390],{"key":239,"name":240,"field":372},{"key":379,"name":380,"field":372},"appsec","AppSec",{"key":382,"name":383,"field":372},"offensive-pentest","Offensive \u002F Pentest",{"key":385,"name":386,"field":372},"cloud-security","Cloud Security",{"key":388,"name":389,"field":372},"devsecops","DevSecOps",{"key":391,"name":392,"field":372},"blue-team-incident","Blue Team \u002F Incident",{"key":394,"name_tr":395,"name_en":396,"sort":397,"specializations":398},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[399,400,403,406,409],{"key":239,"name":240,"field":394},{"key":401,"name":402,"field":394},"test-automation","Test Automation",{"key":404,"name":405,"field":394},"sdet","SDET",{"key":407,"name":408,"field":394},"performance-testing","Performance Testing",{"key":410,"name":411,"field":394},"mobile-qa","Mobile QA",{"key":413,"name_tr":414,"name_en":414,"sort":415,"specializations":416},"data-engineer","Data Engineer",10,[417,418,421,424],{"key":239,"name":240,"field":413},{"key":419,"name":420,"field":413},"pipelines-etl","Pipelines \u002F ETL",{"key":422,"name":423,"field":413},"streaming","Streaming",{"key":425,"name":426,"field":413},"warehousing","Warehousing",{"key":5,"name_tr":6,"name_en":428,"sort":429,"specializations":430},"Game Development",11,[431,432,433,434,435,436],{"key":239,"name":240,"field":5},{"key":142,"name":143,"field":5},{"key":145,"name":146,"field":5},{"key":135,"name":136,"field":5},{"key":138,"name":139,"field":5},{"key":8,"name":9,"field":5},{"key":438,"name_tr":439,"name_en":439,"sort":440,"specializations":441},"ml-engineer","ML Engineer",12,[442,443],{"key":239,"name":240,"field":438},{"key":444,"name":445,"field":438},"classical-ml","Classical ML",[14,15,16],{"junior":448,"mid":450,"senior":451},{"questions":449,"median_sec":3},20,{"questions":449,"median_sec":3},{"questions":449,"median_sec":3},[10,453],"en",[455,456],"google","github",27600,true]