[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:qa-test-automation\u002Fsdet":4,"config":169},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":7,"topic_name":7,"spec_key":8,"spec_name":9,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":79,"samples":84},"qa-test-automation","QA \u002F Test Automation","","sdet","SDET","en",450,1500,[14,15,16],"junior","mid","senior",[18,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76],{"key":19,"name":20,"count":21},"qa-api-testing","Qa Api Testing",75,{"key":23,"name":24,"count":21},"qa-automation-fundamentals","Qa Automation Fundamentals",{"key":26,"name":27,"count":21},"qa-ci-cd-testing","Qa Ci Cd Testing",{"key":29,"name":30,"count":21},"qa-defect-management","Qa Defect Management",{"key":32,"name":33,"count":21},"qa-exploratory-manual-testing","Qa Exploratory Manual Testing",{"key":35,"name":36,"count":21},"qa-performance-testing","Qa Performance Testing",{"key":38,"name":39,"count":21},"qa-test-case-design","Qa Test Case Design",{"key":41,"name":42,"count":21},"qa-test-strategy","Qa Test Strategy",{"key":44,"name":45,"count":21},"sd-ci-test-infrastructure","Sd Ci Test Infrastructure",{"key":47,"name":48,"count":21},"sd-code-quality-test-code","Sd Code Quality Test Code",{"key":50,"name":51,"count":21},"sd-contract-testing","Sd Contract Testing",{"key":53,"name":54,"count":21},"sd-test-data-management","Sd Test Data Management",{"key":56,"name":57,"count":21},"sd-test-doubles-mocking","Sd Test Doubles Mocking",{"key":59,"name":60,"count":21},"sd-test-framework-design","Sd Test Framework Design",{"key":62,"name":63,"count":21},"ta-cross-browser-parallel-execution","Ta Cross Browser Parallel Execution",{"key":65,"name":66,"count":21},"ta-framework-architecture-patterns","Ta Framework Architecture Patterns",{"key":68,"name":69,"count":21},"ta-locators-selectors-strategy","Ta Locators Selectors Strategy",{"key":71,"name":72,"count":21},"ta-selenium-cypress-playwright-tradeoffs","Ta Selenium Cypress Playwright Tradeoffs",{"key":74,"name":75,"count":21},"ta-synchronization-flaky-tests","Ta Synchronization Flaky Tests",{"key":77,"name":78,"count":21},"ta-visual-regression-reporting","Ta Visual Regression Reporting",[80,81],{"key":8,"name":9,"count":11},{"key":82,"name":83,"count":11},"test-automation","Test Automation",[85,103,116,130,143,156],{"id":86,"topic":45,"difficulty":87,"body":88,"options":89,"correct_key":97,"explanation":102},"019fb4ec-2963-799f-9863-4b7d36f1145e",1,"What is the main goal of distributing a test suite across multiple parallel workers (test sharding)?",[90,93,96,99],{"key":91,"text":92},"a","To make every individual test case use less CPU memory than before",{"key":94,"text":95},"b","To rewrite tests into fewer, larger test files so the codebase is easier to browse through",{"key":97,"text":98},"c","To divide the suite into subsets that execute simultaneously on different machines",{"key":100,"text":101},"d","To automatically detect and remove duplicate assertions from the suite","Test sharding splits a large suite into smaller subsets that run in parallel on separate workers\u002Fmachines; because they execute concurrently instead of sequentially, the total wall-clock time to finish the whole suite drops, even though total CPU time stays roughly the same.",{"id":104,"topic":45,"difficulty":87,"body":105,"options":106,"correct_key":91,"explanation":115},"019fb4ec-29e3-7e2a-b848-1f08c679d723","A test suite is split into 4 shards simply by dividing the test files into 4 equal-sized groups by file count. What is the main risk of this approach?",[107,109,111,113],{"key":91,"text":108},"Some shards may end up with far more total execution time, bounding the whole run",{"key":94,"text":110},"The test suite will report false positives for every test in the slowest shard",{"key":97,"text":112},"Equal-count sharding always exceeds the maximum number of allowed parallel workers",{"key":100,"text":114},"Splitting by count causes test files to be corrupted during the copy step","Test files rarely take the same amount of time to run. Splitting purely by count can leave one shard with several long-running tests while another finishes quickly, so overall wall-clock time is still dictated by whichever shard finishes last.",{"id":117,"topic":45,"difficulty":118,"body":119,"options":120,"correct_key":100,"explanation":129},"019fb4ec-29ee-766c-857f-519b06483e4e",2,"Compared to splitting a suite purely by test count, which approach better balances the total wall-clock duration of each shard?",[121,123,125,127],{"key":91,"text":122},"Assigning tests to shards in alphabetical order of their file names",{"key":94,"text":124},"Assigning tests to a new random shard on every single run",{"key":97,"text":126},"Assigning tests to shards based on the file size in bytes of the test source code, assuming larger files take longer to run",{"key":100,"text":128},"Assigning tests using historical execution-duration data collected from previous runs","Using recorded execution durations from previous runs lets the scheduler pack tests so each shard's summed duration is close to equal, which balances wall-clock time far better than count-based, alphabetical, random, or file-size-based assignment, none of which correlate reliably with actual runtime.",{"id":131,"topic":45,"difficulty":87,"body":132,"options":133,"correct_key":94,"explanation":142},"019fb4ec-29f3-7ac5-9fa5-a9561dc5266e","In the context of distributed test execution, what does 'makespan' refer to?",[134,136,138,140],{"key":91,"text":135},"The total number of individual test cases across all shards combined",{"key":94,"text":137},"The time taken until the last-finishing shard completes",{"key":97,"text":139},"The average CPU utilization percentage recorded across all worker machines",{"key":100,"text":141},"The number of test files that were skipped due to missing dependencies","Makespan is the completion time of the last shard to finish; because shards run in parallel, the overall run is only as fast as its slowest shard, so minimizing makespan (not simply equalizing test counts) is the real optimization goal of a sharding algorithm.",{"id":144,"topic":45,"difficulty":118,"body":145,"options":146,"correct_key":94,"explanation":155},"019fb4ec-29f5-71a5-ada0-1e900117854e","In a duration-based test sharding system, how is a brand-new test with no prior execution history typically handled?",[147,149,151,153],{"key":91,"text":148},"It is permanently excluded from shard assignment until a human manually assigns it",{"key":94,"text":150},"It gets an estimated duration, such as the mean of existing tests, until real data builds up",{"key":97,"text":152},"It is always placed alone in its own dedicated shard regardless of suite size",{"key":100,"text":154},"It is executed twice in the same run to generate history before the actual sharding decision is made","Since there is no timing data for a new test yet, most duration-based schedulers fall back to a default estimate (often the suite average or a configured default) so the test can still be packed into a shard sensibly; real data then accumulates for future runs.",{"id":157,"topic":45,"difficulty":118,"body":158,"options":159,"correct_key":100,"explanation":168},"019fb4ec-29f6-7a73-ba8f-c8a9e89b5454","A test-sharding scheduler sorts all tests by descending expected duration, then repeatedly assigns the next test to whichever shard currently has the smallest accumulated total duration. Which scheduling strategy does this describe?",[160,162,164,166],{"key":91,"text":161},"First-in-first-out (FIFO) queueing",{"key":94,"text":163},"Binary search over the sorted test list",{"key":97,"text":165},"Depth-first traversal of the test dependency graph",{"key":100,"text":167},"Greedy longest-processing-time-first bin packing","Sorting by descending duration and always assigning the next item to the least-loaded bin is the classic greedy 'longest processing time first' (LPT) heuristic for bin-packing\u002Fscheduling problems; it is a simple, effective way to balance shard durations without needing an optimal, much more expensive solution.",{"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":331,"name_en":6,"sort":332,"specializations":333},"QA \u002F Test Otomasyonu",9,[334,335,336],{"key":176,"name":177,"field":5},{"key":82,"name":83,"field":5},{"key":8,"name":9,"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},[363,10],"tr",[365,366],"google","github",22650,true]