[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:devops-cloud\u002Fjunior":4,"config":257},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","junior","","tr",2272,3375,[7,13,14],"mid","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,231,244],{"id":174,"topic":55,"difficulty":175,"body":176,"options":177,"correct_key":185,"explanation":190},"019f56bb-b901-7ee4-a950-81272c178651",1,"Bir ekip, repository'ye yapılan her push'un otomatik olarak build tetiklediğini ve unit testleri çalıştırdığını söylüyor. Bu continuous integration'ı kapsar. Bu ekibin continuous delivery uyguladığını da söyleyebilmesi için ek olarak ne yapması gerekir?",[178,181,184,187],{"key":179,"text":180},"a","Hiçbir şey — her push'ta otomatik build ve test çalıştırmak zaten continuous delivery demektir.",{"key":182,"text":183},"b","Geliştiricilerin attığı her commit'te daha hızlı çalışsın diye test suite'ini baştan yazmak.",{"key":185,"text":186},"c","Her an deploy edilmeye hazır, doğrulanmış bir release artifact'i sürekli üretmek.",{"key":188,"text":189},"d","Geliştiricilerin feature branch'leri main'e sadece haftada bir manuel olarak merge etmesi.","Continuous integration, değişikliklerin otomatik build+test edilmesi demektir. Continuous delivery ise bir adım ötesidir: deploy kararı hâlâ bir insana ait olsa bile her an deploy'a hazır, doğrulanmış bir artifact bulundurmayı içerir. a şıkkı CI ile CD'yi karıştırır. b, delivery hazırlığıyla ilgisizdir. d ise seyrek manuel merge'i tarif eder ki bu, CI\u002FCD'nin dayandığı sık entegrasyon hedefine ters düşer.",{"id":192,"topic":55,"difficulty":175,"body":193,"options":194,"correct_key":179,"explanation":203},"019f56bb-b902-7b80-b8cc-7a03d0b4ec26","Tipik bir CI\u002FCD pipeline'ı sıralı stage'lere ayrılır. Build, test ve deploy stage'lerinin genel amacını en doğru yansıtan sıralama hangisidir?",[195,197,199,201],{"key":179,"text":196},"Build kodu derler\u002Fpaketler, test doğru davrandığını doğrular, deploy bir ortama yayınlar.",{"key":182,"text":198},"Build kodu production'a yayınlar, test kullanıcı şikâyetlerini kontrol eder, deploy kaynağı derler.",{"key":185,"text":200},"Build ve deploy aynı adımdır, test ise yalnızca ayda bir planlı denetimde çalışır.",{"key":188,"text":202},"Test her zaman build'den önce çalışır, çünkü eski test sonuçlarını önce okumak genel olarak hesaplama zamanı kazandırır.","Alışılagelmiş pipeline akışı build (derle\u002Fpaketle) → test (doğruluğu doğrula) → deploy (bir ortama yayınla) şeklindedir; her stage bir sonrakinin kapısıdır. b şıkkı build ve deploy'un anlamını ters çevirir. c, build ile deploy'u yanlış birleştirir ve test'i her değişiklikten koparır. d ise doğal sırayı tersine çevirir; çünkü henüz build edilmemiş kod anlamlı biçimde test edilemez.",{"id":205,"topic":55,"difficulty":175,"body":206,"options":207,"correct_key":188,"explanation":216},"019f56bb-b903-75a1-810b-759a5f8111eb","Pipeline terminolojisinde bir build \"artifact\"ını en iyi ne tanımlar?",[208,210,212,214],{"key":179,"text":209},"Bir pipeline stage'i bittikten sonra test runner'ın bastırdığı log çıktısı.",{"key":182,"text":211},"Hangi branch'lerin bir pipeline çalıştırmasını tetikleyebileceğini listeleyen konfigürasyon dosyası.",{"key":185,"text":213},"Bir geliştiricinin repository'ye değişiklik push ederken yazdığı commit mesajı.",{"key":188,"text":215},"Build stage'inin ürettiği, paketlenmiş ve versiyonlanmış çıktı; binary, container image veya arşiv gibi.","Artifact, build stage'inin ürettiği somut ve versiyonlanmış çıktıdır — derlenmiş bir binary, paketlenmiş bir arşiv ya da container image — sonraki stage'ler bunu yeniden build etmeden deploy edebilir. a şıkkı log'u tarif eder, dağıtılabilir bir çıktı değildir. b, trigger konfigürasyonunu tarif eder. c, build çıktısıyla ilgisiz olan commit mesajını tarif eder.",{"id":218,"topic":55,"difficulty":219,"body":220,"options":221,"correct_key":182,"explanation":230},"019f56bb-b903-7ce0-9e47-4a7ba2caf220",2,"Bir pipeline config parçası şu dependency kurulum adımını içeriyor:\n```yaml\n- name: Install dependencies\n  run: npm ci\n  cache:\n    path: ~\u002F.npm\n    key: npm-${{ hashFiles('package-lock.json') }}\n```\nBuradaki `cache` bloğunun sağladığı temel pratik fayda nedir?",[222,224,226,228],{"key":179,"text":223},"Pipeline'ın her çalışmada mutlaka en güncel dependency sürümlerini deploy etmesini garanti eder.",{"key":182,"text":225},"Lockfile değişmediğinde daha önce indirilmiş paketleri yeniden kullanarak sonraki çalışmaları hızlandırır.",{"key":185,"text":227},"Cache key için bir kayıt varsa `npm ci` komutunu tamamen çalıştırmaya gerek bırakmaz.",{"key":188,"text":229},"Build edilmiş uygulama artifact'ini kalıcı olarak saklar, böylece deploy stage build'i atlar.","Lockfile hash'ine göre anahtarlanan dependency cache, dependency'ler değişmediğinde paketlerin yeniden indirilmesi yerine önceden indirilmişleri geri yükler ve kurulum süresini kısaltır. a şıkkı cache'in yaptığının tersidir (cache yeniden kullanımı önceler, her zaman en güncelini çekmeyi değil). c yanlıştır — cache hit olsa bile `npm ci` yine çalışır ve lockfile'a karşı doğrulama yapar. d, dependency cache'i ayrı bir kavram olan build artifact'i ile karıştırır.",{"id":232,"topic":55,"difficulty":175,"body":233,"options":234,"correct_key":182,"explanation":243},"019f56bb-b904-785b-beb3-0028398108aa","\"Pipeline as code\", CI\u002FCD pipeline tanımının (stage'ler, trigger'lar, job'lar) YAML gibi versiyonlanmış bir dosya olarak repository'de tutulması demektir. Ekiplerin bunu, pipeline'ı tamamen bir web arayüzünden yapılandırmaya tercih etmesinin temel pratik nedeni nedir?",[235,237,239,241],{"key":179,"text":236},"YAML, arayüzde tutulan ayarlardan daha hızlı parse edildiği için pipeline'ı belirgin biçimde hızlandırır.",{"key":182,"text":238},"Pipeline tanımının, diğer kod değişiklikleri gibi review edilmesini, versiyonlanmasını ve geri alınmasını sağlar.",{"key":185,"text":240},"Bir deploy gerçekleşmeden önce pipeline'ın otomatik test çalıştırma zorunluluğunu ortadan kaldırır.",{"key":188,"text":242},"Her CI\u002FCD aracı için zorunludur, çünkü artık hiçbiri arayüz üzerinden yapılandırma sunmamaktadır.","Pipeline'ı repository içinde bir dosya olarak tanımlamak, ona yapılan değişikliklerin uygulama koduyla aynı review, diff ve versiyon geçmişinden geçmesini sağlar ve pipeline'ı bozan bir değişiklik geri alınabilir. a şıkkı uydurma bir performans iddiasıdır, gerçek neden değildir. c ilgisiz ve yanlıştır — pipeline as code testi ortadan kaldırmaz. d abartılıdır; bazı araçlar hâlâ arayüz yapılandırması sunar, sadece izlenebilirlik açısından tercih edilmez.",{"id":245,"topic":55,"difficulty":219,"body":246,"options":247,"correct_key":185,"explanation":256},"019f56bb-b905-7cfb-baad-9f6a81c550b4","Bir ekip, pipeline'ının her pull request'te tüm test suite'ini çalıştırmasını, her gece zamanlanmış olarak daha hafif bir smoke test çalıştırmasını ve yalnızca biri doğrudan main branch'e push ettiğinde bir base dependency image'ını yeniden build etmesini istiyor. Farklı olayları bu şekilde farklı işlere yönlendirmeyi sağlayan pipeline kavramı hangisidir?",[248,250,252,254],{"key":179,"text":249},"Environment promotion; testler başarıyla geçtikten sonra deploy edilen artifact'in hangi ortama gideceğini kontrol eder.",{"key":182,"text":251},"Build caching; ayrı pipeline çalışmaları arasında önceden indirilmiş dependency'leri geri yükler.",{"key":185,"text":253},"Trigger'lar; bir pull request, bir schedule veya bir push gibi hangi olayların hangi job'u başlattığını tanımlar.",{"key":188,"text":255},"Artifact retention; build çıktılarının silinmeden önce ne kadar süre depoda tutulacağına karar verir.","Trigger'lar, pipeline job'larını belirli olaylara (PR açılması, cron schedule, bir branch'e push) bağlayan mekanizmadır ve farklı durumlar için farklı job'ların çalışmasını sağlar. a, doğrulandıktan sonra artifact'in nereye gittiğiyle ilgilidir, bir job'u neyin başlattığıyla değil. b, dependency kurulumunu hızlandırmayla ilgilidir, olay yönlendirmeyle ilgisizdir. d, artifact yaşam döngüsü\u002Ftemizliğiyle ilgilidir, bir job'un çalışmasına neyin sebep olduğuyla değil.",{"fields":258,"seniorities":430,"interview_shapes":431,"locales":436,"oauth":438,"question_count":441,"coach_enabled":442,"jd_match_enabled":442},[259,284,304,321,331,344,363,382,404,411,417,424],{"key":260,"name_tr":261,"name_en":261,"sort":175,"specializations":262},"backend","Backend",[263,266,269,272,275,278,281],{"key":264,"name":265,"field":260},"general","Genel",{"key":267,"name":268,"field":260},"go","Go",{"key":270,"name":271,"field":260},"python","Python",{"key":273,"name":274,"field":260},"java","Java",{"key":276,"name":277,"field":260},"csharp","C#\u002F.NET",{"key":279,"name":280,"field":260},"nodejs","Node.js",{"key":282,"name":283,"field":260},"php","PHP",{"key":285,"name_tr":286,"name_en":286,"sort":219,"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":260},{"key":270,"name":271,"field":260},{"key":273,"name":274,"field":260},{"key":276,"name":277,"field":260},{"key":279,"name":280,"field":260},{"key":282,"name":283,"field":260},{"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},[7,13,14],{"junior":432,"mid":434,"senior":435},{"questions":433,"median_sec":3},20,{"questions":433,"median_sec":3},{"questions":433,"median_sec":3},[9,437],"en",[439,440],"google","github",21750,true]