[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:frontend\u002Fjunior":4,"config":236},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":8,"spec_key":8,"spec_name":8,"locale":9,"cell_total":10,"field_total":11,"seniorities":12,"topics":15,"specs":134,"samples":151},"frontend","Frontend","junior","","en",1923,2925,[7,13,14],"mid","senior",[16,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125,128,131],{"key":17,"name":18,"count":19},"accessibility","Accessibility",75,{"key":21,"name":22,"count":19},"angular-change-detection","Angular Change Detection",{"key":24,"name":25,"count":19},"angular-components-lifecycle","Angular Components Lifecycle",{"key":27,"name":28,"count":19},"angular-dependency-injection","Angular Dependency Injection",{"key":30,"name":31,"count":19},"angular-directives-pipes","Angular Directives Pipes",{"key":33,"name":34,"count":19},"angular-router-forms","Angular Router Forms",{"key":36,"name":37,"count":19},"angular-testing-performance","Angular Testing Performance",{"key":39,"name":40,"count":19},"css-layout","Css Layout",{"key":42,"name":43,"count":19},"dom-browser-apis","Dom Browser Apis",{"key":45,"name":46,"count":19},"javascript-async-concurrency","Javascript Async Concurrency",{"key":48,"name":49,"count":19},"javascript-language","Javascript Language",{"key":51,"name":52,"count":19},"javascript-memory-performance","Javascript Memory Performance",{"key":54,"name":55,"count":19},"javascript-modules-bundling","Javascript Modules Bundling",{"key":57,"name":58,"count":19},"javascript-prototypes-oop","Javascript Prototypes Oop",{"key":60,"name":61,"count":19},"javascript-runtime-apis","Javascript Runtime Apis",{"key":63,"name":64,"count":19},"javascript-testing-tooling","Javascript Testing Tooling",{"key":66,"name":67,"count":19},"performance","Performance",{"key":69,"name":70,"count":19},"react-components-jsx","React Components Jsx",{"key":72,"name":73,"count":19},"react-context-state","React Context State",{"key":75,"name":76,"count":19},"react-effects-lifecycle","React Effects Lifecycle",{"key":78,"name":79,"count":19},"react-forms-suspense","React Forms Suspense",{"key":81,"name":82,"count":19},"react-hooks-state","React Hooks State",{"key":84,"name":85,"count":19},"react-rendering-performance","React Rendering Performance",{"key":87,"name":88,"count":19},"rendering-reactivity","Rendering Reactivity",{"key":90,"name":91,"count":19},"state-management","State Management",{"key":93,"name":94,"count":19},"testing","Testing",{"key":96,"name":97,"count":19},"typescript-advanced-types","Typescript Advanced Types",{"key":99,"name":100,"count":19},"typescript-generics","Typescript Generics",{"key":102,"name":103,"count":19},"typescript-modules-declarations","Typescript Modules Declarations",{"key":105,"name":106,"count":19},"typescript-narrowing-control-flow","Typescript Narrowing Control Flow",{"key":108,"name":109,"count":19},"typescript-tooling-config","Typescript Tooling Config",{"key":111,"name":112,"count":19},"typescript-type-fundamentals","Typescript Type Fundamentals",{"key":114,"name":115,"count":19},"vue-components-props","Vue Components Props",{"key":117,"name":118,"count":19},"vue-composition-api","Vue Composition Api",{"key":120,"name":121,"count":19},"vue-directives-templates","Vue Directives Templates",{"key":123,"name":124,"count":19},"vue-performance-testing","Vue Performance Testing",{"key":126,"name":127,"count":19},"vue-reactivity-system","Vue Reactivity System",{"key":129,"name":130,"count":19},"vue-router-state-management","Vue Router State Management",{"key":132,"name":133,"count":19},"web-security","Web Security",[135,139,142,145,148],{"key":136,"name":137,"count":138},"angular","Angular",450,{"key":140,"name":141,"count":138},"javascript","JavaScript",{"key":143,"name":144,"count":138},"react","React",{"key":146,"name":147,"count":138},"typescript","TypeScript",{"key":149,"name":150,"count":138},"vue","Vue",[152,170,183,197,210,223],{"id":153,"topic":18,"difficulty":154,"body":155,"options":156,"correct_key":164,"explanation":169},"019f56bb-ba3f-74d5-9280-9f53a6ed3059",1,"Why is a native `\u003Cbutton>` element usually preferred over a clickable `\u003Cdiv>` for an interactive control?",[157,160,163,166],{"key":158,"text":159},"a","Because a plain `\u003Cdiv>` cannot be styled to visually resemble a button without a large amount of extra CSS",{"key":161,"text":162},"b","Because `\u003Cbutton>` elements are painted faster by the browser than generic `\u003Cdiv>` elements are",{"key":164,"text":165},"c","Because a native `\u003Cbutton>` is keyboard-focusable and operable and exposes a button role to assistive tech",{"key":167,"text":168},"d","Because the HTML specification forbids attaching a click handler to a non-interactive `\u003Cdiv>` element","A native `\u003Cbutton>` gives you keyboard focus, Enter\u002FSpace activation, and a screen-reader-announced button role with no extra work. A `\u003Cdiv>` gets none of that automatically; styling it (a) is possible with CSS, and attaching a click handler to a `\u003Cdiv>` is allowed (d) — it just is not accessible.",{"id":171,"topic":18,"difficulty":154,"body":172,"options":173,"correct_key":158,"explanation":182},"019f56bb-ba3f-7ae0-8f04-a495a09bb932","What is the primary purpose of the `alt` attribute on an `\u003Cimg>` element?",[174,176,178,180],{"key":158,"text":175},"To provide a text alternative describing the image for users who cannot see it",{"key":161,"text":177},"To display a visible caption underneath the image for every visitor to the page",{"key":164,"text":179},"To improve how quickly the image file is downloaded and decoded by the browser",{"key":167,"text":181},"To set the tooltip text that appears when the mouse pointer hovers over the image","`alt` gives screen-reader users, and cases where the image fails to load, a text equivalent of the image's content. It is not a visible caption (b) and not the hover tooltip — that is the `title` attribute (d).",{"id":184,"topic":18,"difficulty":185,"body":186,"options":187,"correct_key":167,"explanation":196},"019f56bb-ba40-73f7-b2bc-9d7da73f2eb8",2,"```html\n\u003C!-- A -->\n\u003Cdiv class=\"btn\" onclick=\"save()\">Save\u003C\u002Fdiv>\n\n\u003C!-- B -->\n\u003Cbutton class=\"btn\" onclick=\"save()\">Save\u003C\u002Fbutton>\n```\nBoth controls call `save()` when clicked with a mouse. Which statement is correct?",[188,190,192,194],{"key":158,"text":189},"They are equivalent, because the `onclick` handler fires the same way for both elements",{"key":161,"text":191},"A is better, because a `\u003Cdiv>` can be styled more flexibly than a `\u003Cbutton>` element",{"key":164,"text":193},"Both are inaccessible, because inline `onclick` handlers are completely ignored by screen readers",{"key":167,"text":195},"Only B is reachable by Tab and activatable with the keyboard; A needs extra work to match it","The `\u003Cbutton>` is focusable and responds to Enter\u002FSpace out of the box, so keyboard and screen-reader users can use it. The `\u003Cdiv>` responds only to mouse clicks unless you add `tabindex`, a role, and key handlers — inline `onclick` itself is not ignored (c), it just adds no keyboard support.",{"id":198,"topic":18,"difficulty":185,"body":199,"options":200,"correct_key":161,"explanation":209},"019f56bb-ba40-79da-833d-a8e905d4681e","You have a text input for an email address, with the visible word 'Email' next to it in a separate `\u003Cspan>`. A screen-reader user tabs to the field and hears only 'edit text', with no label. What is the correct fix?",[201,203,205,207],{"key":158,"text":202},"Add a `title` attribute to the `\u003Cspan>` so its text gets announced together with the field",{"key":161,"text":204},"Use a `\u003Clabel for=\"...\">` whose `for` value matches the input's `id` attribute",{"key":164,"text":206},"Wrap the input in a `\u003Cdiv role=\"label\">` so the browser links the nearby text to it",{"key":167,"text":208},"Put a `placeholder=\"Email\"` on the input so its purpose is announced to the user","A `\u003Clabel>` with `for` matching the input's `id` (or a `\u003Clabel>` wrapping the input) creates a programmatic association, so the field is announced as 'Email'. A `placeholder` (d) is not a reliable label — it disappears on typing and is inconsistently announced — and there is no `role=\"label\"` (c).",{"id":211,"topic":18,"difficulty":154,"body":212,"options":213,"correct_key":164,"explanation":222},"019f56bb-ba41-71b5-ba4b-a2ec0408a1fc","What does the `aria-label` attribute do?",[214,216,218,220],{"key":158,"text":215},"It sets a visible text label that is shown next to the element on the screen",{"key":161,"text":217},"It marks the element as decorative so that assistive technology skips over it",{"key":164,"text":219},"It provides an accessible name for the element that assistive tech announces",{"key":167,"text":221},"It stores a longer help description that is shown only when the element is focused","`aria-label` gives an element an accessible name that screen readers announce, without showing anything on screen — useful for icon-only buttons. It is not visible (a), and it does not hide the element (b); that is what `aria-hidden` does.",{"id":224,"topic":18,"difficulty":185,"body":225,"options":226,"correct_key":167,"explanation":235},"019f56bb-ba41-773a-b9a6-5910907615d5","A page uses a small decorative swirl image purely for visual flourish; it carries no information. How should its `\u003Cimg>` be marked up for accessibility?",[227,229,231,233],{"key":158,"text":228},"Give it a descriptive `alt` such as `alt=\"decorative swirl divider between the two sections\"`",{"key":161,"text":230},"Leave the `alt` attribute off entirely so the browser can decide how to announce it",{"key":164,"text":232},"Add `role=\"img\"` plus an `aria-label` describing the swirl for screen-reader users",{"key":167,"text":234},"Give it an empty `alt=\"\"` so assistive technology skips it as decorative","An empty `alt=\"\"` tells screen readers the image is decorative and can be ignored, avoiding noise. Describing a meaningless flourish (a) adds clutter, and omitting `alt` entirely (b) makes many screen readers read the file name instead of skipping it.",{"fields":237,"seniorities":411,"interview_shapes":412,"locales":417,"oauth":419,"question_count":422,"coach_enabled":423,"jd_match_enabled":423},[238,263,271,288,312,325,344,363,385,392,398,405],{"key":239,"name_tr":240,"name_en":240,"sort":154,"specializations":241},"backend","Backend",[242,245,248,251,254,257,260],{"key":243,"name":244,"field":239},"general","Genel",{"key":246,"name":247,"field":239},"go","Go",{"key":249,"name":250,"field":239},"python","Python",{"key":252,"name":253,"field":239},"java","Java",{"key":255,"name":256,"field":239},"csharp","C#\u002F.NET",{"key":258,"name":259,"field":239},"nodejs","Node.js",{"key":261,"name":262,"field":239},"php","PHP",{"key":5,"name_tr":6,"name_en":6,"sort":185,"specializations":264},[265,266,267,268,269,270],{"key":243,"name":244,"field":5},{"key":140,"name":141,"field":5},{"key":146,"name":147,"field":5},{"key":143,"name":144,"field":5},{"key":149,"name":150,"field":5},{"key":136,"name":137,"field":5},{"key":272,"name_tr":273,"name_en":273,"sort":274,"specializations":275},"fullstack","Fullstack",3,[276,277,278,279,280,281,282,283,284,285,286,287],{"key":243,"name":244,"field":272},{"key":246,"name":247,"field":239},{"key":249,"name":250,"field":239},{"key":252,"name":253,"field":239},{"key":255,"name":256,"field":239},{"key":258,"name":259,"field":239},{"key":261,"name":262,"field":239},{"key":140,"name":141,"field":5},{"key":146,"name":147,"field":5},{"key":143,"name":144,"field":5},{"key":149,"name":150,"field":5},{"key":136,"name":137,"field":5},{"key":289,"name_tr":290,"name_en":290,"sort":291,"specializations":292},"devops-cloud","DevOps \u002F Cloud",4,[293,294,297,300,303,306,309],{"key":243,"name":244,"field":289},{"key":295,"name":296,"field":289},"aws","AWS",{"key":298,"name":299,"field":289},"gcp","GCP",{"key":301,"name":302,"field":289},"azure","Azure",{"key":304,"name":305,"field":289},"kubernetes","Kubernetes",{"key":307,"name":308,"field":289},"terraform","Terraform",{"key":310,"name":311,"field":289},"linux","Linux",{"key":313,"name_tr":314,"name_en":314,"sort":315,"specializations":316},"ai-engineer","AI Engineer",5,[317,318,319,322],{"key":243,"name":244,"field":313},{"key":249,"name":250,"field":313},{"key":320,"name":321,"field":313},"llm-rag","LLM\u002FRAG",{"key":323,"name":324,"field":313},"mlops","MLOps",{"key":326,"name_tr":327,"name_en":328,"sort":329,"specializations":330},"database","Veritabanı","Database",6,[331,332,335,338,341],{"key":243,"name":244,"field":326},{"key":333,"name":334,"field":326},"postgresql","PostgreSQL",{"key":336,"name":337,"field":326},"mysql","MySQL",{"key":339,"name":340,"field":326},"mongodb","MongoDB",{"key":342,"name":343,"field":326},"redis","Redis",{"key":345,"name_tr":346,"name_en":347,"sort":348,"specializations":349},"mobile","Mobil","Mobile",7,[350,351,354,357,360],{"key":243,"name":244,"field":345},{"key":352,"name":353,"field":345},"ios-swift","iOS (Swift)",{"key":355,"name":356,"field":345},"android-kotlin","Android (Kotlin)",{"key":358,"name":359,"field":345},"flutter","Flutter",{"key":361,"name":362,"field":345},"react-native","React Native",{"key":364,"name_tr":365,"name_en":366,"sort":367,"specializations":368},"security","Güvenlik","Security",8,[369,370,373,376,379,382],{"key":243,"name":244,"field":364},{"key":371,"name":372,"field":364},"appsec","AppSec",{"key":374,"name":375,"field":364},"offensive-pentest","Offensive \u002F Pentest",{"key":377,"name":378,"field":364},"cloud-security","Cloud Security",{"key":380,"name":381,"field":364},"devsecops","DevSecOps",{"key":383,"name":384,"field":364},"blue-team-incident","Blue Team \u002F Incident",{"key":386,"name_tr":387,"name_en":388,"sort":389,"specializations":390},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[391],{"key":243,"name":244,"field":386},{"key":393,"name_tr":394,"name_en":394,"sort":395,"specializations":396},"data-engineer","Data Engineer",10,[397],{"key":243,"name":244,"field":393},{"key":399,"name_tr":400,"name_en":401,"sort":402,"specializations":403},"game-dev","Oyun Geliştirme","Game Development",11,[404],{"key":243,"name":244,"field":399},{"key":406,"name_tr":407,"name_en":407,"sort":408,"specializations":409},"ml-engineer","ML Engineer",12,[410],{"key":243,"name":244,"field":406},[7,13,14],{"junior":413,"mid":415,"senior":416},{"questions":414,"median_sec":3},20,{"questions":414,"median_sec":3},{"questions":414,"median_sec":3},[418,9],"tr",[420,421],"google","github",21750,true]