[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr: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","","tr",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,"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?",[178,181,184,187],{"key":179,"text":180},"a","Pipeline'ın her çalışmada mutlaka en güncel dependency sürümlerini deploy etmesini garanti eder.",{"key":182,"text":183},"b","Lockfile değişmediğinde daha önce indirilmiş paketleri yeniden kullanarak sonraki çalışmaları hızlandırır.",{"key":185,"text":186},"c","Cache key için bir kayıt varsa `npm ci` komutunu tamamen çalıştırmaya gerek bırakmaz.",{"key":188,"text":189},"d","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":192,"topic":55,"difficulty":175,"body":193,"options":194,"correct_key":185,"explanation":203},"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?",[195,197,199,201],{"key":179,"text":196},"Environment promotion; testler başarıyla geçtikten sonra deploy edilen artifact'in hangi ortama gideceğini kontrol eder.",{"key":182,"text":198},"Build caching; ayrı pipeline çalışmaları arasında önceden indirilmiş dependency'leri geri yükler.",{"key":185,"text":200},"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":202},"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.",{"id":205,"topic":55,"difficulty":175,"body":206,"options":207,"correct_key":179,"explanation":216},"019f56bb-b906-75d0-9d9e-982d8ff136b0","Bir ekip trunk-based development kullanıyor: herkes küçük değişiklikleri günde birkaç kez main'e merge edilen kısa ömürlü bir branch üzerinden commit'liyor ve pipeline her merge'de çalışıyor. Yeni işe başlayan biri bunun yerine haftalarca açık kalan uzun ömürlü feature branch'ler kullanılmasını ve pipeline'ın yalnızca final merge'den hemen önce çalıştırılmasını öneriyor. Bu önerinin pipeline ile ilgili temel dezavantajı nedir?",[208,210,212,214],{"key":179,"text":209},"Entegrasyon sorunları ve test hataları birikir ve ancak izole etmesi zorlaştığında, geç ortaya çıkar.",{"key":182,"text":211},"Pipeline'ın farklı bir araçla yeniden yazılması gerekir, çünkü uzun ömürlü branch'ler desteklenmez.",{"key":185,"text":213},"Build artifact'leri artık versiyonlanamaz, çünkü bir branch adı hiçbir şekilde bir version tag'ine dahil edilemez.",{"key":188,"text":215},"Test stage'leri tamamen kaldırılmalıdır, çünkü yalnızca kısa ömürlü branch'lerde doğru çalışırlar.","Branch stratejisi ile pipeline tasarımı birbirine bağlıdır: continuous integration'ın değeri, değişikliklerin sık ve küçük parçalar halinde test edilmesinden gelir. Uzun ömürlü branch'ler bu geri bildirimi geciktirir, bu yüzden uyumsuzluklar ve başarısız testler birikir ve nihayet merge edildiğinde tek bir değişikliğe bağlamak zorlaşır. b, c ve d şıklarının hepsi yanlış teknik iddialardır — pipeline'lar, versiyonlama ve test stage'leri branch ömründen bağımsız çalışır; gerçek maliyet araç bozulması değil, gecikmiş geri bildirimdir.",{"id":218,"topic":55,"difficulty":175,"body":219,"options":220,"correct_key":188,"explanation":229},"019f56bb-b906-7f0f-8827-d2eadc61d27b","Bir pipeline job'unun bir cloud sağlayıcısına deploy yapabilmesi için bir API key'e ihtiyacı var. CI\u002FCD pipeline'ında bu tür bir secret'ı yönetmek için yaygın pratiğe en uygun yaklaşım hangisidir?",[221,223,225,227],{"key":179,"text":222},"API key'i doğrudan pipeline YAML dosyasına hardcode etmek, böylece her takım arkadaşı görüp yeniden kullanabilir.",{"key":182,"text":224},"API key'i pull request'e yorum olarak yapıştırmak, böylece reviewer'lar doğru olduğunu teyit edebilir.",{"key":185,"text":226},"Hataları debug etmek daha kolay olsun diye job başında API key'i pipeline log'larına yazdırmak.",{"key":188,"text":228},"API key'i pipeline'ın yerleşik secret store'unda saklamak ve maskelenmiş bir environment variable olarak referans vermek.","CI\u002FCD araçları, hassas değerlerin at-rest şifrelenmesi, yalnızca çalışma zamanında enjekte edilmesi ve log'larda maskelenmesi için tam olarak bu amaçla özel bir secret store sunar — version control'da veya düz metinde açığa çıkmasını önler. a, bir credential'ı version-controlled ve geniş çapta okunabilir kaynak koduna koyar. b, onu bir PR yorumunda ifşa eder ki bu repository'nin kendisinden bile daha az kontrollüdür. c, bilerek yazdırarak maskelemeyi işlevsiz kılar ve log erişimi olan herkese ifşa riski yaratır.",{"id":231,"topic":55,"difficulty":175,"body":232,"options":233,"correct_key":185,"explanation":242},"019f56bb-b907-7643-a4fe-285e576fb35a","Bir pipeline job config'i stage'lerini şöyle listeliyor:\n```yaml\npipeline:\n  stop-on-failure: true\nsteps:\n  - lint\n  - unit-test\n  - integration-test\n  - deploy\n```\n`stop-on-failure: true` ile `unit-test` adımı başarısız olursa ne olur?",[234,236,238,240],{"key":179,"text":235},"Pipeline, `integration-test`'e geçmeden önce `unit-test`'i otomatik olarak üç kere yeniden dener.",{"key":182,"text":237},"Pipeline hatayı görmezden gelir ve `integration-test` ile `deploy`'u planlandığı gibi çalıştırmaya devam eder.",{"key":185,"text":239},"Pipeline hemen durur; `integration-test` ve `deploy` atlanır, kalan adımlar çalıştırılmaz.",{"key":188,"text":241},"Pipeline durur ve `integration-test`'in çalışıp çalışmayacağının bir insan tarafından manuel onaylanmasını bekler.","`stop-on-failure` (fail-fast) politikası, bir adım başarısız olur olmaz pipeline'ın durması, muhtemelen ona bağımlı sonraki adımları çalıştırmaya devam etmemesi demektir; bu zaman kazandırır ve bozuk bir build'in deploy edilmesini önler. a, bazı araçların sunduğu ayrı ve ilgisiz bir özellik olan otomatik retry'ı uydurur, bu ayarın yaptığı şey değildir. b tam tersi davranışı tarif eder. d, bu ayarın ima etmediği bir manuel onay kapısı uydurur.",{"id":244,"topic":55,"difficulty":175,"body":245,"options":246,"correct_key":182,"explanation":255},"019f56bb-b907-7f17-ab5e-c6c81da2954e","Junior bir mühendis, her merge'den sonra production'a deploy'lar daha hızlı olsun diye pipeline'dan otomatik test stage'inin kaldırılmasını öneriyor. Bu öneriye karşı çıkmak için en güçlü gerekçe nedir?",[247,249,251,253],{"key":179,"text":248},"Otomatik testler yalnızca ilk geliştirme aşamasında faydalıdır, uygulama production'a ulaştıktan sonra değeri kalmaz.",{"key":182,"text":250},"Test stage'i olmadan pipeline, regresyonları canlı ortama ulaşmadan önce yakalayamaz.",{"key":185,"text":252},"Pipeline config dosyasından bir stage kaldırmak genellikle pipeline aracının kendisinin çalışmayı durdurmasına neden olur.",{"key":188,"text":254},"Test stage'leri her CI\u002FCD aracı tarafından zorunlu kılınır ve bir pipeline tanımından teknik olarak kaldırılamaz.","Test stage'i, kötü bir değişikliğin kullanıcılara ulaşmadan önce regresyonları yakalayan otomatik kapıdır — onu kaldırmak, daha hızlı bir pipeline karşılığında bozuk davranış gönderme riskinde gerçek bir artış anlamına gelir. a yanlış bir genellemedir; testler bir projenin tüm ömrü boyunca değerlidir. c uydurma bir araç arızası uydurur. d de yanlıştır — çoğu araç stage'lerin serbestçe kaldırılmasına izin verir, bu kötü bir pratiktir ama teknik olarak imkânsız değildir.",{"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},[9,437],"en",[439,440],"google","github",21750,true]