[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:devops-cloud\u002Fterraform-state-backend-locking":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","","terraform-state-backend-locking","Terraform State Backend Locking","en",75,3375,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96,99,102,105,108,111,114,117,120,123,126,129,132,135,138,141,144,147,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":55,"name":56,"count":11},"ci-cd-pipelines","Ci Cd Pipelines",{"key":58,"name":59,"count":11},"cloud-architecture-scaling","Cloud Architecture Scaling",{"key":61,"name":62,"count":11},"containers-orchestration","Containers Orchestration",{"key":64,"name":65,"count":11},"deployment-release-strategies","Deployment Release Strategies",{"key":67,"name":68,"count":11},"gcp-compute-gce-cloudrun","Gcp Compute Gce Cloudrun",{"key":70,"name":71,"count":11},"gcp-databases-cloudsql-spanner-firestore","Gcp Databases Cloudsql Spanner Firestore",{"key":73,"name":74,"count":11},"gcp-iam-security","Gcp Iam Security",{"key":76,"name":77,"count":11},"gcp-messaging-eventing","Gcp Messaging Eventing",{"key":79,"name":80,"count":11},"gcp-networking-vpc","Gcp Networking Vpc",{"key":82,"name":83,"count":11},"gcp-storage-gcs-persistent-disk","Gcp Storage Gcs Persistent Disk",{"key":85,"name":86,"count":11},"infrastructure-as-code","Infrastructure As Code",{"key":88,"name":89,"count":11},"k8s-config-secrets","K8s Config Secrets",{"key":91,"name":92,"count":11},"k8s-observability-troubleshooting","K8s Observability Troubleshooting",{"key":94,"name":95,"count":11},"k8s-scheduling-resources","K8s Scheduling Resources",{"key":97,"name":98,"count":11},"k8s-services-networking","K8s Services Networking",{"key":100,"name":101,"count":11},"k8s-storage","K8s Storage",{"key":103,"name":104,"count":11},"k8s-workloads","K8s Workloads",{"key":106,"name":107,"count":11},"linux-filesystem-permissions-links","Linux Filesystem Permissions Links",{"key":109,"name":110,"count":11},"linux-networking-tools-troubleshooting","Linux Networking Tools Troubleshooting",{"key":112,"name":113,"count":11},"linux-performance-monitoring-resource-limits","Linux Performance Monitoring Resource Limits",{"key":115,"name":116,"count":11},"linux-process-management-signals","Linux Process Management Signals",{"key":118,"name":119,"count":11},"linux-shell-scripting-ops-automation","Linux Shell Scripting Ops Automation",{"key":121,"name":122,"count":11},"linux-systemd-service-management","Linux Systemd Service Management",{"key":124,"name":125,"count":11},"networking-dns-loadbalancing","Networking Dns Loadbalancing",{"key":127,"name":128,"count":11},"observability-monitoring","Observability Monitoring",{"key":130,"name":131,"count":11},"reliability-incident-sre","Reliability Incident Sre",{"key":133,"name":134,"count":11},"security-iam-secrets","Security Iam Secrets",{"key":136,"name":137,"count":11},"terraform-hcl-language-expressions","Terraform Hcl Language Expressions",{"key":139,"name":140,"count":11},"terraform-modules-workspaces","Terraform Modules Workspaces",{"key":142,"name":143,"count":11},"terraform-plan-apply-drift-import","Terraform Plan Apply Drift Import",{"key":145,"name":146,"count":11},"terraform-providers-lifecycle-provisioners","Terraform Providers Lifecycle Provisioners",{"key":8,"name":9,"count":11},{"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,229,243],{"id":173,"topic":9,"difficulty":174,"body":175,"options":176,"correct_key":184,"explanation":189},"019f8ebc-de99-7514-b805-d2f3e8517b04",1,"What is the primary purpose of Terraform's state file?",[177,180,183,186],{"key":178,"text":179},"a","It stores a human-written changelog describing every manual edit made to cloud resources",{"key":181,"text":182},"b","It stores a cached copy of the provider plugin binaries so they don't need to be re-downloaded",{"key":184,"text":185},"c","It maps the resources declared in the configuration to the real-world objects Terraform created, along with their attributes",{"key":187,"text":188},"d","It stores the Terraform CLI's own version history and update notifications","The state file is Terraform's record of which real infrastructure objects correspond to which resource blocks in the configuration, plus their tracked attributes. Terraform uses this mapping to compute diffs on plan\u002Fapply. (a) is wrong because the state file is a machine-generated JSON record, not a manually maintained changelog.",{"id":191,"topic":9,"difficulty":174,"body":192,"options":193,"correct_key":181,"explanation":202},"019f8ebc-de9c-768d-8f8b-8d46645fe45f","Why is it generally considered unsafe to hand-edit the terraform.tfstate JSON file directly?",[194,196,198,200],{"key":178,"text":195},"Terraform CLI physically locks the file with read-only permissions, so a hand edit is technically impossible",{"key":181,"text":197},"A manual edit can easily produce an internally inconsistent state that no longer matches real infrastructure, causing unexpected plans",{"key":184,"text":199},"The .tfstate file format is compiled binary, not JSON, so a text editor cannot open it at all",{"key":187,"text":201},"Hand-editing the file automatically triggers a destroy of every resource listed in it","The state file has an internal structure (resource addresses, dependency metadata, attribute values) that Terraform relies on being consistent; a manual edit can silently break that consistency, leading to incorrect plans or drift that's hard to diagnose. Terraform provides dedicated commands (state mv\u002Frm\u002Fimport) for safe modifications instead. (a) is wrong — nothing prevents opening the file in a text editor; the risk is logical, not a technical lock.",{"id":204,"topic":9,"difficulty":174,"body":205,"options":206,"correct_key":178,"explanation":215},"019f8ebc-dea0-7410-a597-06df82989c4a","What key problem does using a remote backend (e.g. S3, azurerm, GCS) solve compared to Terraform's default local state?",[207,209,211,213],{"key":178,"text":208},"It lets a team share a single, centrally-stored state file instead of each engineer having their own local copy that can go out of sync",{"key":181,"text":210},"It removes the need for Terraform to track any resource attributes at all",{"key":184,"text":212},"It automatically rewrites the .tf configuration files to match whatever exists in the cloud",{"key":187,"text":214},"It makes 'terraform plan' unnecessary since the backend applies changes on its own schedule","By default, Terraform writes state to a local terraform.tfstate file. A remote backend stores that same state centrally so every team member and CI job reads\u002Fwrites the same source of truth, avoiding divergent local copies. (b) is wrong — the backend still stores the same resource-attribute mapping, it just changes where that data lives.",{"id":217,"topic":9,"difficulty":174,"body":218,"options":219,"correct_key":187,"explanation":228},"019f8ebc-dea1-72d3-8589-330b7df49937","In an S3-backed Terraform setup, what has historically been the role of a DynamoDB table alongside the S3 bucket?",[220,222,224,226],{"key":178,"text":221},"It stores a full duplicate copy of the state file as a backup, unrelated to any locking mechanism",{"key":181,"text":223},"It stores the provider plugin binaries so 'terraform init' doesn't re-download them",{"key":184,"text":225},"It stores the Terraform CLI's authentication credentials for the AWS provider",{"key":187,"text":227},"It provides state locking by holding a lock record while an operation runs","S3 itself is an object store without a built-in mechanism to coordinate concurrent writers, so a DynamoDB table has traditionally been paired with it to hold a lock item during plan\u002Fapply, ensuring only one operation modifies the state at a time. (a) is wrong — the table holds a small lock record, not a duplicate of the entire state file.",{"id":230,"topic":9,"difficulty":231,"body":232,"options":233,"correct_key":181,"explanation":242},"019f8ebc-dea3-7963-ba72-3b7538cb1d21",2,"What problem does state locking prevent?",[234,236,238,240],{"key":178,"text":235},"It prevents a resource from ever being destroyed, regardless of configuration changes",{"key":181,"text":237},"It prevents two concurrent Terraform operations from reading and writing the same state file at the same time, which could corrupt it",{"key":184,"text":239},"It prevents the provider from making any API calls to the cloud platform",{"key":187,"text":241},"It prevents engineers from viewing the state file's contents entirely","State locking serializes access: while one operation (plan\u002Fapply) holds the lock, another concurrent operation targeting the same state is blocked from starting, which avoids two processes writing conflicting updates to the same state file. (a) is wrong — locking is about coordinating access to the state file, not about blocking destroy operations on resources.",{"id":244,"topic":9,"difficulty":231,"body":245,"options":246,"correct_key":184,"explanation":255},"019f8ebc-dea4-7452-bfa6-40c2e8f159c1","An engineer runs 'terraform apply' while a colleague's apply against the same remote state is already in progress and holding the lock. What is the expected default behavior?",[247,249,251,253],{"key":178,"text":248},"Both applies proceed simultaneously and Terraform automatically merges the two resulting states",{"key":181,"text":250},"The second apply silently overwrites the first engineer's in-progress changes without any warning",{"key":184,"text":252},"The second apply fails or waits, reporting that the state is locked by another operation",{"key":187,"text":254},"Terraform deletes the existing lock automatically so the newest command always wins","Terraform's default behavior on encountering an active lock is to report the lock (who holds it, when it was created) and either wait or error out, rather than proceeding — this is exactly the coordination locking is meant to provide. (a) is wrong — Terraform has no state-merging capability for concurrent runs; that is precisely the corruption scenario locking prevents.",{"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":231,"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]