[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:mobile\u002Fmobile-testing-automation":4,"config":212},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":112,"samples":126},"mobile","Mobile","","mobile-testing-automation","Mobile Testing Automation","en",75,2400,[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,91,94,97,100,103,106,109],{"key":19,"name":20,"count":11},"fl-dart-async-isolates","Fl Dart Async Isolates",{"key":22,"name":23,"count":11},"fl-dart-language-null-safety","Fl Dart Language Null Safety",{"key":25,"name":26,"count":11},"fl-flutter-persistence-storage","Fl Flutter Persistence Storage",{"key":28,"name":29,"count":11},"fl-flutter-platform-channels-lifecycle","Fl Flutter Platform Channels Lifecycle",{"key":31,"name":32,"count":11},"fl-flutter-rendering-widget-tree","Fl Flutter Rendering Widget Tree",{"key":34,"name":35,"count":11},"fl-flutter-state-management-widgets","Fl Flutter State Management Widgets",{"key":37,"name":38,"count":11},"ios-core-data-swiftdata-persistence","Ios Core Data Swiftdata Persistence",{"key":40,"name":41,"count":11},"ios-lifecycle-background-execution","Ios Lifecycle Background Execution",{"key":43,"name":44,"count":11},"ios-memory-management-arc","Ios Memory Management Arc",{"key":46,"name":47,"count":11},"ios-swift-concurrency-structured","Ios Swift Concurrency Structured",{"key":49,"name":50,"count":11},"ios-swift-type-system-optionals","Ios Swift Type System Optionals",{"key":52,"name":53,"count":11},"ios-swiftui-state-rendering","Ios Swiftui State Rendering",{"key":55,"name":56,"count":11},"kt-android-lifecycle-background-execution","Kt Android Lifecycle Background Execution",{"key":58,"name":59,"count":11},"kt-android-memory-context-leaks","Kt Android Memory Context Leaks",{"key":61,"name":62,"count":11},"kt-android-room-persistence","Kt Android Room Persistence",{"key":64,"name":65,"count":11},"kt-jetpack-compose-state-recomposition","Kt Jetpack Compose State Recomposition",{"key":67,"name":68,"count":11},"kt-kotlin-coroutines-flow","Kt Kotlin Coroutines Flow",{"key":70,"name":71,"count":11},"kt-kotlin-type-system-null-safety","Kt Kotlin Type System Null Safety",{"key":73,"name":74,"count":11},"mobile-distribution-ci","Mobile Distribution Ci",{"key":76,"name":77,"count":11},"mobile-navigation","Mobile Navigation",{"key":79,"name":80,"count":11},"mobile-networking-offline","Mobile Networking Offline",{"key":82,"name":83,"count":11},"mobile-performance-battery","Mobile Performance Battery",{"key":85,"name":86,"count":11},"mobile-security-storage","Mobile Security Storage",{"key":88,"name":89,"count":11},"mobile-state-data","Mobile State Data",{"key":8,"name":9,"count":11},{"key":92,"name":93,"count":11},"mobile-ui-lifecycle","Mobile Ui Lifecycle",{"key":95,"name":96,"count":11},"rn-javascript-typescript-fundamentals","Rn Javascript Typescript Fundamentals",{"key":98,"name":99,"count":11},"rn-native-bridge-modules","Rn Native Bridge Modules",{"key":101,"name":102,"count":11},"rn-navigation-lifecycle","Rn Navigation Lifecycle",{"key":104,"name":105,"count":11},"rn-networking-persistence-offline","Rn Networking Persistence Offline",{"key":107,"name":108,"count":11},"rn-performance-rendering","Rn Performance Rendering",{"key":110,"name":111,"count":11},"rn-react-hooks-state-management","Rn React Hooks State Management",[113,117,120,123],{"key":114,"name":115,"count":116},"android-kotlin","Android (Kotlin)",450,{"key":118,"name":119,"count":116},"flutter","Flutter",{"key":121,"name":122,"count":116},"ios-swift","iOS (Swift)",{"key":124,"name":125,"count":116},"react-native","React Native",[127,145,158,172,185,198],{"id":128,"topic":9,"difficulty":129,"body":130,"options":131,"correct_key":136,"explanation":144},"019f677d-2c02-7510-a0a5-80108be969d6",2,"In the mobile test pyramid, why do unit tests make up the largest share of the suite?",[132,135,138,141],{"key":133,"text":134},"a","They are the only tests that run on a device",{"key":136,"text":137},"b","Fast and isolated, so feedback is quick",{"key":139,"text":140},"c","They verify UI rendering automatically",{"key":142,"text":143},"d","They need no update when the UI changes","Unit tests exercise small, isolated logic without a UI or device, so they run in milliseconds and rarely break for unrelated reasons. That speed and stability is why the pyramid puts many of them at the base.",{"id":146,"topic":9,"difficulty":129,"body":147,"options":148,"correct_key":139,"explanation":157},"019f677d-2c03-74c3-af10-e8b69f644193","Why are full UI (end-to-end) tests generally more expensive and fragile than unit tests?",[149,151,153,155],{"key":133,"text":150},"They cannot be automated at all",{"key":136,"text":152},"They only check compile-time types",{"key":139,"text":154},"Whole stack runs, more can break",{"key":142,"text":156},"They can only ever test one screen","A UI test drives the real app through rendering, animations, navigation, and often network or device state. Every one of those layers is a potential source of failure and added runtime, which makes UI tests slower and more likely to break for unrelated reasons.",{"id":159,"topic":9,"difficulty":160,"body":161,"options":162,"correct_key":133,"explanation":171},"019f677d-2c03-7f12-931d-b15fa0b2169b",1,"What is an integration test, positioned between unit and UI tests in the pyramid?",[163,165,167,169],{"key":133,"text":164},"A few real parts working together, no full UI",{"key":136,"text":166},"A single pure function checked in isolation",{"key":139,"text":168},"Only runs on a CI server, never locally",{"key":142,"text":170},"Replaces the need for manual QA","Integration tests sit in the middle: they combine a handful of real collaborating units (like a view-model talking to a repository) to check the seams between them, but avoid driving the actual rendered UI, keeping them faster and more stable than full UI tests.",{"id":173,"topic":9,"difficulty":129,"body":174,"options":175,"correct_key":139,"explanation":184},"019f677d-2c04-7752-be6e-32e7721836e1","A UI test taps a button right after load, but the tap handler wires up only after an animation ends. The test intermittently fails. Most likely cause?",[176,178,180,182],{"key":133,"text":177},"The framework cannot tap buttons",{"key":136,"text":179},"The screen has a memory leak",{"key":139,"text":181},"The test raced the animation, not readiness",{"key":142,"text":183},"The button has the wrong color","Animations and other async UI transitions introduce timing variance. If the test taps blindly without confirming the screen (and its handlers) are actually ready, it will sometimes race ahead of the app and fail — a classic flaky-test root cause.",{"id":186,"topic":9,"difficulty":129,"body":187,"options":188,"correct_key":136,"explanation":197},"019f677d-2c04-7eff-bf82-2fbcba8c9187","What does it mean to mock a network dependency in a mobile test?",[189,191,193,195],{"key":133,"text":190},"Disable the test whenever there is no network",{"key":136,"text":192},"Swap the real call for a fake response",{"key":139,"text":194},"Run the test twice to average out latency",{"key":142,"text":196},"Bake the server's real response into the binary","Mocking a network dependency means substituting the real call with a stand-in that returns a predetermined response (success, error, empty, slow, etc.). This removes reliance on an external server's availability and lets the test control exactly what scenario it exercises.",{"id":199,"topic":9,"difficulty":200,"body":201,"options":202,"correct_key":133,"explanation":211},"019f677d-2c05-761e-aca2-20797357f119",3,"A profile-fetch test hits the real backend. When the backend is slow, unrelated tests start failing too. Best fix?",[203,205,207,209],{"key":133,"text":204},"Mock the network layer for that test",{"key":136,"text":206},"Delete the failing tests",{"key":139,"text":208},"Raise the timeout to 10 minutes",{"key":142,"text":210},"Only run the suite at night","The root problem is a hard dependency on a live, external system inside a test that is meant to check the app's own logic. Mocking the network call isolates the test from backend availability and turns an unreliable external dependency into a controlled, repeatable input.",{"fields":213,"seniorities":388,"interview_shapes":389,"locales":394,"oauth":396,"question_count":399,"coach_enabled":400,"jd_match_enabled":400},[214,239,259,275,299,312,331,340,362,369,375,382],{"key":215,"name_tr":216,"name_en":216,"sort":160,"specializations":217},"backend","Backend",[218,221,224,227,230,233,236],{"key":219,"name":220,"field":215},"general","Genel",{"key":222,"name":223,"field":215},"go","Go",{"key":225,"name":226,"field":215},"python","Python",{"key":228,"name":229,"field":215},"java","Java",{"key":231,"name":232,"field":215},"csharp","C#\u002F.NET",{"key":234,"name":235,"field":215},"nodejs","Node.js",{"key":237,"name":238,"field":215},"php","PHP",{"key":240,"name_tr":241,"name_en":241,"sort":129,"specializations":242},"frontend","Frontend",[243,244,247,250,253,256],{"key":219,"name":220,"field":240},{"key":245,"name":246,"field":240},"javascript","JavaScript",{"key":248,"name":249,"field":240},"typescript","TypeScript",{"key":251,"name":252,"field":240},"react","React",{"key":254,"name":255,"field":240},"vue","Vue",{"key":257,"name":258,"field":240},"angular","Angular",{"key":260,"name_tr":261,"name_en":261,"sort":200,"specializations":262},"fullstack","Fullstack",[263,264,265,266,267,268,269,270,271,272,273,274],{"key":219,"name":220,"field":260},{"key":222,"name":223,"field":215},{"key":225,"name":226,"field":215},{"key":228,"name":229,"field":215},{"key":231,"name":232,"field":215},{"key":234,"name":235,"field":215},{"key":237,"name":238,"field":215},{"key":245,"name":246,"field":240},{"key":248,"name":249,"field":240},{"key":251,"name":252,"field":240},{"key":254,"name":255,"field":240},{"key":257,"name":258,"field":240},{"key":276,"name_tr":277,"name_en":277,"sort":278,"specializations":279},"devops-cloud","DevOps \u002F Cloud",4,[280,281,284,287,290,293,296],{"key":219,"name":220,"field":276},{"key":282,"name":283,"field":276},"aws","AWS",{"key":285,"name":286,"field":276},"gcp","GCP",{"key":288,"name":289,"field":276},"azure","Azure",{"key":291,"name":292,"field":276},"kubernetes","Kubernetes",{"key":294,"name":295,"field":276},"terraform","Terraform",{"key":297,"name":298,"field":276},"linux","Linux",{"key":300,"name_tr":301,"name_en":301,"sort":302,"specializations":303},"ai-engineer","AI Engineer",5,[304,305,306,309],{"key":219,"name":220,"field":300},{"key":225,"name":226,"field":300},{"key":307,"name":308,"field":300},"llm-rag","LLM\u002FRAG",{"key":310,"name":311,"field":300},"mlops","MLOps",{"key":313,"name_tr":314,"name_en":315,"sort":316,"specializations":317},"database","Veritabanı","Database",6,[318,319,322,325,328],{"key":219,"name":220,"field":313},{"key":320,"name":321,"field":313},"postgresql","PostgreSQL",{"key":323,"name":324,"field":313},"mysql","MySQL",{"key":326,"name":327,"field":313},"mongodb","MongoDB",{"key":329,"name":330,"field":313},"redis","Redis",{"key":5,"name_tr":332,"name_en":6,"sort":333,"specializations":334},"Mobil",7,[335,336,337,338,339],{"key":219,"name":220,"field":5},{"key":121,"name":122,"field":5},{"key":114,"name":115,"field":5},{"key":118,"name":119,"field":5},{"key":124,"name":125,"field":5},{"key":341,"name_tr":342,"name_en":343,"sort":344,"specializations":345},"security","Güvenlik","Security",8,[346,347,350,353,356,359],{"key":219,"name":220,"field":341},{"key":348,"name":349,"field":341},"appsec","AppSec",{"key":351,"name":352,"field":341},"offensive-pentest","Offensive \u002F Pentest",{"key":354,"name":355,"field":341},"cloud-security","Cloud Security",{"key":357,"name":358,"field":341},"devsecops","DevSecOps",{"key":360,"name":361,"field":341},"blue-team-incident","Blue Team \u002F Incident",{"key":363,"name_tr":364,"name_en":365,"sort":366,"specializations":367},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[368],{"key":219,"name":220,"field":363},{"key":370,"name_tr":371,"name_en":371,"sort":372,"specializations":373},"data-engineer","Data Engineer",10,[374],{"key":219,"name":220,"field":370},{"key":376,"name_tr":377,"name_en":378,"sort":379,"specializations":380},"game-dev","Oyun Geliştirme","Game Development",11,[381],{"key":219,"name":220,"field":376},{"key":383,"name_tr":384,"name_en":384,"sort":385,"specializations":386},"ml-engineer","ML Engineer",12,[387],{"key":219,"name":220,"field":383},[14,15,16],{"junior":390,"mid":392,"senior":393},{"questions":391,"median_sec":3},20,{"questions":391,"median_sec":3},{"questions":391,"median_sec":3},[395,10],"tr",[397,398],"google","github",21750,true]