[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:frontend\u002Fvue-performance-testing":4,"config":235},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":133,"samples":150},"frontend","Frontend","","vue-performance-testing","Vue Performance Testing","en",75,2925,[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,124,127,130],{"key":19,"name":20,"count":11},"accessibility","Accessibility",{"key":22,"name":23,"count":11},"angular-change-detection","Angular Change Detection",{"key":25,"name":26,"count":11},"angular-components-lifecycle","Angular Components Lifecycle",{"key":28,"name":29,"count":11},"angular-dependency-injection","Angular Dependency Injection",{"key":31,"name":32,"count":11},"angular-directives-pipes","Angular Directives Pipes",{"key":34,"name":35,"count":11},"angular-router-forms","Angular Router Forms",{"key":37,"name":38,"count":11},"angular-testing-performance","Angular Testing Performance",{"key":40,"name":41,"count":11},"css-layout","Css Layout",{"key":43,"name":44,"count":11},"dom-browser-apis","Dom Browser Apis",{"key":46,"name":47,"count":11},"javascript-async-concurrency","Javascript Async Concurrency",{"key":49,"name":50,"count":11},"javascript-language","Javascript Language",{"key":52,"name":53,"count":11},"javascript-memory-performance","Javascript Memory Performance",{"key":55,"name":56,"count":11},"javascript-modules-bundling","Javascript Modules Bundling",{"key":58,"name":59,"count":11},"javascript-prototypes-oop","Javascript Prototypes Oop",{"key":61,"name":62,"count":11},"javascript-runtime-apis","Javascript Runtime Apis",{"key":64,"name":65,"count":11},"javascript-testing-tooling","Javascript Testing Tooling",{"key":67,"name":68,"count":11},"performance","Performance",{"key":70,"name":71,"count":11},"react-components-jsx","React Components Jsx",{"key":73,"name":74,"count":11},"react-context-state","React Context State",{"key":76,"name":77,"count":11},"react-effects-lifecycle","React Effects Lifecycle",{"key":79,"name":80,"count":11},"react-forms-suspense","React Forms Suspense",{"key":82,"name":83,"count":11},"react-hooks-state","React Hooks State",{"key":85,"name":86,"count":11},"react-rendering-performance","React Rendering Performance",{"key":88,"name":89,"count":11},"rendering-reactivity","Rendering Reactivity",{"key":91,"name":92,"count":11},"state-management","State Management",{"key":94,"name":95,"count":11},"testing","Testing",{"key":97,"name":98,"count":11},"typescript-advanced-types","Typescript Advanced Types",{"key":100,"name":101,"count":11},"typescript-generics","Typescript Generics",{"key":103,"name":104,"count":11},"typescript-modules-declarations","Typescript Modules Declarations",{"key":106,"name":107,"count":11},"typescript-narrowing-control-flow","Typescript Narrowing Control Flow",{"key":109,"name":110,"count":11},"typescript-tooling-config","Typescript Tooling Config",{"key":112,"name":113,"count":11},"typescript-type-fundamentals","Typescript Type Fundamentals",{"key":115,"name":116,"count":11},"vue-components-props","Vue Components Props",{"key":118,"name":119,"count":11},"vue-composition-api","Vue Composition Api",{"key":121,"name":122,"count":11},"vue-directives-templates","Vue Directives Templates",{"key":8,"name":9,"count":11},{"key":125,"name":126,"count":11},"vue-reactivity-system","Vue Reactivity System",{"key":128,"name":129,"count":11},"vue-router-state-management","Vue Router State Management",{"key":131,"name":132,"count":11},"web-security","Web Security",[134,138,141,144,147],{"key":135,"name":136,"count":137},"angular","Angular",450,{"key":139,"name":140,"count":137},"javascript","JavaScript",{"key":142,"name":143,"count":137},"react","React",{"key":145,"name":146,"count":137},"typescript","TypeScript",{"key":148,"name":149,"count":137},"vue","Vue",[151,169,182,195,209,222],{"id":152,"topic":9,"difficulty":153,"body":154,"options":155,"correct_key":160,"explanation":168},"019f7766-2fb9-7355-9662-5f8ad8ba2e5c",1,"What does the `\u003CKeepAlive>` built-in component do when it wraps a dynamic component?",[156,159,162,165],{"key":157,"text":158},"a","It forces the wrapped component to re-render on every parent update",{"key":160,"text":161},"b","It caches the component instance instead of destroying it",{"key":163,"text":164},"c","It prevents the component from ever mounting until it becomes visible",{"key":166,"text":167},"d","It automatically lazy-loads the component's JavaScript bundle","`\u003CKeepAlive>` preserves the component instance (including its state and DOM) in memory when it's toggled out of view, instead of unmounting\u002Fdestroying it. When toggled back in, the same instance is reused rather than created fresh — this is why forms and scroll positions survive tab switches wrapped in `\u003CKeepAlive>`.",{"id":170,"topic":9,"difficulty":153,"body":171,"options":172,"correct_key":163,"explanation":181},"019f7766-2fbb-71e3-a0cb-cd43253b8818","Why would you use `defineAsyncComponent` for a heavy component instead of importing it normally?",[173,175,177,179],{"key":157,"text":174},"It automatically makes the component's reactivity faster",{"key":160,"text":176},"It disables the component's props validation to save runtime cost",{"key":163,"text":178},"It splits the component into a separate chunk loaded only when needed",{"key":166,"text":180},"It converts the component from Composition API to Options API","`defineAsyncComponent` wraps a dynamic `import()`, so the build tool creates a separate JS chunk for that component. The chunk is only fetched when the component actually needs to render, reducing the initial bundle size — useful for rarely-used or heavy components (modals, charts, etc.).",{"id":183,"topic":9,"difficulty":153,"body":184,"options":185,"correct_key":157,"explanation":194},"019f7766-2fbb-7b14-81a9-01e9dff6c1e5","In Vue Test Utils, how does `wrapper.get('.save')` differ from `wrapper.find('.save')` when no element matches?",[186,188,190,192],{"key":157,"text":187},"`get` throws an error, while `find` returns an error wrapper whose `exists()` is false",{"key":160,"text":189},"`get` returns every match, while `find` returns only the first match",{"key":163,"text":191},"`get` searches child components, while `find` searches only native elements",{"key":166,"text":193},"There is no behavioral difference; the two methods are aliases","`get(selector)` is intended for elements that must exist, so it throws a descriptive error when the selector matches nothing. `find(selector)` is useful for optional elements: it returns an error wrapper, allowing an assertion such as `expect(wrapper.find('.save').exists()).toBe(false)` without throwing during the lookup itself.",{"id":196,"topic":9,"difficulty":197,"body":198,"options":199,"correct_key":166,"explanation":208},"019f7766-2fbd-73f2-9afb-e5e8a3223c75",2,"```vue\n\u003Ctemplate>\n  \u003Cdiv v-once>{{ expensiveGreeting }}\u003C\u002Fdiv>\n  \u003Cbutton @click=\"count++\">{{ count }}\u003C\u002Fbutton>\n\u003C\u002Ftemplate>\n```\nWhen `count` changes and the component re-renders, what happens to the `\u003Cdiv>` content?",[200,202,204,206],{"key":157,"text":201},"It updates to the latest value of `expensiveGreeting` every time",{"key":160,"text":203},"It throws a runtime error because `v-once` conflicts with reactive updates elsewhere",{"key":163,"text":205},"It re-renders only every other time the component updates",{"key":166,"text":207},"It stays exactly as it was rendered the first time, never updating again","`v-once` marks an element (and its children) to render exactly once and then be skipped on all future re-renders, treating it as static content from then on. Even though `count` changing causes the component to re-render, the `v-once` div is excluded from that update — its content is frozen at first render.",{"id":210,"topic":9,"difficulty":197,"body":211,"options":212,"correct_key":160,"explanation":221},"019f7766-2fbd-7dca-854b-13f15a0af10b","```javascript\nimport { mount } from '@vue\u002Ftest-utils';\nimport Counter from '.\u002FCounter.vue';\n\ntest('increments on click', async () => {\n  const wrapper = mount(Counter);\n  await wrapper.find('button').trigger('click');\n  expect(wrapper.text()).toContain('1');\n});\n```\nWhy is `await` needed before the assertion on `wrapper.text()`?",[213,215,217,219],{"key":157,"text":214},"`trigger('click')` runs the click handler asynchronously on a background thread",{"key":160,"text":216},"`trigger` returns a promise that resolves after Vue's DOM update cycle (`nextTick`) completes",{"key":163,"text":218},"`await` is only needed to satisfy the test framework's syntax, it has no functional effect here",{"key":166,"text":220},"Without `await`, the test would throw a `TypeError` because `trigger` doesn't return a value","Vue batches reactive DOM updates and applies them asynchronously (on the next microtask tick). `wrapper.trigger()` returns a promise that resolves after Vue has flushed pending DOM updates, so awaiting it ensures the DOM (and thus `wrapper.text()`) reflects the state change from the click before the assertion runs.",{"id":223,"topic":9,"difficulty":153,"body":224,"options":225,"correct_key":163,"explanation":234},"019f7766-2fbe-7a7e-b71f-d23091185ade","What is the difference between `mount()` and `shallowMount()` in Vue Test Utils?",[226,228,230,232],{"key":157,"text":227},"`mount()` only works with Options API components, `shallowMount()` only with Composition API",{"key":160,"text":229},"`shallowMount()` renders the component without applying any of its CSS styles",{"key":163,"text":231},"`shallowMount()` stubs out all child components instead of fully rendering them",{"key":166,"text":233},"`mount()` requires a real browser DOM, `shallowMount()` works in Node.js only","`shallowMount()` renders the target component fully, but replaces every child component with a lightweight stub (so their internal logic and DOM don't render). This isolates the test to just the component under test. `mount()` renders the full component tree, including all real children.",{"fields":236,"seniorities":410,"interview_shapes":411,"locales":416,"oauth":418,"question_count":421,"coach_enabled":422,"jd_match_enabled":422},[237,262,270,287,311,324,343,362,384,391,397,404],{"key":238,"name_tr":239,"name_en":239,"sort":153,"specializations":240},"backend","Backend",[241,244,247,250,253,256,259],{"key":242,"name":243,"field":238},"general","Genel",{"key":245,"name":246,"field":238},"go","Go",{"key":248,"name":249,"field":238},"python","Python",{"key":251,"name":252,"field":238},"java","Java",{"key":254,"name":255,"field":238},"csharp","C#\u002F.NET",{"key":257,"name":258,"field":238},"nodejs","Node.js",{"key":260,"name":261,"field":238},"php","PHP",{"key":5,"name_tr":6,"name_en":6,"sort":197,"specializations":263},[264,265,266,267,268,269],{"key":242,"name":243,"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":135,"name":136,"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":242,"name":243,"field":271},{"key":245,"name":246,"field":238},{"key":248,"name":249,"field":238},{"key":251,"name":252,"field":238},{"key":254,"name":255,"field":238},{"key":257,"name":258,"field":238},{"key":260,"name":261,"field":238},{"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":135,"name":136,"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":242,"name":243,"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":242,"name":243,"field":312},{"key":248,"name":249,"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":242,"name":243,"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":242,"name":243,"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":242,"name":243,"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":242,"name":243,"field":385},{"key":392,"name_tr":393,"name_en":393,"sort":394,"specializations":395},"data-engineer","Data Engineer",10,[396],{"key":242,"name":243,"field":392},{"key":398,"name_tr":399,"name_en":400,"sort":401,"specializations":402},"game-dev","Oyun Geliştirme","Game Development",11,[403],{"key":242,"name":243,"field":398},{"key":405,"name_tr":406,"name_en":406,"sort":407,"specializations":408},"ml-engineer","ML Engineer",12,[409],{"key":242,"name":243,"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},[417,10],"tr",[419,420],"google","github",21750,true]