[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:devops-cloud\u002Fci-cd-pipelines":4,"config":256},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":151,"samples":171},"devops-cloud","DevOps \u002F Cloud","","ci-cd-pipelines","Ci Cd Pipelines","en",75,3375,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148],{"key":19,"name":20,"count":11},"aws-compute-ec2-lambda","Aws Compute Ec2 Lambda",{"key":22,"name":23,"count":11},"aws-databases-rds-dynamodb","Aws Databases Rds Dynamodb",{"key":25,"name":26,"count":11},"aws-iam-security","Aws Iam Security",{"key":28,"name":29,"count":11},"aws-messaging-eventing","Aws Messaging Eventing",{"key":31,"name":32,"count":11},"aws-networking-vpc","Aws Networking Vpc",{"key":34,"name":35,"count":11},"aws-storage-s3-ebs","Aws Storage S3 Ebs",{"key":37,"name":38,"count":11},"azure-compute-vm-appservice","Azure Compute Vm Appservice",{"key":40,"name":41,"count":11},"azure-databases-sql-cosmosdb","Azure Databases Sql Cosmosdb",{"key":43,"name":44,"count":11},"azure-iam-security","Azure Iam Security",{"key":46,"name":47,"count":11},"azure-messaging-eventing","Azure Messaging Eventing",{"key":49,"name":50,"count":11},"azure-networking-vnet","Azure Networking Vnet",{"key":52,"name":53,"count":11},"azure-storage-blob-managed-disk","Azure Storage Blob Managed Disk",{"key":8,"name":9,"count":11},{"key":56,"name":57,"count":11},"cloud-architecture-scaling","Cloud Architecture Scaling",{"key":59,"name":60,"count":11},"containers-orchestration","Containers Orchestration",{"key":62,"name":63,"count":11},"deployment-release-strategies","Deployment Release Strategies",{"key":65,"name":66,"count":11},"gcp-compute-gce-cloudrun","Gcp Compute Gce Cloudrun",{"key":68,"name":69,"count":11},"gcp-databases-cloudsql-spanner-firestore","Gcp Databases Cloudsql Spanner Firestore",{"key":71,"name":72,"count":11},"gcp-iam-security","Gcp Iam Security",{"key":74,"name":75,"count":11},"gcp-messaging-eventing","Gcp Messaging Eventing",{"key":77,"name":78,"count":11},"gcp-networking-vpc","Gcp Networking Vpc",{"key":80,"name":81,"count":11},"gcp-storage-gcs-persistent-disk","Gcp Storage Gcs Persistent Disk",{"key":83,"name":84,"count":11},"infrastructure-as-code","Infrastructure As Code",{"key":86,"name":87,"count":11},"k8s-config-secrets","K8s Config Secrets",{"key":89,"name":90,"count":11},"k8s-observability-troubleshooting","K8s Observability Troubleshooting",{"key":92,"name":93,"count":11},"k8s-scheduling-resources","K8s Scheduling Resources",{"key":95,"name":96,"count":11},"k8s-services-networking","K8s Services Networking",{"key":98,"name":99,"count":11},"k8s-storage","K8s Storage",{"key":101,"name":102,"count":11},"k8s-workloads","K8s Workloads",{"key":104,"name":105,"count":11},"linux-filesystem-permissions-links","Linux Filesystem Permissions Links",{"key":107,"name":108,"count":11},"linux-networking-tools-troubleshooting","Linux Networking Tools Troubleshooting",{"key":110,"name":111,"count":11},"linux-performance-monitoring-resource-limits","Linux Performance Monitoring Resource Limits",{"key":113,"name":114,"count":11},"linux-process-management-signals","Linux Process Management Signals",{"key":116,"name":117,"count":11},"linux-shell-scripting-ops-automation","Linux Shell Scripting Ops Automation",{"key":119,"name":120,"count":11},"linux-systemd-service-management","Linux Systemd Service Management",{"key":122,"name":123,"count":11},"networking-dns-loadbalancing","Networking Dns Loadbalancing",{"key":125,"name":126,"count":11},"observability-monitoring","Observability Monitoring",{"key":128,"name":129,"count":11},"reliability-incident-sre","Reliability Incident Sre",{"key":131,"name":132,"count":11},"security-iam-secrets","Security Iam Secrets",{"key":134,"name":135,"count":11},"terraform-hcl-language-expressions","Terraform Hcl Language Expressions",{"key":137,"name":138,"count":11},"terraform-modules-workspaces","Terraform Modules Workspaces",{"key":140,"name":141,"count":11},"terraform-plan-apply-drift-import","Terraform Plan Apply Drift Import",{"key":143,"name":144,"count":11},"terraform-providers-lifecycle-provisioners","Terraform Providers Lifecycle Provisioners",{"key":146,"name":147,"count":11},"terraform-state-backend-locking","Terraform State Backend Locking",{"key":149,"name":150,"count":11},"terraform-testing-policy-cicd","Terraform Testing Policy Cicd",[152,156,159,162,165,168],{"key":153,"name":154,"count":155},"aws","AWS",450,{"key":157,"name":158,"count":155},"azure","Azure",{"key":160,"name":161,"count":155},"gcp","GCP",{"key":163,"name":164,"count":155},"kubernetes","Kubernetes",{"key":166,"name":167,"count":155},"linux","Linux",{"key":169,"name":170,"count":155},"terraform","Terraform",[172,190,203,216,230,243],{"id":173,"topic":9,"difficulty":174,"body":175,"options":176,"correct_key":184,"explanation":189},"019f56bb-b901-7ee4-a950-81272c178651",1,"A team says every push to their repository automatically triggers a build and runs the unit tests. That covers continuous integration. What would this team additionally need to also claim they practice continuous delivery?",[177,180,183,186],{"key":178,"text":179},"a","Nothing more — automatically building and testing on every push already is continuous delivery.",{"key":181,"text":182},"b","Rewrite the test suite so it executes faster on every single commit pushed by developers.",{"key":184,"text":185},"c","Automatically produce a validated release artifact that stays ready to deploy at any time.",{"key":187,"text":188},"d","Have developers manually merge feature branches into main once a week to keep history clean.","Continuous integration means changes are automatically built and tested. Continuous delivery goes further: it keeps a release-ready, validated artifact available at all times, even if a human still decides when to deploy it. Option a confuses CI with CD. Option b is unrelated to delivery readiness. Option d describes infrequent manual merging, which works against the frequent-integration goal CI\u002FCD is built on.",{"id":191,"topic":9,"difficulty":174,"body":192,"options":193,"correct_key":178,"explanation":202},"019f56bb-b902-7b80-b8cc-7a03d0b4ec26","A typical CI\u002FCD pipeline is organized into ordered stages. Which sequence best reflects the usual purpose of the build, test, and deploy stages?",[194,196,198,200],{"key":178,"text":195},"Build compiles\u002Fpackages the code, test verifies it behaves correctly, deploy releases it to an environment.",{"key":181,"text":197},"Build releases the code to production, test checks user complaints, deploy compiles the source.",{"key":184,"text":199},"Build and deploy are the same step, and test only runs once a month during a planned audit.",{"key":187,"text":201},"Test always runs before build, since running old test results first saves compute time overall.","The conventional pipeline flow is build (compile\u002Fpackage), then test (verify correctness), then deploy (release to an environment) — each stage acting as a gate for the next. Option b reverses build and deploy's meaning. Option c wrongly merges build and deploy and detaches testing from every change. Option d reverses the natural order since you cannot meaningfully test code that has not been built yet.",{"id":204,"topic":9,"difficulty":174,"body":205,"options":206,"correct_key":187,"explanation":215},"019f56bb-b903-75a1-810b-759a5f8111eb","In pipeline terminology, what best describes a build \"artifact\"?",[207,209,211,213],{"key":178,"text":208},"The log output printed by the test runner after a pipeline stage finishes executing.",{"key":181,"text":210},"A configuration file that lists which branches are allowed to trigger a pipeline run.",{"key":184,"text":212},"The commit message a developer writes when pushing changes to the repository.",{"key":187,"text":214},"A packaged, versioned output of the build stage, such as a binary, container image, or archive.","An artifact is the tangible, versioned output produced by the build stage — a compiled binary, a packaged archive, or a container image — that later stages can deploy without rebuilding. Option a describes logs, not a shippable output. Option b describes trigger configuration. Option c describes a commit message, unrelated to build output.",{"id":217,"topic":9,"difficulty":218,"body":219,"options":220,"correct_key":181,"explanation":229},"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?",[221,223,225,227],{"key":178,"text":222},"It guarantees the pipeline will always deploy the newest dependency versions on every run.",{"key":181,"text":224},"It reuses previously downloaded packages when the lockfile is unchanged, speeding up later runs.",{"key":184,"text":226},"It replaces the need to run `npm ci` at all once a cache entry exists for the key.",{"key":187,"text":228},"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":231,"topic":9,"difficulty":174,"body":232,"options":233,"correct_key":181,"explanation":242},"019f56bb-b904-785b-beb3-0028398108aa","\"Pipeline as code\" means the CI\u002FCD pipeline definition (stages, triggers, jobs) is written as a versioned file, such as YAML, stored in the repository. What is the main practical reason teams prefer this over configuring the pipeline entirely through a web UI?",[234,236,238,240],{"key":178,"text":235},"It makes the pipeline run noticeably faster because YAML parses quicker than UI-stored settings.",{"key":181,"text":237},"It allows the pipeline definition to be reviewed, versioned, and rolled back like any other code change.",{"key":184,"text":239},"It removes the need for the pipeline to ever run automated tests before a deployment happens.",{"key":187,"text":241},"It is required by every CI\u002FCD tool, since none of them still offer a UI-based configuration option.","Defining the pipeline as a file in the repository means changes to it go through the same review, diff, and version history as application code, and can be rolled back if a change breaks the pipeline. Option a is a fabricated performance claim, not the real reason. Option c is unrelated and false — pipeline-as-code doesn't remove testing. Option d overstates it; some tools still offer UI configuration, it's just discouraged for traceability reasons.",{"id":244,"topic":9,"difficulty":218,"body":245,"options":246,"correct_key":184,"explanation":255},"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?",[247,249,251,253],{"key":178,"text":248},"Environment promotion, which controls which environment receives a deployed artifact after tests pass successfully.",{"key":181,"text":250},"Build caching, which restores previously downloaded dependencies between separate pipeline runs.",{"key":184,"text":252},"Triggers, which define which events — such as a pull request, a schedule, or a push — start a given job.",{"key":187,"text":254},"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.",{"fields":257,"seniorities":429,"interview_shapes":430,"locales":435,"oauth":437,"question_count":440,"coach_enabled":441,"jd_match_enabled":441},[258,283,303,320,330,343,362,381,403,410,416,423],{"key":259,"name_tr":260,"name_en":260,"sort":174,"specializations":261},"backend","Backend",[262,265,268,271,274,277,280],{"key":263,"name":264,"field":259},"general","Genel",{"key":266,"name":267,"field":259},"go","Go",{"key":269,"name":270,"field":259},"python","Python",{"key":272,"name":273,"field":259},"java","Java",{"key":275,"name":276,"field":259},"csharp","C#\u002F.NET",{"key":278,"name":279,"field":259},"nodejs","Node.js",{"key":281,"name":282,"field":259},"php","PHP",{"key":284,"name_tr":285,"name_en":285,"sort":218,"specializations":286},"frontend","Frontend",[287,288,291,294,297,300],{"key":263,"name":264,"field":284},{"key":289,"name":290,"field":284},"javascript","JavaScript",{"key":292,"name":293,"field":284},"typescript","TypeScript",{"key":295,"name":296,"field":284},"react","React",{"key":298,"name":299,"field":284},"vue","Vue",{"key":301,"name":302,"field":284},"angular","Angular",{"key":304,"name_tr":305,"name_en":305,"sort":306,"specializations":307},"fullstack","Fullstack",3,[308,309,310,311,312,313,314,315,316,317,318,319],{"key":263,"name":264,"field":304},{"key":266,"name":267,"field":259},{"key":269,"name":270,"field":259},{"key":272,"name":273,"field":259},{"key":275,"name":276,"field":259},{"key":278,"name":279,"field":259},{"key":281,"name":282,"field":259},{"key":289,"name":290,"field":284},{"key":292,"name":293,"field":284},{"key":295,"name":296,"field":284},{"key":298,"name":299,"field":284},{"key":301,"name":302,"field":284},{"key":5,"name_tr":6,"name_en":6,"sort":321,"specializations":322},4,[323,324,325,326,327,328,329],{"key":263,"name":264,"field":5},{"key":153,"name":154,"field":5},{"key":160,"name":161,"field":5},{"key":157,"name":158,"field":5},{"key":163,"name":164,"field":5},{"key":169,"name":170,"field":5},{"key":166,"name":167,"field":5},{"key":331,"name_tr":332,"name_en":332,"sort":333,"specializations":334},"ai-engineer","AI Engineer",5,[335,336,337,340],{"key":263,"name":264,"field":331},{"key":269,"name":270,"field":331},{"key":338,"name":339,"field":331},"llm-rag","LLM\u002FRAG",{"key":341,"name":342,"field":331},"mlops","MLOps",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"database","Veritabanı","Database",6,[349,350,353,356,359],{"key":263,"name":264,"field":344},{"key":351,"name":352,"field":344},"postgresql","PostgreSQL",{"key":354,"name":355,"field":344},"mysql","MySQL",{"key":357,"name":358,"field":344},"mongodb","MongoDB",{"key":360,"name":361,"field":344},"redis","Redis",{"key":363,"name_tr":364,"name_en":365,"sort":366,"specializations":367},"mobile","Mobil","Mobile",7,[368,369,372,375,378],{"key":263,"name":264,"field":363},{"key":370,"name":371,"field":363},"ios-swift","iOS (Swift)",{"key":373,"name":374,"field":363},"android-kotlin","Android (Kotlin)",{"key":376,"name":377,"field":363},"flutter","Flutter",{"key":379,"name":380,"field":363},"react-native","React Native",{"key":382,"name_tr":383,"name_en":384,"sort":385,"specializations":386},"security","Güvenlik","Security",8,[387,388,391,394,397,400],{"key":263,"name":264,"field":382},{"key":389,"name":390,"field":382},"appsec","AppSec",{"key":392,"name":393,"field":382},"offensive-pentest","Offensive \u002F Pentest",{"key":395,"name":396,"field":382},"cloud-security","Cloud Security",{"key":398,"name":399,"field":382},"devsecops","DevSecOps",{"key":401,"name":402,"field":382},"blue-team-incident","Blue Team \u002F Incident",{"key":404,"name_tr":405,"name_en":406,"sort":407,"specializations":408},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[409],{"key":263,"name":264,"field":404},{"key":411,"name_tr":412,"name_en":412,"sort":413,"specializations":414},"data-engineer","Data Engineer",10,[415],{"key":263,"name":264,"field":411},{"key":417,"name_tr":418,"name_en":419,"sort":420,"specializations":421},"game-dev","Oyun Geliştirme","Game Development",11,[422],{"key":263,"name":264,"field":417},{"key":424,"name_tr":425,"name_en":425,"sort":426,"specializations":427},"ml-engineer","ML Engineer",12,[428],{"key":263,"name":264,"field":424},[14,15,16],{"junior":431,"mid":433,"senior":434},{"questions":432,"median_sec":3},20,{"questions":432,"median_sec":3},{"questions":432,"median_sec":3},[436,10],"tr",[438,439],"google","github",21750,true]