[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:devops-cloud\u002Fmid":4,"config":256},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":152,"samples":172},"devops-cloud","DevOps \u002F Cloud","mid","","en",2744,3375,[13,7,14],"junior","senior",[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,113,116,119,122,125,128,131,134,137,140,143,146,149],{"key":17,"name":18,"count":19},"aws-compute-ec2-lambda","Aws Compute Ec2 Lambda",75,{"key":21,"name":22,"count":19},"aws-databases-rds-dynamodb","Aws Databases Rds Dynamodb",{"key":24,"name":25,"count":19},"aws-iam-security","Aws Iam Security",{"key":27,"name":28,"count":19},"aws-messaging-eventing","Aws Messaging Eventing",{"key":30,"name":31,"count":19},"aws-networking-vpc","Aws Networking Vpc",{"key":33,"name":34,"count":19},"aws-storage-s3-ebs","Aws Storage S3 Ebs",{"key":36,"name":37,"count":19},"azure-compute-vm-appservice","Azure Compute Vm Appservice",{"key":39,"name":40,"count":19},"azure-databases-sql-cosmosdb","Azure Databases Sql Cosmosdb",{"key":42,"name":43,"count":19},"azure-iam-security","Azure Iam Security",{"key":45,"name":46,"count":19},"azure-messaging-eventing","Azure Messaging Eventing",{"key":48,"name":49,"count":19},"azure-networking-vnet","Azure Networking Vnet",{"key":51,"name":52,"count":19},"azure-storage-blob-managed-disk","Azure Storage Blob Managed Disk",{"key":54,"name":55,"count":19},"ci-cd-pipelines","Ci Cd Pipelines",{"key":57,"name":58,"count":19},"cloud-architecture-scaling","Cloud Architecture Scaling",{"key":60,"name":61,"count":19},"containers-orchestration","Containers Orchestration",{"key":63,"name":64,"count":19},"deployment-release-strategies","Deployment Release Strategies",{"key":66,"name":67,"count":19},"gcp-compute-gce-cloudrun","Gcp Compute Gce Cloudrun",{"key":69,"name":70,"count":19},"gcp-databases-cloudsql-spanner-firestore","Gcp Databases Cloudsql Spanner Firestore",{"key":72,"name":73,"count":19},"gcp-iam-security","Gcp Iam Security",{"key":75,"name":76,"count":19},"gcp-messaging-eventing","Gcp Messaging Eventing",{"key":78,"name":79,"count":19},"gcp-networking-vpc","Gcp Networking Vpc",{"key":81,"name":82,"count":19},"gcp-storage-gcs-persistent-disk","Gcp Storage Gcs Persistent Disk",{"key":84,"name":85,"count":19},"infrastructure-as-code","Infrastructure As Code",{"key":87,"name":88,"count":19},"k8s-config-secrets","K8s Config Secrets",{"key":90,"name":91,"count":19},"k8s-observability-troubleshooting","K8s Observability Troubleshooting",{"key":93,"name":94,"count":19},"k8s-scheduling-resources","K8s Scheduling Resources",{"key":96,"name":97,"count":19},"k8s-services-networking","K8s Services Networking",{"key":99,"name":100,"count":19},"k8s-storage","K8s Storage",{"key":102,"name":103,"count":19},"k8s-workloads","K8s Workloads",{"key":105,"name":106,"count":19},"linux-filesystem-permissions-links","Linux Filesystem Permissions Links",{"key":108,"name":109,"count":19},"linux-networking-tools-troubleshooting","Linux Networking Tools Troubleshooting",{"key":111,"name":112,"count":19},"linux-performance-monitoring-resource-limits","Linux Performance Monitoring Resource Limits",{"key":114,"name":115,"count":19},"linux-process-management-signals","Linux Process Management Signals",{"key":117,"name":118,"count":19},"linux-shell-scripting-ops-automation","Linux Shell Scripting Ops Automation",{"key":120,"name":121,"count":19},"linux-systemd-service-management","Linux Systemd Service Management",{"key":123,"name":124,"count":19},"networking-dns-loadbalancing","Networking Dns Loadbalancing",{"key":126,"name":127,"count":19},"observability-monitoring","Observability Monitoring",{"key":129,"name":130,"count":19},"reliability-incident-sre","Reliability Incident Sre",{"key":132,"name":133,"count":19},"security-iam-secrets","Security Iam Secrets",{"key":135,"name":136,"count":19},"terraform-hcl-language-expressions","Terraform Hcl Language Expressions",{"key":138,"name":139,"count":19},"terraform-modules-workspaces","Terraform Modules Workspaces",{"key":141,"name":142,"count":19},"terraform-plan-apply-drift-import","Terraform Plan Apply Drift Import",{"key":144,"name":145,"count":19},"terraform-providers-lifecycle-provisioners","Terraform Providers Lifecycle Provisioners",{"key":147,"name":148,"count":19},"terraform-state-backend-locking","Terraform State Backend Locking",{"key":150,"name":151,"count":19},"terraform-testing-policy-cicd","Terraform Testing Policy Cicd",[153,157,160,163,166,169],{"key":154,"name":155,"count":156},"aws","AWS",450,{"key":158,"name":159,"count":156},"azure","Azure",{"key":161,"name":162,"count":156},"gcp","GCP",{"key":164,"name":165,"count":156},"kubernetes","Kubernetes",{"key":167,"name":168,"count":156},"linux","Linux",{"key":170,"name":171,"count":156},"terraform","Terraform",[173,191,204,217,230,243],{"id":174,"topic":55,"difficulty":175,"body":176,"options":177,"correct_key":182,"explanation":190},"019f56bb-b903-7ce0-9e47-4a7ba2caf220",2,"A pipeline config snippet includes this dependency install step:\n```yaml\n- name: Install dependencies\n  run: npm ci\n  cache:\n    path: ~\u002F.npm\n    key: npm-${{ hashFiles('package-lock.json') }}\n```\nWhat is the main practical benefit the `cache` block is providing here?",[178,181,184,187],{"key":179,"text":180},"a","It guarantees the pipeline will always deploy the newest dependency versions on every run.",{"key":182,"text":183},"b","It reuses previously downloaded packages when the lockfile is unchanged, speeding up later runs.",{"key":185,"text":186},"c","It replaces the need to run `npm ci` at all once a cache entry exists for the key.",{"key":188,"text":189},"d","It permanently stores the built application artifact so the deploy stage can skip building.","Build\u002Fdependency caching keyed on the lockfile hash lets the pipeline restore previously downloaded packages instead of re-downloading them every run, cutting install time when dependencies haven't changed. Option a is the opposite of what caching does (caching favors reuse, not always fetching latest). Option c is wrong — `npm ci` still runs and validates against the lockfile even with a cache hit. Option d confuses dependency cache with a build artifact, which is a separate concept.",{"id":192,"topic":55,"difficulty":175,"body":193,"options":194,"correct_key":185,"explanation":203},"019f56bb-b905-7cfb-baad-9f6a81c550b4","A team wants their pipeline to run the full test suite on every pull request, run a lighter smoke test every night on a schedule, and rebuild a base dependency image only when someone pushes directly to the main branch. What pipeline concept lets them route different work to different events like this?",[195,197,199,201],{"key":179,"text":196},"Environment promotion, which controls which environment receives a deployed artifact after tests pass successfully.",{"key":182,"text":198},"Build caching, which restores previously downloaded dependencies between separate pipeline runs.",{"key":185,"text":200},"Triggers, which define which events — such as a pull request, a schedule, or a push — start a given job.",{"key":188,"text":202},"Artifact retention, which decides how long build outputs are kept in storage before deletion.","Triggers are exactly the mechanism for binding pipeline jobs to specific events (PR opened, cron schedule, push to a branch), letting different jobs run for different circumstances. Option a is about where an artifact goes after being validated, not what starts a job. Option b is about speeding up dependency installs, unrelated to event routing. Option d is about artifact lifecycle\u002Fcleanup, not what causes a job to run.",{"id":205,"topic":55,"difficulty":175,"body":206,"options":207,"correct_key":179,"explanation":216},"019f56bb-b906-75d0-9d9e-982d8ff136b0","A team uses trunk-based development: everyone commits small changes directly to a short-lived branch merged into main multiple times a day, and the pipeline runs on every merge. A new hire proposes instead keeping long-lived feature branches open for weeks and only running the pipeline right before the final merge. What is the main pipeline-related downside of the new hire's proposal?",[208,210,212,214],{"key":179,"text":209},"Integration problems and test failures pile up and surface late, once they are harder to isolate and fix.",{"key":182,"text":211},"The pipeline would need to be rewritten in a different tool, since long-lived branches are unsupported.",{"key":185,"text":213},"Build artifacts could no longer be versioned, because a branch name literally cannot be included in a version tag.",{"key":188,"text":215},"Test stages would have to be removed entirely, since they only work correctly on short-lived branches.","Branching strategy and pipeline design are linked: the value of continuous integration comes from testing changes frequently, in small batches. Long-lived branches delay that feedback, so incompatibilities and failing tests accumulate and become harder to trace to a single change once finally merged. Option b, c, and d are all false technical constraints — pipelines, versioning, and test stages work fine regardless of branch lifetime; the real cost is delayed feedback, not tooling breakage.",{"id":218,"topic":55,"difficulty":175,"body":219,"options":220,"correct_key":188,"explanation":229},"019f56bb-b906-7f0f-8827-d2eadc61d27b","A pipeline job needs an API key to deploy to a cloud provider. Which approach best follows common practice for handling this kind of secret in a CI\u002FCD pipeline?",[221,223,225,227],{"key":179,"text":222},"Hardcode the API key directly in the pipeline YAML file so every teammate can see and reuse it.",{"key":182,"text":224},"Paste the API key into a comment on the pull request so reviewers can confirm it is correct.",{"key":185,"text":226},"Print the API key to the pipeline logs at the start of the job, so failures are easier to debug.",{"key":188,"text":228},"Store the API key in the pipeline's built-in secret store and reference it as a masked environment variable.","CI\u002FCD tools provide a dedicated secret store precisely so sensitive values are encrypted at rest, injected only at runtime, and masked in logs — avoiding exposure in version control or plain text. Option a puts a credential in version-controlled, widely readable source. Option b exposes it in a PR comment, which is even less controlled than the repo itself. Option c defeats masking by deliberately printing it, risking exposure to anyone with log access.",{"id":231,"topic":55,"difficulty":175,"body":232,"options":233,"correct_key":185,"explanation":242},"019f56bb-b907-7643-a4fe-285e576fb35a","A pipeline job config lists its stages as:\n```yaml\npipeline:\n  stop-on-failure: true\nsteps:\n  - lint\n  - unit-test\n  - integration-test\n  - deploy\n```\nWith `stop-on-failure: true`, what happens if the `unit-test` step fails?",[234,236,238,240],{"key":179,"text":235},"The pipeline retries `unit-test` automatically up to three times before moving on to `integration-test`.",{"key":182,"text":237},"The pipeline ignores the failure and continues running `integration-test` and `deploy` as scheduled.",{"key":185,"text":239},"The pipeline stops immediately, skipping `integration-test` and `deploy`, instead of running the remaining steps.",{"key":188,"text":241},"The pipeline pauses and waits for a human to manually approve whether `integration-test` should run.","A `stop-on-failure` (fail-fast) policy means the pipeline stops as soon as a step fails rather than continuing to run subsequent steps that likely depend on it, saving time and avoiding deploying a broken build. Option a invents automatic retries, which is a separate, unrelated feature some tools offer but is not what this setting does. Option b describes the opposite behavior. Option d invents a manual-approval gate that isn't implied by this setting.",{"id":244,"topic":55,"difficulty":175,"body":245,"options":246,"correct_key":182,"explanation":255},"019f56bb-b907-7f17-ab5e-c6c81da2954e","A junior engineer suggests removing the automated test stage from the pipeline so that deployments to production happen faster after every merge. What is the strongest reason to push back on this suggestion?",[247,249,251,253],{"key":179,"text":248},"Automated tests are only useful during initial development and provide no value once an app reaches production.",{"key":182,"text":250},"Without the test stage, the pipeline can no longer catch regressions before they reach a live environment.",{"key":185,"text":252},"Removing a stage from the pipeline configuration file usually causes the pipeline tool itself to stop working entirely.",{"key":188,"text":254},"Test stages are required by every CI\u002FCD tool and cannot technically be removed from a pipeline definition.","The test stage is the pipeline's automated gate for catching regressions before a bad change reaches users — removing it trades a faster pipeline for a real increase in the risk of shipping broken behavior. Option a is a false generalization; tests remain valuable across a project's lifetime. Option c invents a fabricated tooling failure. Option d is also false — most tools let you freely remove stages, though doing so is a bad practice, not a technical impossibility.",{"fields":257,"seniorities":430,"interview_shapes":431,"locales":436,"oauth":438,"question_count":441,"coach_enabled":442,"jd_match_enabled":442},[258,284,304,321,331,344,363,382,404,411,417,424],{"key":259,"name_tr":260,"name_en":260,"sort":261,"specializations":262},"backend","Backend",1,[263,266,269,272,275,278,281],{"key":264,"name":265,"field":259},"general","Genel",{"key":267,"name":268,"field":259},"go","Go",{"key":270,"name":271,"field":259},"python","Python",{"key":273,"name":274,"field":259},"java","Java",{"key":276,"name":277,"field":259},"csharp","C#\u002F.NET",{"key":279,"name":280,"field":259},"nodejs","Node.js",{"key":282,"name":283,"field":259},"php","PHP",{"key":285,"name_tr":286,"name_en":286,"sort":175,"specializations":287},"frontend","Frontend",[288,289,292,295,298,301],{"key":264,"name":265,"field":285},{"key":290,"name":291,"field":285},"javascript","JavaScript",{"key":293,"name":294,"field":285},"typescript","TypeScript",{"key":296,"name":297,"field":285},"react","React",{"key":299,"name":300,"field":285},"vue","Vue",{"key":302,"name":303,"field":285},"angular","Angular",{"key":305,"name_tr":306,"name_en":306,"sort":307,"specializations":308},"fullstack","Fullstack",3,[309,310,311,312,313,314,315,316,317,318,319,320],{"key":264,"name":265,"field":305},{"key":267,"name":268,"field":259},{"key":270,"name":271,"field":259},{"key":273,"name":274,"field":259},{"key":276,"name":277,"field":259},{"key":279,"name":280,"field":259},{"key":282,"name":283,"field":259},{"key":290,"name":291,"field":285},{"key":293,"name":294,"field":285},{"key":296,"name":297,"field":285},{"key":299,"name":300,"field":285},{"key":302,"name":303,"field":285},{"key":5,"name_tr":6,"name_en":6,"sort":322,"specializations":323},4,[324,325,326,327,328,329,330],{"key":264,"name":265,"field":5},{"key":154,"name":155,"field":5},{"key":161,"name":162,"field":5},{"key":158,"name":159,"field":5},{"key":164,"name":165,"field":5},{"key":170,"name":171,"field":5},{"key":167,"name":168,"field":5},{"key":332,"name_tr":333,"name_en":333,"sort":334,"specializations":335},"ai-engineer","AI Engineer",5,[336,337,338,341],{"key":264,"name":265,"field":332},{"key":270,"name":271,"field":332},{"key":339,"name":340,"field":332},"llm-rag","LLM\u002FRAG",{"key":342,"name":343,"field":332},"mlops","MLOps",{"key":345,"name_tr":346,"name_en":347,"sort":348,"specializations":349},"database","Veritabanı","Database",6,[350,351,354,357,360],{"key":264,"name":265,"field":345},{"key":352,"name":353,"field":345},"postgresql","PostgreSQL",{"key":355,"name":356,"field":345},"mysql","MySQL",{"key":358,"name":359,"field":345},"mongodb","MongoDB",{"key":361,"name":362,"field":345},"redis","Redis",{"key":364,"name_tr":365,"name_en":366,"sort":367,"specializations":368},"mobile","Mobil","Mobile",7,[369,370,373,376,379],{"key":264,"name":265,"field":364},{"key":371,"name":372,"field":364},"ios-swift","iOS (Swift)",{"key":374,"name":375,"field":364},"android-kotlin","Android (Kotlin)",{"key":377,"name":378,"field":364},"flutter","Flutter",{"key":380,"name":381,"field":364},"react-native","React Native",{"key":383,"name_tr":384,"name_en":385,"sort":386,"specializations":387},"security","Güvenlik","Security",8,[388,389,392,395,398,401],{"key":264,"name":265,"field":383},{"key":390,"name":391,"field":383},"appsec","AppSec",{"key":393,"name":394,"field":383},"offensive-pentest","Offensive \u002F Pentest",{"key":396,"name":397,"field":383},"cloud-security","Cloud Security",{"key":399,"name":400,"field":383},"devsecops","DevSecOps",{"key":402,"name":403,"field":383},"blue-team-incident","Blue Team \u002F Incident",{"key":405,"name_tr":406,"name_en":407,"sort":408,"specializations":409},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[410],{"key":264,"name":265,"field":405},{"key":412,"name_tr":413,"name_en":413,"sort":414,"specializations":415},"data-engineer","Data Engineer",10,[416],{"key":264,"name":265,"field":412},{"key":418,"name_tr":419,"name_en":420,"sort":421,"specializations":422},"game-dev","Oyun Geliştirme","Game Development",11,[423],{"key":264,"name":265,"field":418},{"key":425,"name_tr":426,"name_en":426,"sort":427,"specializations":428},"ml-engineer","ML Engineer",12,[429],{"key":264,"name":265,"field":425},[13,7,14],{"junior":432,"mid":434,"senior":435},{"questions":433,"median_sec":3},20,{"questions":433,"median_sec":3},{"questions":433,"median_sec":3},[437,9],"tr",[439,440],"google","github",21750,true]