[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:qa-test-automation\u002Fsd-ci-test-infrastructure":4,"config":169},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":76,"samples":84},"qa-test-automation","QA \u002F Test Otomasyonu","","sd-ci-test-infrastructure","Sd Ci Test Infrastructure","tr",75,1500,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,43,46,49,52,55,58,61,64,67,70,73],{"key":19,"name":20,"count":11},"qa-api-testing","Qa Api Testing",{"key":22,"name":23,"count":11},"qa-automation-fundamentals","Qa Automation Fundamentals",{"key":25,"name":26,"count":11},"qa-ci-cd-testing","Qa Ci Cd Testing",{"key":28,"name":29,"count":11},"qa-defect-management","Qa Defect Management",{"key":31,"name":32,"count":11},"qa-exploratory-manual-testing","Qa Exploratory Manual Testing",{"key":34,"name":35,"count":11},"qa-performance-testing","Qa Performance Testing",{"key":37,"name":38,"count":11},"qa-test-case-design","Qa Test Case Design",{"key":40,"name":41,"count":11},"qa-test-strategy","Qa Test Strategy",{"key":8,"name":9,"count":11},{"key":44,"name":45,"count":11},"sd-code-quality-test-code","Sd Code Quality Test Code",{"key":47,"name":48,"count":11},"sd-contract-testing","Sd Contract Testing",{"key":50,"name":51,"count":11},"sd-test-data-management","Sd Test Data Management",{"key":53,"name":54,"count":11},"sd-test-doubles-mocking","Sd Test Doubles Mocking",{"key":56,"name":57,"count":11},"sd-test-framework-design","Sd Test Framework Design",{"key":59,"name":60,"count":11},"ta-cross-browser-parallel-execution","Ta Cross Browser Parallel Execution",{"key":62,"name":63,"count":11},"ta-framework-architecture-patterns","Ta Framework Architecture Patterns",{"key":65,"name":66,"count":11},"ta-locators-selectors-strategy","Ta Locators Selectors Strategy",{"key":68,"name":69,"count":11},"ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs",{"key":71,"name":72,"count":11},"ta-synchronization-flaky-tests","Ta Synchronization Flaky Tests",{"key":74,"name":75,"count":11},"ta-visual-regression-reporting","Ta Visual Regression Reporting",[77,81],{"key":78,"name":79,"count":80},"sdet","SDET",450,{"key":82,"name":83,"count":80},"test-automation","Test Automation",[85,103,116,130,143,156],{"id":86,"topic":9,"difficulty":87,"body":88,"options":89,"correct_key":97,"explanation":102},"019fb4ec-2963-799f-9863-4b7d36f1145e",1,"Bir test suite'ini birden fazla paralel worker'a dağıtmanın (test sharding) temel amacı nedir?",[90,93,96,99],{"key":91,"text":92},"a","Her bir test case'in daha önce olduğundan daha az CPU belleği kullanmasını sağlamak",{"key":94,"text":95},"b","Testleri daha az sayıda ama daha büyük dosyalar haline getirerek kod tabanını taramayı kolaylaştırmak",{"key":97,"text":98},"c","Suite'i, farklı makinelerde eş zamanlı çalışan alt kümelere bölmek",{"key":100,"text":101},"d","Suite içindeki tekrarlayan assertion'ları otomatik tespit edip kaldırmak","Test sharding, büyük bir suite'i ayrı worker\u002Fmakinelerde paralel çalışan daha küçük alt kümelere böler; bunlar sıralı değil eş zamanlı çalıştığı için, toplam CPU süresi kabaca aynı kalsa da, suite'in tamamının bitmesi için gereken gerçek-zaman süresi düşer.",{"id":104,"topic":9,"difficulty":87,"body":105,"options":106,"correct_key":91,"explanation":115},"019fb4ec-29e3-7e2a-b848-1f08c679d723","Bir test suite'i, test dosyaları dosya sayısına göre 4 eşit büyüklükte gruba bölünerek 4 shard'a ayrılıyor. Bu yaklaşımın temel riski nedir?",[107,109,111,113],{"key":91,"text":108},"Bazı shard'lar diğerlerinden çok daha uzun toplam çalışma süresine sahip olabilir ve tüm koşuyu yavaşlatır",{"key":94,"text":110},"Test suite'i en yavaş shard'daki her test için yanlış-pozitif (false positive) raporlar",{"key":97,"text":112},"Sayıya göre eşit bölme her zaman izin verilen maksimum paralel worker sayısını aşar",{"key":100,"text":114},"Sayıya göre bölme, kopyalama adımında test dosyalarının bozulmasına neden olur","Test dosyaları nadiren aynı sürede çalışır. Sadece sayıya göre bölmek, bir shard'ı birkaç uzun süren testle, başka bir shard'ı ise hızlıca biten testlerle bırakabilir; bu yüzden toplam gerçek-zaman süresi hâlâ en son biten shard'a bağlıdır.",{"id":117,"topic":9,"difficulty":118,"body":119,"options":120,"correct_key":100,"explanation":129},"019fb4ec-29ee-766c-857f-519b06483e4e",2,"Bir suite'i sadece test sayısına göre bölmeye kıyasla, hangi yaklaşım her shard'ın toplam gerçek-zaman süresini daha iyi dengeler?",[121,123,125,127],{"key":91,"text":122},"Testleri dosya adlarının alfabetik sırasına göre shard'lara atamak",{"key":94,"text":124},"Testleri her koşuda yeni bir rastgele shard'a atamak",{"key":97,"text":126},"Testleri, daha büyük dosyaların daha uzun süreceği varsayımıyla test kaynak kodunun byte cinsinden dosya boyutuna göre shard'lara atamak",{"key":100,"text":128},"Testleri, önceki koşulardan toplanan geçmiş çalışma-süresi verisini kullanarak shard'lara atamak","Önceki koşulardan kaydedilen çalışma süreleri, zamanlayıcının her shard'ın toplam süresini birbirine yakın tutacak şekilde testleri paketlemesini sağlar; bu, sayıya, alfabeye ya da dosya boyutuna göre atamadan çok daha iyi dengeler — bunların hiçbiri gerçek çalışma süresiyle güvenilir şekilde ilişkili değildir.",{"id":131,"topic":9,"difficulty":87,"body":132,"options":133,"correct_key":94,"explanation":142},"019fb4ec-29f3-7ac5-9fa5-a9561dc5266e","Dağıtık test çalıştırma bağlamında 'makespan' neyi ifade eder?",[134,136,138,140],{"key":91,"text":135},"Tüm shard'lar birleştirildiğinde toplam bireysel test case sayısı",{"key":94,"text":137},"En son biten shard'ın tamamlanmasına kadar geçen süre",{"key":97,"text":139},"Tüm worker makinelerde kaydedilen ortalama CPU kullanım yüzdesi",{"key":100,"text":141},"Eksik bağımlılıklar nedeniyle atlanan test dosyalarının sayısı","Makespan, en son biten shard'ın tamamlanma süresidir; shard'lar paralel çalıştığı için genel koşu yalnızca en yavaş shard'ı kadar hızlıdır, bu yüzden bir sharding algoritmasının gerçek optimizasyon hedefi test sayılarını eşitlemek değil, makespan'i minimize etmektir.",{"id":144,"topic":9,"difficulty":118,"body":145,"options":146,"correct_key":94,"explanation":155},"019fb4ec-29f5-71a5-ada0-1e900117854e","Süre-tabanlı bir test sharding sisteminde, önceki çalışma geçmişi olmayan tamamen yeni bir test genellikle nasıl ele alınır?",[147,149,151,153],{"key":91,"text":148},"Bir kişi elle atayana kadar shard atamasından kalıcı olarak dışlanır",{"key":94,"text":150},"Mevcut testlerin ortalaması gibi tahmini bir süre atanır, gerçek veri birikene kadar",{"key":97,"text":152},"Suite büyüklüğünden bağımsız olarak her zaman kendine ait ayrı bir shard'a tek başına yerleştirilir",{"key":100,"text":154},"Gerçek sharding kararından önce geçmiş oluşturmak için aynı koşuda iki kez çalıştırılır","Yeni bir test için henüz zamanlama verisi olmadığından, çoğu süre-tabanlı zamanlayıcı varsayılan bir tahmine (genellikle suite ortalaması veya yapılandırılmış bir varsayılan) döner; böylece test yine de makul şekilde bir shard'a paketlenebilir, gerçek veri ise sonraki koşularda birikir.",{"id":157,"topic":9,"difficulty":118,"body":158,"options":159,"correct_key":100,"explanation":168},"019fb4ec-29f6-7a73-ba8f-c8a9e89b5454","Bir test-sharding zamanlayıcısı tüm testleri beklenen süreye göre azalan sırada sıralıyor, sonra sırayla bir sonraki testi o anda en düşük birikmiş toplam süreye sahip shard'a atıyor. Bu hangi zamanlama stratejisini tanımlar?",[160,162,164,166],{"key":91,"text":161},"İlk giren ilk çıkar (FIFO) kuyruklama",{"key":94,"text":163},"Sıralanmış test listesi üzerinde ikili arama (binary search)",{"key":97,"text":165},"Test bağımlılık grafiğinde derinlik-öncelikli (depth-first) gezinme",{"key":100,"text":167},"Açgözlü (greedy) en-uzun-işlem-süresi-önce bin-packing","Süreye göre azalan sırayla sıralayıp her seferinde bir sonraki öğeyi en az yüklü bin'e atamak, bin-packing\u002Fzamanlama problemleri için klasik açgözlü 'en uzun işlem süresi önce' (LPT) sezgiselidir; optimal ama çok daha pahalı bir çözüm gerektirmeden shard sürelerini dengelemenin basit, etkili bir yoludur.",{"fields":170,"seniorities":356,"interview_shapes":357,"locales":362,"oauth":364,"question_count":367,"coach_enabled":368,"jd_match_enabled":368},[171,196,216,233,257,270,289,308,330,337,343,350],{"key":172,"name_tr":173,"name_en":173,"sort":87,"specializations":174},"backend","Backend",[175,178,181,184,187,190,193],{"key":176,"name":177,"field":172},"general","Genel",{"key":179,"name":180,"field":172},"go","Go",{"key":182,"name":183,"field":172},"python","Python",{"key":185,"name":186,"field":172},"java","Java",{"key":188,"name":189,"field":172},"csharp","C#\u002F.NET",{"key":191,"name":192,"field":172},"nodejs","Node.js",{"key":194,"name":195,"field":172},"php","PHP",{"key":197,"name_tr":198,"name_en":198,"sort":118,"specializations":199},"frontend","Frontend",[200,201,204,207,210,213],{"key":176,"name":177,"field":197},{"key":202,"name":203,"field":197},"javascript","JavaScript",{"key":205,"name":206,"field":197},"typescript","TypeScript",{"key":208,"name":209,"field":197},"react","React",{"key":211,"name":212,"field":197},"vue","Vue",{"key":214,"name":215,"field":197},"angular","Angular",{"key":217,"name_tr":218,"name_en":218,"sort":219,"specializations":220},"fullstack","Fullstack",3,[221,222,223,224,225,226,227,228,229,230,231,232],{"key":176,"name":177,"field":217},{"key":179,"name":180,"field":172},{"key":182,"name":183,"field":172},{"key":185,"name":186,"field":172},{"key":188,"name":189,"field":172},{"key":191,"name":192,"field":172},{"key":194,"name":195,"field":172},{"key":202,"name":203,"field":197},{"key":205,"name":206,"field":197},{"key":208,"name":209,"field":197},{"key":211,"name":212,"field":197},{"key":214,"name":215,"field":197},{"key":234,"name_tr":235,"name_en":235,"sort":236,"specializations":237},"devops-cloud","DevOps \u002F Cloud",4,[238,239,242,245,248,251,254],{"key":176,"name":177,"field":234},{"key":240,"name":241,"field":234},"aws","AWS",{"key":243,"name":244,"field":234},"gcp","GCP",{"key":246,"name":247,"field":234},"azure","Azure",{"key":249,"name":250,"field":234},"kubernetes","Kubernetes",{"key":252,"name":253,"field":234},"terraform","Terraform",{"key":255,"name":256,"field":234},"linux","Linux",{"key":258,"name_tr":259,"name_en":259,"sort":260,"specializations":261},"ai-engineer","AI Engineer",5,[262,263,264,267],{"key":176,"name":177,"field":258},{"key":182,"name":183,"field":258},{"key":265,"name":266,"field":258},"llm-rag","LLM\u002FRAG",{"key":268,"name":269,"field":258},"mlops","MLOps",{"key":271,"name_tr":272,"name_en":273,"sort":274,"specializations":275},"database","Veritabanı","Database",6,[276,277,280,283,286],{"key":176,"name":177,"field":271},{"key":278,"name":279,"field":271},"postgresql","PostgreSQL",{"key":281,"name":282,"field":271},"mysql","MySQL",{"key":284,"name":285,"field":271},"mongodb","MongoDB",{"key":287,"name":288,"field":271},"redis","Redis",{"key":290,"name_tr":291,"name_en":292,"sort":293,"specializations":294},"mobile","Mobil","Mobile",7,[295,296,299,302,305],{"key":176,"name":177,"field":290},{"key":297,"name":298,"field":290},"ios-swift","iOS (Swift)",{"key":300,"name":301,"field":290},"android-kotlin","Android (Kotlin)",{"key":303,"name":304,"field":290},"flutter","Flutter",{"key":306,"name":307,"field":290},"react-native","React Native",{"key":309,"name_tr":310,"name_en":311,"sort":312,"specializations":313},"security","Güvenlik","Security",8,[314,315,318,321,324,327],{"key":176,"name":177,"field":309},{"key":316,"name":317,"field":309},"appsec","AppSec",{"key":319,"name":320,"field":309},"offensive-pentest","Offensive \u002F Pentest",{"key":322,"name":323,"field":309},"cloud-security","Cloud Security",{"key":325,"name":326,"field":309},"devsecops","DevSecOps",{"key":328,"name":329,"field":309},"blue-team-incident","Blue Team \u002F Incident",{"key":5,"name_tr":6,"name_en":331,"sort":332,"specializations":333},"QA \u002F Test Automation",9,[334,335,336],{"key":176,"name":177,"field":5},{"key":82,"name":83,"field":5},{"key":78,"name":79,"field":5},{"key":338,"name_tr":339,"name_en":339,"sort":340,"specializations":341},"data-engineer","Data Engineer",10,[342],{"key":176,"name":177,"field":338},{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"game-dev","Oyun Geliştirme","Game Development",11,[349],{"key":176,"name":177,"field":344},{"key":351,"name_tr":352,"name_en":352,"sort":353,"specializations":354},"ml-engineer","ML Engineer",12,[355],{"key":176,"name":177,"field":351},[14,15,16],{"junior":358,"mid":360,"senior":361},{"questions":359,"median_sec":3},20,{"questions":359,"median_sec":3},{"questions":359,"median_sec":3},[10,363],"en",[365,366],"google","github",22650,true]