[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:data-engineer\u002Fdata-pipeline-design":4,"config":126},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":40,"samples":41},"data-engineer","Data Engineer","","data-pipeline-design","Data Pipeline Design","en",75,600,[14,15,16],"junior","mid","senior",[18,21,24,27,28,31,34,37],{"key":19,"name":20,"count":11},"data-governance-lineage","Data Governance Lineage",{"key":22,"name":23,"count":11},"data-modeling-warehousing","Data Modeling Warehousing",{"key":25,"name":26,"count":11},"data-partitioning-scaling","Data Partitioning Scaling",{"key":8,"name":9,"count":11},{"key":29,"name":30,"count":11},"data-pipeline-orchestration","Data Pipeline Orchestration",{"key":32,"name":33,"count":11},"data-pipeline-reliability","Data Pipeline Reliability",{"key":35,"name":36,"count":11},"data-quality-validation","Data Quality Validation",{"key":38,"name":39,"count":11},"streaming-fundamentals","Streaming Fundamentals",[],[42,60,73,86,100,113],{"id":43,"topic":9,"difficulty":44,"body":45,"options":46,"correct_key":51,"explanation":59},"019f6a40-d6fc-720d-979d-a2953797f612",1,"In an ETL pipeline, at which stage does data transformation happen relative to loading?",[47,50,53,56],{"key":48,"text":49},"a","Transformation happens after the data is loaded into the target system",{"key":51,"text":52},"b","Transformation happens before the data reaches the target system",{"key":54,"text":55},"c","Transformation happens only if the source schema changes",{"key":57,"text":58},"d","Transformation is skipped entirely and raw data is loaded as-is","ETL stands for Extract, Transform, Load: the data is transformed in a separate processing step before it ever reaches the target system. This is the defining difference from ELT, where transformation happens after loading, inside the target system.",{"id":61,"topic":9,"difficulty":44,"body":62,"options":63,"correct_key":57,"explanation":72},"019f6a40-d6fc-7d8c-9978-7095359f7337","What is the main practical reason a team might choose ELT over ETL when the target system is a powerful analytical database?",[64,66,68,70],{"key":48,"text":65},"ELT avoids the need for any data validation",{"key":51,"text":67},"ELT guarantees the source system will never change its schema",{"key":54,"text":69},"ELT removes the need to extract data from the source at all",{"key":57,"text":71},"ELT lets the target system handle heavy transforms","ELT loads raw data first and pushes transformation work into the target system, taking advantage of that system's own processing power for large-scale transformations, instead of doing the heavy lifting in a separate transform layer before loading.",{"id":74,"topic":9,"difficulty":44,"body":75,"options":76,"correct_key":48,"explanation":85},"019f6a40-d6fd-786a-bab6-ea1b2a17dcea","What does it mean for a pipeline step to be \"idempotent\"?",[77,79,81,83],{"key":48,"text":78},"Repeating it with the same input always gives one result",{"key":51,"text":80},"It can only be run exactly one time, ever, for a given dataset",{"key":54,"text":82},"It automatically retries itself until it succeeds",{"key":57,"text":84},"It never produces any errors regardless of the input","Idempotency means repeated executions with the same input leave the system in the same state as a single execution — no duplicate rows, no double-counted totals. It says nothing about retry mechanics or error-free behavior, and it does not forbid re-running a step.",{"id":87,"topic":9,"difficulty":88,"body":89,"options":90,"correct_key":54,"explanation":99},"019f6a40-d6fe-73c0-9c7e-0b869543665f",2,"A nightly pipeline fails halfway through loading yesterday's orders. An engineer simply re-runs the whole job from scratch. Why is this safe only if the load step is idempotent?",[91,93,95,97],{"key":48,"text":92},"Because re-running always makes the pipeline run faster the second time",{"key":51,"text":94},"Because idempotency guarantees the source system will not have changed",{"key":54,"text":96},"Rows loaded before the failure get duplicated",{"key":57,"text":98},"Because idempotency removes the need to extract the data again","If the load step already inserted some of yesterday's orders before failing, and it is not idempotent, re-running from scratch will insert those same rows again, causing duplicates and inflated totals. An idempotent load (e.g. upsert-style behavior conceptually) makes a full re-run safe.",{"id":101,"topic":9,"difficulty":44,"body":102,"options":103,"correct_key":51,"explanation":112},"019f6a40-d6ff-72f2-bcf6-2f818cec1003","What is the basic difference between a full extract and an incremental extract from a source system?",[104,106,108,110],{"key":48,"text":105},"A full extract only pulls rows changed since the last run, an incremental extract pulls everything",{"key":51,"text":107},"A full extract pulls everything each time, an incremental extract pulls only changed rows",{"key":54,"text":109},"A full extract can only be used once per source table for its entire lifetime",{"key":57,"text":111},"There is no meaningful difference, both always return identical row counts","A full extract re-reads the entire source dataset on every run, regardless of what changed. An incremental extract identifies and pulls only the rows that are new or changed since the previous run, which is cheaper for large, slowly-changing tables.",{"id":114,"topic":9,"difficulty":88,"body":115,"options":116,"correct_key":48,"explanation":125},"019f6a40-d6ff-7a7f-b50d-ff494a6b8521","Conceptually, what is the core idea behind change-data-capture style extraction, without reference to any specific tool?",[117,119,121,123],{"key":48,"text":118},"Detecting and extracting only the rows that changed at the source",{"key":51,"text":120},"Re-running the transformation logic twice to double-check correctness",{"key":54,"text":122},"Deleting old data from the source system after it has been extracted",{"key":57,"text":124},"Storing every extract as a full snapshot regardless of what changed","Change-data-capture style extraction is about identifying which rows changed (inserted, updated, deleted) since the last extraction and pulling only that delta, rather than re-scanning the entire source dataset every time.",{"fields":127,"seniorities":311,"interview_shapes":312,"locales":317,"oauth":319,"question_count":322,"coach_enabled":323,"jd_match_enabled":323},[128,153,173,190,214,227,246,265,287,294,298,305],{"key":129,"name_tr":130,"name_en":130,"sort":44,"specializations":131},"backend","Backend",[132,135,138,141,144,147,150],{"key":133,"name":134,"field":129},"general","Genel",{"key":136,"name":137,"field":129},"go","Go",{"key":139,"name":140,"field":129},"python","Python",{"key":142,"name":143,"field":129},"java","Java",{"key":145,"name":146,"field":129},"csharp","C#\u002F.NET",{"key":148,"name":149,"field":129},"nodejs","Node.js",{"key":151,"name":152,"field":129},"php","PHP",{"key":154,"name_tr":155,"name_en":155,"sort":88,"specializations":156},"frontend","Frontend",[157,158,161,164,167,170],{"key":133,"name":134,"field":154},{"key":159,"name":160,"field":154},"javascript","JavaScript",{"key":162,"name":163,"field":154},"typescript","TypeScript",{"key":165,"name":166,"field":154},"react","React",{"key":168,"name":169,"field":154},"vue","Vue",{"key":171,"name":172,"field":154},"angular","Angular",{"key":174,"name_tr":175,"name_en":175,"sort":176,"specializations":177},"fullstack","Fullstack",3,[178,179,180,181,182,183,184,185,186,187,188,189],{"key":133,"name":134,"field":174},{"key":136,"name":137,"field":129},{"key":139,"name":140,"field":129},{"key":142,"name":143,"field":129},{"key":145,"name":146,"field":129},{"key":148,"name":149,"field":129},{"key":151,"name":152,"field":129},{"key":159,"name":160,"field":154},{"key":162,"name":163,"field":154},{"key":165,"name":166,"field":154},{"key":168,"name":169,"field":154},{"key":171,"name":172,"field":154},{"key":191,"name_tr":192,"name_en":192,"sort":193,"specializations":194},"devops-cloud","DevOps \u002F Cloud",4,[195,196,199,202,205,208,211],{"key":133,"name":134,"field":191},{"key":197,"name":198,"field":191},"aws","AWS",{"key":200,"name":201,"field":191},"gcp","GCP",{"key":203,"name":204,"field":191},"azure","Azure",{"key":206,"name":207,"field":191},"kubernetes","Kubernetes",{"key":209,"name":210,"field":191},"terraform","Terraform",{"key":212,"name":213,"field":191},"linux","Linux",{"key":215,"name_tr":216,"name_en":216,"sort":217,"specializations":218},"ai-engineer","AI Engineer",5,[219,220,221,224],{"key":133,"name":134,"field":215},{"key":139,"name":140,"field":215},{"key":222,"name":223,"field":215},"llm-rag","LLM\u002FRAG",{"key":225,"name":226,"field":215},"mlops","MLOps",{"key":228,"name_tr":229,"name_en":230,"sort":231,"specializations":232},"database","Veritabanı","Database",6,[233,234,237,240,243],{"key":133,"name":134,"field":228},{"key":235,"name":236,"field":228},"postgresql","PostgreSQL",{"key":238,"name":239,"field":228},"mysql","MySQL",{"key":241,"name":242,"field":228},"mongodb","MongoDB",{"key":244,"name":245,"field":228},"redis","Redis",{"key":247,"name_tr":248,"name_en":249,"sort":250,"specializations":251},"mobile","Mobil","Mobile",7,[252,253,256,259,262],{"key":133,"name":134,"field":247},{"key":254,"name":255,"field":247},"ios-swift","iOS (Swift)",{"key":257,"name":258,"field":247},"android-kotlin","Android (Kotlin)",{"key":260,"name":261,"field":247},"flutter","Flutter",{"key":263,"name":264,"field":247},"react-native","React Native",{"key":266,"name_tr":267,"name_en":268,"sort":269,"specializations":270},"security","Güvenlik","Security",8,[271,272,275,278,281,284],{"key":133,"name":134,"field":266},{"key":273,"name":274,"field":266},"appsec","AppSec",{"key":276,"name":277,"field":266},"offensive-pentest","Offensive \u002F Pentest",{"key":279,"name":280,"field":266},"cloud-security","Cloud Security",{"key":282,"name":283,"field":266},"devsecops","DevSecOps",{"key":285,"name":286,"field":266},"blue-team-incident","Blue Team \u002F Incident",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[293],{"key":133,"name":134,"field":288},{"key":5,"name_tr":6,"name_en":6,"sort":295,"specializations":296},10,[297],{"key":133,"name":134,"field":5},{"key":299,"name_tr":300,"name_en":301,"sort":302,"specializations":303},"game-dev","Oyun Geliştirme","Game Development",11,[304],{"key":133,"name":134,"field":299},{"key":306,"name_tr":307,"name_en":307,"sort":308,"specializations":309},"ml-engineer","ML Engineer",12,[310],{"key":133,"name":134,"field":306},[14,15,16],{"junior":313,"mid":315,"senior":316},{"questions":314,"median_sec":3},20,{"questions":314,"median_sec":3},{"questions":314,"median_sec":3},[318,10],"tr",[320,321],"google","github",21750,true]