[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:mobile\u002Fmobile-networking-offline":4,"config":211},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-networking-offline","Mobile Networking Offline","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,79,82,85,88,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":8,"name":9,"count":11},{"key":80,"name":81,"count":11},"mobile-performance-battery","Mobile Performance Battery",{"key":83,"name":84,"count":11},"mobile-security-storage","Mobile Security Storage",{"key":86,"name":87,"count":11},"mobile-state-data","Mobile State Data",{"key":89,"name":90,"count":11},"mobile-testing-automation","Mobile Testing Automation",{"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,159,172,185,198],{"id":128,"topic":9,"difficulty":129,"body":130,"options":131,"correct_key":133,"explanation":144},"019f677d-2ba2-7a51-95ec-936157ae53f4",1,"In an \"offline-first\" mobile app architecture, what is treated as the source of truth for the UI?",[132,135,138,141],{"key":133,"text":134},"a","The local on-device store",{"key":136,"text":137},"b","The remote server, so the UI always waits for a network response before rendering",{"key":139,"text":140},"c","Whichever copy was fetched most recently, local or remote, decided per screen",{"key":142,"text":143},"d","An in-memory cache that is cleared and rebuilt every time the app is reopened","Offline-first means the UI binds to local storage; the network layer syncs data into that local store in the background, so the app is usable with or without connectivity.",{"id":146,"topic":9,"difficulty":147,"body":148,"options":149,"correct_key":136,"explanation":158},"019f677d-2ba3-7167-9d2a-d514daacc9b7",2,"What best describes an \"optimistic update\" when a user performs an action (e.g. marking an item as done) in a mobile app?",[150,152,154,156],{"key":133,"text":151},"The action is disabled until the server confirms it can succeed",{"key":136,"text":153},"The UI updates immediately, before the server confirms it",{"key":139,"text":155},"The app waits for a loading spinner to finish before showing any change",{"key":142,"text":157},"The action is queued silently and the user is told to check back tomorrow","Optimistic update assumes success and updates the UI right away, giving instant feedback; if the server later rejects the change, the app must roll it back.",{"id":160,"topic":9,"difficulty":147,"body":161,"options":162,"correct_key":139,"explanation":171},"019f677d-2ba3-7821-88b6-2b3aae84b532","A user taps \"like\" on a post; the UI instantly shows it as liked (optimistic update). The server request then fails with an error. What should the app do?",[163,165,167,169],{"key":133,"text":164},"Leave the UI as liked and quietly retry the request forever in the background",{"key":136,"text":166},"Crash the screen so the user notices something went wrong",{"key":139,"text":168},"Revert the UI and show an error",{"key":142,"text":170},"Ask the user to restart the app before showing any post content again","When the underlying request fails, the optimistic change must be rolled back to the last known-good state, and the user should be informed so they can retry or understand what happened.",{"id":173,"topic":9,"difficulty":147,"body":174,"options":175,"correct_key":142,"explanation":184},"019f677d-2ba3-7efd-8546-c3ff9be84ddd","The same note was edited offline on a phone and, separately, on a tablet while both were disconnected. When both come back online, a \"last-write-wins\" strategy is applied. What happens?",[176,178,180,182],{"key":133,"text":177},"Both edits are kept and shown to the user as two separate notes",{"key":136,"text":179},"The app refuses to sync until the user manually deletes one device's copy",{"key":139,"text":181},"The edit with the shorter text automatically wins because it is simpler",{"key":142,"text":183},"The most recent edit overwrites the other","Last-write-wins resolves conflicts by timestamp: whichever change was made later replaces the other, which means the earlier edit's content is silently discarded — a known tradeoff of this strategy.",{"id":186,"topic":9,"difficulty":129,"body":187,"options":188,"correct_key":133,"explanation":197},"019f677d-2ba4-76f5-9de6-794ca51e3358","What is the basic purpose of a \"retry\" mechanism for a failed network request in a mobile app?",[189,191,193,195],{"key":133,"text":190},"To automatically resend the request, since some failures are temporary",{"key":136,"text":192},"To permanently disable that feature for the user's account",{"key":139,"text":194},"To switch the app into offline mode and never contact the server again",{"key":142,"text":196},"To delete the local data related to that request so it does not get shown as stale","Many network failures are transient (dropped packet, momentary signal loss), so retrying the same request after a short wait often succeeds without any user action needed.",{"id":199,"topic":9,"difficulty":147,"body":200,"options":201,"correct_key":136,"explanation":210},"019f677d-2ba5-7235-a0c3-3b484dcde538","An app retries a failed request after fixed 1-second waits every time: 1s, 1s, 1s, 1s... What is the main downside of this fixed-delay retry compared to exponential backoff?",[202,204,206,208],{"key":133,"text":203},"It uses noticeably more device storage than exponential backoff would",{"key":136,"text":205},"If the server is struggling, clients keep hammering it at the same rate instead of easing off",{"key":139,"text":207},"It cannot be implemented without a third-party networking library",{"key":142,"text":209},"It requires the user to manually confirm every single retry attempt","A constant retry interval does not adapt to sustained trouble: if the server (or network path) is degraded, all clients keep pounding it at the same rate. Exponential backoff spaces retries out further apart over time, reducing load during an outage.",{"fields":212,"seniorities":388,"interview_shapes":389,"locales":394,"oauth":396,"question_count":399,"coach_enabled":400,"jd_match_enabled":400},[213,238,258,275,299,312,331,340,362,369,375,382],{"key":214,"name_tr":215,"name_en":215,"sort":129,"specializations":216},"backend","Backend",[217,220,223,226,229,232,235],{"key":218,"name":219,"field":214},"general","Genel",{"key":221,"name":222,"field":214},"go","Go",{"key":224,"name":225,"field":214},"python","Python",{"key":227,"name":228,"field":214},"java","Java",{"key":230,"name":231,"field":214},"csharp","C#\u002F.NET",{"key":233,"name":234,"field":214},"nodejs","Node.js",{"key":236,"name":237,"field":214},"php","PHP",{"key":239,"name_tr":240,"name_en":240,"sort":147,"specializations":241},"frontend","Frontend",[242,243,246,249,252,255],{"key":218,"name":219,"field":239},{"key":244,"name":245,"field":239},"javascript","JavaScript",{"key":247,"name":248,"field":239},"typescript","TypeScript",{"key":250,"name":251,"field":239},"react","React",{"key":253,"name":254,"field":239},"vue","Vue",{"key":256,"name":257,"field":239},"angular","Angular",{"key":259,"name_tr":260,"name_en":260,"sort":261,"specializations":262},"fullstack","Fullstack",3,[263,264,265,266,267,268,269,270,271,272,273,274],{"key":218,"name":219,"field":259},{"key":221,"name":222,"field":214},{"key":224,"name":225,"field":214},{"key":227,"name":228,"field":214},{"key":230,"name":231,"field":214},{"key":233,"name":234,"field":214},{"key":236,"name":237,"field":214},{"key":244,"name":245,"field":239},{"key":247,"name":248,"field":239},{"key":250,"name":251,"field":239},{"key":253,"name":254,"field":239},{"key":256,"name":257,"field":239},{"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":218,"name":219,"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":218,"name":219,"field":300},{"key":224,"name":225,"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":218,"name":219,"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":218,"name":219,"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":218,"name":219,"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":218,"name":219,"field":363},{"key":370,"name_tr":371,"name_en":371,"sort":372,"specializations":373},"data-engineer","Data Engineer",10,[374],{"key":218,"name":219,"field":370},{"key":376,"name_tr":377,"name_en":378,"sort":379,"specializations":380},"game-dev","Oyun Geliştirme","Game Development",11,[381],{"key":218,"name":219,"field":376},{"key":383,"name_tr":384,"name_en":384,"sort":385,"specializations":386},"ml-engineer","ML Engineer",12,[387],{"key":218,"name":219,"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]