[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:frontend\u002Fangular":4,"config":234},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":136,"samples":150},"frontend","Frontend","","angular","Angular","tr",450,2925,[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,133],{"key":19,"name":20,"count":21},"accessibility","Accessibility",75,{"key":23,"name":24,"count":21},"angular-change-detection","Angular Change Detection",{"key":26,"name":27,"count":21},"angular-components-lifecycle","Angular Components Lifecycle",{"key":29,"name":30,"count":21},"angular-dependency-injection","Angular Dependency Injection",{"key":32,"name":33,"count":21},"angular-directives-pipes","Angular Directives Pipes",{"key":35,"name":36,"count":21},"angular-router-forms","Angular Router Forms",{"key":38,"name":39,"count":21},"angular-testing-performance","Angular Testing Performance",{"key":41,"name":42,"count":21},"css-layout","Css Layout",{"key":44,"name":45,"count":21},"dom-browser-apis","Dom Browser Apis",{"key":47,"name":48,"count":21},"javascript-async-concurrency","Javascript Async Concurrency",{"key":50,"name":51,"count":21},"javascript-language","Javascript Language",{"key":53,"name":54,"count":21},"javascript-memory-performance","Javascript Memory Performance",{"key":56,"name":57,"count":21},"javascript-modules-bundling","Javascript Modules Bundling",{"key":59,"name":60,"count":21},"javascript-prototypes-oop","Javascript Prototypes Oop",{"key":62,"name":63,"count":21},"javascript-runtime-apis","Javascript Runtime Apis",{"key":65,"name":66,"count":21},"javascript-testing-tooling","Javascript Testing Tooling",{"key":68,"name":69,"count":21},"performance","Performance",{"key":71,"name":72,"count":21},"react-components-jsx","React Components Jsx",{"key":74,"name":75,"count":21},"react-context-state","React Context State",{"key":77,"name":78,"count":21},"react-effects-lifecycle","React Effects Lifecycle",{"key":80,"name":81,"count":21},"react-forms-suspense","React Forms Suspense",{"key":83,"name":84,"count":21},"react-hooks-state","React Hooks State",{"key":86,"name":87,"count":21},"react-rendering-performance","React Rendering Performance",{"key":89,"name":90,"count":21},"rendering-reactivity","Rendering Reactivity",{"key":92,"name":93,"count":21},"state-management","State Management",{"key":95,"name":96,"count":21},"testing","Testing",{"key":98,"name":99,"count":21},"typescript-advanced-types","Typescript Advanced Types",{"key":101,"name":102,"count":21},"typescript-generics","Typescript Generics",{"key":104,"name":105,"count":21},"typescript-modules-declarations","Typescript Modules Declarations",{"key":107,"name":108,"count":21},"typescript-narrowing-control-flow","Typescript Narrowing Control Flow",{"key":110,"name":111,"count":21},"typescript-tooling-config","Typescript Tooling Config",{"key":113,"name":114,"count":21},"typescript-type-fundamentals","Typescript Type Fundamentals",{"key":116,"name":117,"count":21},"vue-components-props","Vue Components Props",{"key":119,"name":120,"count":21},"vue-composition-api","Vue Composition Api",{"key":122,"name":123,"count":21},"vue-directives-templates","Vue Directives Templates",{"key":125,"name":126,"count":21},"vue-performance-testing","Vue Performance Testing",{"key":128,"name":129,"count":21},"vue-reactivity-system","Vue Reactivity System",{"key":131,"name":132,"count":21},"vue-router-state-management","Vue Router State Management",{"key":134,"name":135,"count":21},"web-security","Web Security",[137,138,141,144,147],{"key":8,"name":9,"count":11},{"key":139,"name":140,"count":11},"javascript","JavaScript",{"key":142,"name":143,"count":11},"react","React",{"key":145,"name":146,"count":11},"typescript","TypeScript",{"key":148,"name":149,"count":11},"vue","Vue",[151,169,182,195,208,221],{"id":152,"topic":24,"difficulty":153,"body":154,"options":155,"correct_key":157,"explanation":168},"019f79bd-8f92-7ba4-af31-52b677eaa0d7",1,"Klasik (zoneless olmayan) bir Angular uygulamasında Zone.js'in temel görevi nedir?",[156,159,162,165],{"key":157,"text":158},"a","Asenkron API'leri (`setTimeout`, DOM event'leri, `Promise`, XHR) monkey-patch ederek Angular'a ne zaman change detection çalıştıracağını bildirir",{"key":160,"text":161},"b","Angular'ın renderer'ının yerini tamamen alır, hız için framework'ün kendi view katmanını atlayıp doğrudan DOM node'larına yazar",{"key":163,"text":164},"c","Template'leri ve decorator'ları uygulama yayınlanmadan önce düz JavaScript'e çeviren, build zamanında çalışan bir derleyici adımıdır",{"key":166,"text":167},"d","Ağ çağrılarını azaltmak için servisler ve component'ler arasında HTTP yanıtlarını önbelleğe alan bir interceptor katmanıdır","Zone.js, yaygın asenkron tarayıcı API'lerini yamanır. Bunlardan biri tetiklendiğinde (bir timer, bir event, çözülen bir promise), Zone.js Angular'a haber verir ve bir change detection turu tetiklenir — bu olmasaydı Angular'ın state değişmiş olabileceğine dair otomatik bir sinyali olmazdı.",{"id":170,"topic":24,"difficulty":153,"body":171,"options":172,"correct_key":160,"explanation":181},"019f79bd-8fc6-7546-b9c3-2037946558bd","Bir Angular ağacındaki her component açıkça `ChangeDetectionStrategy.Eager` (Angular 22 öncesindeki adıyla `Default`) kullanıyorsa, bir CD döngüsü hangi component'leri kontrol eder?",[173,175,177,179],{"key":157,"text":174},"Yalnızca bir önceki döngüden bu yana `@Input` binding'i gerçekten değişmiş olan component'leri",{"key":160,"text":176},"Ağaçtaki her component'i, root'tan aşağıya doğru",{"key":163,"text":178},"Yalnızca o an viewport'ta kaydırılarak görünür hale gelmiş component'leri",{"key":166,"text":180},"Yalnızca root component'in kendisini, çocuklarını hiç dikkate almadan","Tamamı `Eager` olan bir ağaçta Angular, her CD döngüsünde component ağacını yukarıdan aşağıya dolaşır ve her view'ın template binding'lerini yeniden kontrol eder. `Default`, `Eager` için deprecated legacy alias'tır; Angular 22'den itibaren strateji belirtilmezse `OnPush` kullanıldığından soru her component'i açıkça `Eager` olarak sınırlar.",{"id":183,"topic":24,"difficulty":153,"body":184,"options":185,"correct_key":163,"explanation":194},"019f79bd-8fc8-7639-9ac3-9a9baa59b454","Tek cümleyle, `ChangeDetectionStrategy.OnPush` ne yapar?",[186,188,190,192],{"key":157,"text":187},"Component'i change detection'dan tamamen çıkarır, view'i ilk render edildiği haliyle donmuş kalır",{"key":160,"text":189},"Component'i yalnızca stylesheet kuralları ya da CSS class'ları değiştiğinde yeniden kontrol eder",{"key":163,"text":191},"Kontrolleri değişen input değeri, alt ağacındaki bir event, template'te okunan signal güncellemesi, `AsyncPipe` ya da manuel bildirim gibi belirli tetikleyicilerle sınırlar",{"key":166,"text":193},"Tüm uygulama için Zone.js'i devre dışı bırakır, artık hiçbir component otomatik asenkron bildirim almaz","`OnPush`, component'i change detection'dan çıkarmaz — NE ZAMAN kontrol edileceğini sınırlar. Değişen primitive input veya yeni nesne referansı; alt ağacındaki event, template'in tükettiği signal, `AsyncPipe` ve `markForCheck()` ya da `detectChanges()` gibi açık API'ler tetikleyici olabilir.",{"id":196,"topic":24,"difficulty":153,"body":197,"options":198,"correct_key":166,"explanation":207},"019f79bd-8fcb-7d3b-99c7-d73d839e08a7","Bir Angular Signal (Angular 16+), temel düzeyde nedir?",[199,201,203,205],{"key":157,"text":200},"Angular'ın var olan bir RxJS `Observable`'a verdiği, tamamen aynı subscribe tabanlı API'ye sahip yeni bir isim",{"key":160,"text":202},"Yalnızca template'e özgü, hiçbir runtime nesnesi ya da değeri karşılığı olmayan bir syntax parçası",{"key":163,"text":204},"Yalnızca `HttpClient` isteklerinin önbelleklenmesini ve yeniden denemesini yapılandırmak için tanıtılmış özel bir API",{"key":166,"text":206},"Bir değeri saran, kimin okuduğunu izleyen, senkron ve reaktif bir wrapper — böylece değer değiştiğinde bağımlılar bilgilendirilebilir","Signal, bir değeri tutan hafif, senkron bir primitive'dir. Kod bir signal'ı okuduğunda (örn. bir `computed` içinde ya da template'te), Angular bu bağımlılığı kaydeder; böylece signal'ın değeri değiştiğinde tam olarak neyin güncelleneceğini bilir.",{"id":209,"topic":24,"difficulty":153,"body":210,"options":211,"correct_key":157,"explanation":220},"019f79bd-8fce-7502-b2f0-ce4292d99148","`signal(0)` ile oluşturulan bir signal'ın güncel değerini nasıl okursun?",[212,214,216,218],{"key":157,"text":213},"Fonksiyon olarak çağır: `mySignal()`",{"key":160,"text":215},"Bir ref gibi `.value` property'sine eriş",{"key":163,"text":217},"Üzerinde `.get()` çağır",{"key":166,"text":219},"Düz bir değişken gibi doğrudan oku, çağrıya gerek yok","Signal'lar çağrılabilirdir — `mySignal()` çağırmak güncel değeri döndürür ve eğer reaktif bir bağlam içinde (template, `computed`, `effect`) çağrılıyorsa ona bir bağımlılık kaydeder.",{"id":222,"topic":24,"difficulty":153,"body":223,"options":224,"correct_key":160,"explanation":233},"019f79bd-8fd1-7313-9167-22c7550d7ca4","`ChangeDetectorRef.markForCheck()` çağırmak ne yapar?",[225,227,229,231],{"key":157,"text":226},"Component'i ve tüm alt ağacını, çağrıldığı anda hemen senkron olarak render eder",{"key":160,"text":228},"Component'i (OnPush olsa bile) sıradaki change detection döngüsünde kontrol edilmesi gerektiğini işaretler",{"key":163,"text":230},"Component'i CD ağacından çıkarır, tıpkı `detach()` çağırmakla aynı etkiyi yaratır",{"key":166,"text":232},"Zone.js'e tüm uygulama genelinde ekstra bir global change detection döngüsü zamanlatıp çalıştırtır","`markForCheck()` change detection'ı kendisi çalıştırmaz — view'ı ve gerekli ata yolunu, daha sonraki bir change-detection taramasının ona ulaşıp kontrol edebilmesi için işaretler. Zoneless modda bu çağrı aynı zamanda Angular scheduler'ının bildirim kaynaklarından biridir; anında yerel kontrol yapan API `detectChanges()`'tir.",{"fields":235,"seniorities":410,"interview_shapes":411,"locales":416,"oauth":418,"question_count":421,"coach_enabled":422,"jd_match_enabled":422},[236,261,270,287,311,324,343,362,384,391,397,404],{"key":237,"name_tr":238,"name_en":238,"sort":153,"specializations":239},"backend","Backend",[240,243,246,249,252,255,258],{"key":241,"name":242,"field":237},"general","Genel",{"key":244,"name":245,"field":237},"go","Go",{"key":247,"name":248,"field":237},"python","Python",{"key":250,"name":251,"field":237},"java","Java",{"key":253,"name":254,"field":237},"csharp","C#\u002F.NET",{"key":256,"name":257,"field":237},"nodejs","Node.js",{"key":259,"name":260,"field":237},"php","PHP",{"key":5,"name_tr":6,"name_en":6,"sort":262,"specializations":263},2,[264,265,266,267,268,269],{"key":241,"name":242,"field":5},{"key":139,"name":140,"field":5},{"key":145,"name":146,"field":5},{"key":142,"name":143,"field":5},{"key":148,"name":149,"field":5},{"key":8,"name":9,"field":5},{"key":271,"name_tr":272,"name_en":272,"sort":273,"specializations":274},"fullstack","Fullstack",3,[275,276,277,278,279,280,281,282,283,284,285,286],{"key":241,"name":242,"field":271},{"key":244,"name":245,"field":237},{"key":247,"name":248,"field":237},{"key":250,"name":251,"field":237},{"key":253,"name":254,"field":237},{"key":256,"name":257,"field":237},{"key":259,"name":260,"field":237},{"key":139,"name":140,"field":5},{"key":145,"name":146,"field":5},{"key":142,"name":143,"field":5},{"key":148,"name":149,"field":5},{"key":8,"name":9,"field":5},{"key":288,"name_tr":289,"name_en":289,"sort":290,"specializations":291},"devops-cloud","DevOps \u002F Cloud",4,[292,293,296,299,302,305,308],{"key":241,"name":242,"field":288},{"key":294,"name":295,"field":288},"aws","AWS",{"key":297,"name":298,"field":288},"gcp","GCP",{"key":300,"name":301,"field":288},"azure","Azure",{"key":303,"name":304,"field":288},"kubernetes","Kubernetes",{"key":306,"name":307,"field":288},"terraform","Terraform",{"key":309,"name":310,"field":288},"linux","Linux",{"key":312,"name_tr":313,"name_en":313,"sort":314,"specializations":315},"ai-engineer","AI Engineer",5,[316,317,318,321],{"key":241,"name":242,"field":312},{"key":247,"name":248,"field":312},{"key":319,"name":320,"field":312},"llm-rag","LLM\u002FRAG",{"key":322,"name":323,"field":312},"mlops","MLOps",{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"database","Veritabanı","Database",6,[330,331,334,337,340],{"key":241,"name":242,"field":325},{"key":332,"name":333,"field":325},"postgresql","PostgreSQL",{"key":335,"name":336,"field":325},"mysql","MySQL",{"key":338,"name":339,"field":325},"mongodb","MongoDB",{"key":341,"name":342,"field":325},"redis","Redis",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"mobile","Mobil","Mobile",7,[349,350,353,356,359],{"key":241,"name":242,"field":344},{"key":351,"name":352,"field":344},"ios-swift","iOS (Swift)",{"key":354,"name":355,"field":344},"android-kotlin","Android (Kotlin)",{"key":357,"name":358,"field":344},"flutter","Flutter",{"key":360,"name":361,"field":344},"react-native","React Native",{"key":363,"name_tr":364,"name_en":365,"sort":366,"specializations":367},"security","Güvenlik","Security",8,[368,369,372,375,378,381],{"key":241,"name":242,"field":363},{"key":370,"name":371,"field":363},"appsec","AppSec",{"key":373,"name":374,"field":363},"offensive-pentest","Offensive \u002F Pentest",{"key":376,"name":377,"field":363},"cloud-security","Cloud Security",{"key":379,"name":380,"field":363},"devsecops","DevSecOps",{"key":382,"name":383,"field":363},"blue-team-incident","Blue Team \u002F Incident",{"key":385,"name_tr":386,"name_en":387,"sort":388,"specializations":389},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[390],{"key":241,"name":242,"field":385},{"key":392,"name_tr":393,"name_en":393,"sort":394,"specializations":395},"data-engineer","Data Engineer",10,[396],{"key":241,"name":242,"field":392},{"key":398,"name_tr":399,"name_en":400,"sort":401,"specializations":402},"game-dev","Oyun Geliştirme","Game Development",11,[403],{"key":241,"name":242,"field":398},{"key":405,"name_tr":406,"name_en":406,"sort":407,"specializations":408},"ml-engineer","ML Engineer",12,[409],{"key":241,"name":242,"field":405},[14,15,16],{"junior":412,"mid":414,"senior":415},{"questions":413,"median_sec":3},20,{"questions":413,"median_sec":3},{"questions":413,"median_sec":3},[10,417],"en",[419,420],"google","github",21750,true]