[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:mobile\u002Fsenior":4,"config":211},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":113,"samples":127},"mobile","Mobil","senior","","tr",1468,2400,[13,14,7],"junior","mid",[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],{"key":17,"name":18,"count":19},"fl-dart-async-isolates","Fl Dart Async Isolates",75,{"key":21,"name":22,"count":19},"fl-dart-language-null-safety","Fl Dart Language Null Safety",{"key":24,"name":25,"count":19},"fl-flutter-persistence-storage","Fl Flutter Persistence Storage",{"key":27,"name":28,"count":19},"fl-flutter-platform-channels-lifecycle","Fl Flutter Platform Channels Lifecycle",{"key":30,"name":31,"count":19},"fl-flutter-rendering-widget-tree","Fl Flutter Rendering Widget Tree",{"key":33,"name":34,"count":19},"fl-flutter-state-management-widgets","Fl Flutter State Management Widgets",{"key":36,"name":37,"count":19},"ios-core-data-swiftdata-persistence","Ios Core Data Swiftdata Persistence",{"key":39,"name":40,"count":19},"ios-lifecycle-background-execution","Ios Lifecycle Background Execution",{"key":42,"name":43,"count":19},"ios-memory-management-arc","Ios Memory Management Arc",{"key":45,"name":46,"count":19},"ios-swift-concurrency-structured","Ios Swift Concurrency Structured",{"key":48,"name":49,"count":19},"ios-swift-type-system-optionals","Ios Swift Type System Optionals",{"key":51,"name":52,"count":19},"ios-swiftui-state-rendering","Ios Swiftui State Rendering",{"key":54,"name":55,"count":19},"kt-android-lifecycle-background-execution","Kt Android Lifecycle Background Execution",{"key":57,"name":58,"count":19},"kt-android-memory-context-leaks","Kt Android Memory Context Leaks",{"key":60,"name":61,"count":19},"kt-android-room-persistence","Kt Android Room Persistence",{"key":63,"name":64,"count":19},"kt-jetpack-compose-state-recomposition","Kt Jetpack Compose State Recomposition",{"key":66,"name":67,"count":19},"kt-kotlin-coroutines-flow","Kt Kotlin Coroutines Flow",{"key":69,"name":70,"count":19},"kt-kotlin-type-system-null-safety","Kt Kotlin Type System Null Safety",{"key":72,"name":73,"count":19},"mobile-distribution-ci","Mobile Distribution Ci",{"key":75,"name":76,"count":19},"mobile-navigation","Mobile Navigation",{"key":78,"name":79,"count":19},"mobile-networking-offline","Mobile Networking Offline",{"key":81,"name":82,"count":19},"mobile-performance-battery","Mobile Performance Battery",{"key":84,"name":85,"count":19},"mobile-security-storage","Mobile Security Storage",{"key":87,"name":88,"count":19},"mobile-state-data","Mobile State Data",{"key":90,"name":91,"count":19},"mobile-testing-automation","Mobile Testing Automation",{"key":93,"name":94,"count":19},"mobile-ui-lifecycle","Mobile Ui Lifecycle",{"key":96,"name":97,"count":19},"rn-javascript-typescript-fundamentals","Rn Javascript Typescript Fundamentals",{"key":99,"name":100,"count":19},"rn-native-bridge-modules","Rn Native Bridge Modules",{"key":102,"name":103,"count":19},"rn-navigation-lifecycle","Rn Navigation Lifecycle",{"key":105,"name":106,"count":19},"rn-networking-persistence-offline","Rn Networking Persistence Offline",{"key":108,"name":109,"count":19},"rn-performance-rendering","Rn Performance Rendering",{"key":111,"name":112,"count":19},"rn-react-hooks-state-management","Rn React Hooks State Management",[114,118,121,124],{"key":115,"name":116,"count":117},"android-kotlin","Android (Kotlin)",450,{"key":119,"name":120,"count":117},"flutter","Flutter",{"key":122,"name":123,"count":117},"ios-swift","iOS (Swift)",{"key":125,"name":126,"count":117},"react-native","React Native",[128,146,159,172,185,198],{"id":129,"topic":73,"difficulty":130,"body":131,"options":132,"correct_key":137,"explanation":145},"019f677d-2b73-71a2-9bce-dedde87a4bde",3,"Bir rollout konfigürasyonu şu şekilde ayarlanmış:\n```\nrelease:\n  version: 4.2.0\n  rollout_percentage: 10\n  halt_on_crash_rate_increase: true\n```\nUygulamanın 200.000 aktif kullanıcısı varsa, rollout bu aşamadayken yaklaşık kaç kullanıcı 4.2.0 sürümünü almış olur?",[133,136,139,142],{"key":134,"text":135},"a","Yaklaşık 2.000 kullanıcı.",{"key":137,"text":138},"b","Yaklaşık 20.000 kullanıcı.",{"key":140,"text":141},"c","Yaklaşık 180.000 kullanıcı.",{"key":143,"text":144},"d","200.000 kullanıcının tamamı, çünkü rollout yüzdesi sadece güncelleme görünürlük zamanlamasını etkiler, toplamı değil.","200.000'in %10'u 20.000'dir. Rollout yüzdesi, bu aşamada nüfusun ne kadarının yeni sürümü aldığını doğrudan kontrol eder, sadece görünürlük zamanlamasını değil.",{"id":147,"topic":73,"difficulty":130,"body":148,"options":149,"correct_key":134,"explanation":158},"019f677d-2b76-7927-ae5d-1b3e1195d0bb","Bir backend ekibi, artık tüm istemcilerin yeni sürümü kullandığına inanarak bir API yanıtından bir alanı kaldırıyor. Bir hafta sonra, eski bir uygulama sürümündeki kullanıcılar boş ekran bildirmeye başlıyor. En olası atlanan şey neydi?",[150,152,154,156],{"key":134,"text":151},"Bazı kullanıcılar henüz güncellememişti ve eski uygulama sürümü hâlâ kaldırılan alana bağımlıydı.",{"key":137,"text":153},"Mağaza güncellemeyi reddetti, bu yüzden hiçbir kullanıcı yeni istemciyi hiç almadı.",{"key":140,"text":155},"Kaldırılan alanın çökmeyle ilgisi yoktu, gerçek neden bir signing sertifikası uyuşmazlığıydı.",{"key":143,"text":157},"Boş ekran, kademeli rollout'un duraklatılmasından kaynaklanıyor.","Senaryodaki kök neden geriye dönük uyumluluk boşluğudur: bazı kullanıcılar henüz güncellememişti ve eski istemcileri hâlâ kaldırılan alana bağımlıydı. Senaryoda mağaza reddi, signing veya duraklatılmış rollout'a işaret eden hiçbir şey yok.",{"id":160,"topic":73,"difficulty":130,"body":161,"options":162,"correct_key":143,"explanation":171},"019f677d-2b78-7822-ab04-adfb18e7e983","İki sürüm karşılaştırılıyor: A sürümü 100 session üzerinde %0.3 çökme oranına sahip, B sürümü 50.000 session üzerinde %0.5 çökme oranına sahip. Bir ekip hangi çökme oranının bir rollback kararı için daha güvenilir kanıt olduğuna karar veriyor. Hangi akıl yürütme doğru?",[163,165,167,169],{"key":134,"text":164},"A sürümünün oranı daha düşük, bu yüzden örneklem büyüklüğünden bağımsız olarak her zaman daha güvenli sürüm olmalı.",{"key":137,"text":166},"İki sürümün de aynı pazarlama harcaması olmadıkça hiçbir oran anlamlı değildir.",{"key":140,"text":168},"Session'lar farklı günlerde toplandıysa çökme oranı sürümler arasında karşılaştırılamaz.",{"key":143,"text":170},"B sürümünün daha büyük örneklemi, oranı istatistiksel olarak daha güvenilir kılıyor.","Sadece 100 session ile A sürümünün oranı istatistiksel olarak gürültülüdür ve birkaç çökme daha ile büyük ölçüde değişebilir; B sürümünün 50.000 session'dan gelen oranı, yüzdesi daha yüksek olsa da çok daha kararlı bir tahmindir. Pazarlama harcaması ve takvim günü bu karşılaştırmayla ilgisizdir.",{"id":173,"topic":73,"difficulty":130,"body":174,"options":175,"correct_key":140,"explanation":184},"019f677d-2b81-7808-9508-6a94b5cd1c5c","Bir gönderim şu inceleme notuyla reddediliyor: 'Metadata ekran görüntüleri mevcut uygulama işlevselliğini yansıtmıyor.' Ekibin sürüm kontrol listesi şunları içeriyor:\n```\n[x] Otomatik testleri çalıştır\n[x] Code signing'i doğrula\n[ ] Arayüz değişikliklerinden sonra mağaza listesi varlıklarını güncelle\n[x] 24 saatlik çökmesiz oranı kontrol et\n```\nHangi kontrol listesi eksikliği bu spesifik reddedilme nedenini en iyi açıklar?",[176,178,180,182],{"key":134,"text":177},"Otomatik testler maddesi, çünkü başarısız testler tam olarak bu reddedilme mesajını üretir.",{"key":137,"text":179},"Code signing maddesi, çünkü süresi dolmuş imzalar tam olarak bu reddedilme mesajını üretir.",{"key":140,"text":181},"Arayüz değişikliklerinden sonra mağaza listesi varlıklarını güncelleme maddesinin işaretlenmemiş olması.",{"key":143,"text":183},"Çökmesiz oran maddesi, çünkü çökme izleme bu listede kontrol edilmiş ama liste içeriğiyle ilgisizdir.","Reddedilme özellikle ekran görüntülerinin mevcut işlevsellikle eşleşmemesiyle ilgili — bu doğrudan işaretlenmemiş 'mağaza listesi varlıklarını güncelle' maddesine karşılık gelir. Test başarısızlıkları ve signing sorunları tamamen farklı reddedilme nedenleri üretir; çökmesiz oran maddesi liste içeriğiyle ilgisiz olsa da bu kontrol listesinde zaten tamamlanmış (işaretlenmiş) durumda.",{"id":186,"topic":73,"difficulty":130,"body":187,"options":188,"correct_key":134,"explanation":197},"019f677d-2b83-733e-8586-b31b313d5dc4","Bir ekibin yayın pipeline'ı uçtan uca otomatik, ama bir yayın, kullanılan signing anahtarının önceki tüm yayınlarda kullanılanla eşleşmemesi nedeniyle yayınlanmadan hemen önce başarısız oluyor. Bu uyuşmayan build yine de zorla yayınlansaydı en olası sonuç ne olurdu?",[189,191,193,195],{"key":134,"text":190},"Cihazlar, signing kaynağı artık eşleşmediği için güncellemeyi reddedebilir.",{"key":137,"text":192},"Uygulama, mağaza tarafından orijinal anahtar kullanılarak otomatik olarak yeniden imzalanır.",{"key":140,"text":194},"Sadece uygulamanın ikonu doğru görüntülenemez.",{"key":143,"text":196},"Kademeli rollout yüzdesi otomatik olarak %100'e sıfırlanır.","Mevcut cihazlarda güncelleme kurulumu tipik olarak önceki yayınlarla aynı signing kimliğini gerektirir; uyuşmayan bir anahtar bu güven zincirini kırar ve cihazlar güncellemeyi reddedebilir. Mağazalar build'leri orijinal anahtarla otomatik yeniden imzalamaz; uyuşmazlık kozmetik bir ikon sorunuyla veya rollout yüzdesi sıfırlanmasıyla sınırlı değildir.",{"id":199,"topic":76,"difficulty":130,"body":200,"options":201,"correct_key":134,"explanation":210},"019f677d-2b8d-7114-a071-364a07059325","Bir deep link, uygulamanın hiyerarşisinde normalde üç seviye derinlikte olan bir ekrana işaret ediyor (Ana Sayfa → Kategori → Ürün). Uygulama deep link üzerinden doğrudan Ürün'e açıldığında back stack ile ne yapmalı?",[202,204,206,208],{"key":134,"text":203},"Üst ekranları stack'e sentezleyerek eklemeli, doğal hiyerarşiyle eşleşecek şekilde",{"key":137,"text":205},"Yalnızca Ürün ekranını göstermeli ve o oturum için geri kontrolünü tamamen devre dışı bırakmalı",{"key":140,"text":207},"Hedef ekranın derinliğini yok saymalı ve her zaman uygulamanın varsayılan ana ekranını açmalı",{"key":143,"text":209},"Ürün'ü boş bir stack ile açmalı, böylece ilk geri basışında uygulamadan çıkılır","Geri navigasyonunu tutarlı tutmak için uygulama, kullanıcı oraya normal şekilde gitmiş gibi stack'i kurmalıdır (önce Ana Sayfa, sonra Kategori, sonra Ürün); böylece geri basmak beklenmedik çıkış yerine hiyerarşide yukarı adımlar. (b) temel bir navigasyon imkanını ortadan kaldırır; (c) deep link'in amacını boşa çıkarır; (d) ilk geri basışında rahatsız edici bir çıkışa yol açar.",{"fields":212,"seniorities":389,"interview_shapes":390,"locales":395,"oauth":397,"question_count":400,"coach_enabled":401,"jd_match_enabled":401},[213,239,260,276,300,313,332,341,363,370,376,383],{"key":214,"name_tr":215,"name_en":215,"sort":216,"specializations":217},"backend","Backend",1,[218,221,224,227,230,233,236],{"key":219,"name":220,"field":214},"general","Genel",{"key":222,"name":223,"field":214},"go","Go",{"key":225,"name":226,"field":214},"python","Python",{"key":228,"name":229,"field":214},"java","Java",{"key":231,"name":232,"field":214},"csharp","C#\u002F.NET",{"key":234,"name":235,"field":214},"nodejs","Node.js",{"key":237,"name":238,"field":214},"php","PHP",{"key":240,"name_tr":241,"name_en":241,"sort":242,"specializations":243},"frontend","Frontend",2,[244,245,248,251,254,257],{"key":219,"name":220,"field":240},{"key":246,"name":247,"field":240},"javascript","JavaScript",{"key":249,"name":250,"field":240},"typescript","TypeScript",{"key":252,"name":253,"field":240},"react","React",{"key":255,"name":256,"field":240},"vue","Vue",{"key":258,"name":259,"field":240},"angular","Angular",{"key":261,"name_tr":262,"name_en":262,"sort":130,"specializations":263},"fullstack","Fullstack",[264,265,266,267,268,269,270,271,272,273,274,275],{"key":219,"name":220,"field":261},{"key":222,"name":223,"field":214},{"key":225,"name":226,"field":214},{"key":228,"name":229,"field":214},{"key":231,"name":232,"field":214},{"key":234,"name":235,"field":214},{"key":237,"name":238,"field":214},{"key":246,"name":247,"field":240},{"key":249,"name":250,"field":240},{"key":252,"name":253,"field":240},{"key":255,"name":256,"field":240},{"key":258,"name":259,"field":240},{"key":277,"name_tr":278,"name_en":278,"sort":279,"specializations":280},"devops-cloud","DevOps \u002F Cloud",4,[281,282,285,288,291,294,297],{"key":219,"name":220,"field":277},{"key":283,"name":284,"field":277},"aws","AWS",{"key":286,"name":287,"field":277},"gcp","GCP",{"key":289,"name":290,"field":277},"azure","Azure",{"key":292,"name":293,"field":277},"kubernetes","Kubernetes",{"key":295,"name":296,"field":277},"terraform","Terraform",{"key":298,"name":299,"field":277},"linux","Linux",{"key":301,"name_tr":302,"name_en":302,"sort":303,"specializations":304},"ai-engineer","AI Engineer",5,[305,306,307,310],{"key":219,"name":220,"field":301},{"key":225,"name":226,"field":301},{"key":308,"name":309,"field":301},"llm-rag","LLM\u002FRAG",{"key":311,"name":312,"field":301},"mlops","MLOps",{"key":314,"name_tr":315,"name_en":316,"sort":317,"specializations":318},"database","Veritabanı","Database",6,[319,320,323,326,329],{"key":219,"name":220,"field":314},{"key":321,"name":322,"field":314},"postgresql","PostgreSQL",{"key":324,"name":325,"field":314},"mysql","MySQL",{"key":327,"name":328,"field":314},"mongodb","MongoDB",{"key":330,"name":331,"field":314},"redis","Redis",{"key":5,"name_tr":6,"name_en":333,"sort":334,"specializations":335},"Mobile",7,[336,337,338,339,340],{"key":219,"name":220,"field":5},{"key":122,"name":123,"field":5},{"key":115,"name":116,"field":5},{"key":119,"name":120,"field":5},{"key":125,"name":126,"field":5},{"key":342,"name_tr":343,"name_en":344,"sort":345,"specializations":346},"security","Güvenlik","Security",8,[347,348,351,354,357,360],{"key":219,"name":220,"field":342},{"key":349,"name":350,"field":342},"appsec","AppSec",{"key":352,"name":353,"field":342},"offensive-pentest","Offensive \u002F Pentest",{"key":355,"name":356,"field":342},"cloud-security","Cloud Security",{"key":358,"name":359,"field":342},"devsecops","DevSecOps",{"key":361,"name":362,"field":342},"blue-team-incident","Blue Team \u002F Incident",{"key":364,"name_tr":365,"name_en":366,"sort":367,"specializations":368},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[369],{"key":219,"name":220,"field":364},{"key":371,"name_tr":372,"name_en":372,"sort":373,"specializations":374},"data-engineer","Data Engineer",10,[375],{"key":219,"name":220,"field":371},{"key":377,"name_tr":378,"name_en":379,"sort":380,"specializations":381},"game-dev","Oyun Geliştirme","Game Development",11,[382],{"key":219,"name":220,"field":377},{"key":384,"name_tr":385,"name_en":385,"sort":386,"specializations":387},"ml-engineer","ML Engineer",12,[388],{"key":219,"name":220,"field":384},[13,14,7],{"junior":391,"mid":393,"senior":394},{"questions":392,"median_sec":3},20,{"questions":392,"median_sec":3},{"questions":392,"median_sec":3},[9,396],"en",[398,399],"google","github",21750,true]