[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:data-engineer\u002Fst-streaming-joins-tables":4,"config":189},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":94,"samples":105},"data-engineer","Data Engineer","","st-streaming-joins-tables","St Streaming Joins Tables","en",75,1950,[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,76,79,82,85,88,91],{"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":28,"name":29,"count":11},"data-pipeline-design","Data Pipeline Design",{"key":31,"name":32,"count":11},"data-pipeline-orchestration","Data Pipeline Orchestration",{"key":34,"name":35,"count":11},"data-pipeline-reliability","Data Pipeline Reliability",{"key":37,"name":38,"count":11},"data-quality-validation","Data Quality Validation",{"key":40,"name":41,"count":11},"pe-airflow-scheduling-dependencies","Pe Airflow Scheduling Dependencies",{"key":43,"name":44,"count":11},"pe-dbt-models-materializations-tests","Pe Dbt Models Materializations Tests",{"key":46,"name":47,"count":11},"pe-file-formats-table-formats","Pe File Formats Table Formats",{"key":49,"name":50,"count":11},"pe-incremental-cdc-merge-mechanics","Pe Incremental Cdc Merge Mechanics",{"key":52,"name":53,"count":11},"pe-spark-api-semantics-udfs","Pe Spark Api Semantics Udfs",{"key":55,"name":56,"count":11},"pe-spark-execution-shuffle-partitions","Pe Spark Execution Shuffle Partitions",{"key":58,"name":59,"count":11},"st-flink-runtime-checkpointing-state","St Flink Runtime Checkpointing State",{"key":61,"name":62,"count":11},"st-flink-time-watermarks-windows","St Flink Time Watermarks Windows",{"key":64,"name":65,"count":11},"st-kafka-broker-storage-replication","St Kafka Broker Storage Replication",{"key":67,"name":68,"count":11},"st-kafka-connect-schema-registry","St Kafka Connect Schema Registry",{"key":70,"name":71,"count":11},"st-kafka-producer-consumer-semantics","St Kafka Producer Consumer Semantics",{"key":73,"name":74,"count":11},"streaming-fundamentals","Streaming Fundamentals",{"key":8,"name":9,"count":11},{"key":77,"name":78,"count":11},"wh-bigquery-execution-slots-cost","Wh Bigquery Execution Slots Cost",{"key":80,"name":81,"count":11},"wh-bigquery-storage-partitioning-clustering","Wh Bigquery Storage Partitioning Clustering",{"key":83,"name":84,"count":11},"wh-materialized-views-caching","Wh Materialized Views Caching",{"key":86,"name":87,"count":11},"wh-redshift-distribution-sort-vacuum","Wh Redshift Distribution Sort Vacuum",{"key":89,"name":90,"count":11},"wh-snowflake-compute-warehouses","Wh Snowflake Compute Warehouses",{"key":92,"name":93,"count":11},"wh-snowflake-storage-micropartitions","Wh Snowflake Storage Micropartitions",[95,99,102],{"key":96,"name":97,"count":98},"pipelines-etl","Pipelines \u002F ETL",450,{"key":100,"name":101,"count":98},"streaming","Streaming",{"key":103,"name":104,"count":98},"warehousing","Warehousing",[106,124,136,150,163,176],{"id":107,"topic":9,"difficulty":108,"body":109,"options":110,"correct_key":121,"explanation":123},"01a00b9b-8ac3-7404-b198-630aaae34f61",1,"In Apache Kafka Streams 4.1, what does a `KStream` represent?",[111,114,117,120],{"key":112,"text":113},"a","A bounded, offline dataset loaded once at application startup",{"key":115,"text":116},"b","A changelog where each new record for a key overwrites the previous value for that key",{"key":118,"text":119},"c","A fully replicated snapshot of a topic held by every application instance",{"key":121,"text":122},"d","An unbounded sequence of independent records, each treated as a new event","KStream models the topic as a record stream: every incoming record is a distinct, independent event, regardless of its key — there's no concept of one record replacing another for the same key. That's the KTable\u002FGlobalKTable interpretation, not KStream's.",{"id":125,"topic":9,"difficulty":108,"body":126,"options":127,"correct_key":118,"explanation":135},"01a00b9b-8ac4-747a-a364-a7cd29b5464f","In Apache Kafka Streams 4.1, what does a `KTable` represent?",[128,129,131,133],{"key":112,"text":122},{"key":115,"text":130},"A read-only, in-memory cache populated once at startup and not touched again",{"key":118,"text":132},"A changelog where a new record updates the key's value, and null deletes it",{"key":121,"text":134},"A fully replicated copy of a topic that every application instance materializes locally","KTable interprets the underlying topic as a changelog: each record is an upsert for its key (last value wins), and a record with a null value acts as a tombstone that removes the key. Option d describes GlobalKTable, not KTable.",{"id":137,"topic":9,"difficulty":138,"body":139,"options":140,"correct_key":112,"explanation":149},"01a00b9b-8ac5-7601-9745-aba0d3912ee6",2,"In Apache Kafka Streams 4.1, what distinguishes a `GlobalKTable` from a regular `KTable`?",[141,143,145,147],{"key":112,"text":142},"Every instance materializes the entire topic, not just its assigned partitions",{"key":115,"text":144},"A GlobalKTable can only be joined with another GlobalKTable, not with a KStream",{"key":118,"text":146},"A GlobalKTable stops receiving updates after the application starts",{"key":121,"text":148},"A GlobalKTable stores its data purely in memory without persisting a changelog","A regular KTable's state is partitioned like the rest of the topology — each instance only holds the partitions assigned to it. A GlobalKTable's topic is fully consumed by every instance, so each one holds a complete local copy of the table.",{"id":151,"topic":9,"difficulty":108,"body":152,"options":153,"correct_key":115,"explanation":162},"01a00b9b-8ac6-7ebf-869b-26a792ed633e","In Apache Kafka Streams 4.1, what is the primary purpose of a state store's changelog topic?",[154,156,158,160],{"key":112,"text":155},"To let downstream consumer applications read the store's current state directly",{"key":115,"text":157},"To durably back the local state store for restore after a crash or migration",{"key":118,"text":159},"To record which consumer group offsets have been committed for the store",{"key":121,"text":161},"To log every interactive query issued against the store for auditing","Every change applied to a persistent state store is also written to its changelog topic. If a task moves to a new instance or restarts after a failure, Kafka Streams replays that changelog to rebuild the store's contents before processing resumes.",{"id":164,"topic":9,"difficulty":138,"body":165,"options":166,"correct_key":121,"explanation":175},"01a00b9b-8ac7-7537-a401-68ba89fe149c","In Apache Kafka Streams 4.1, what cleanup policy is configured on a non-windowed state store's changelog topic?",[167,169,171,173],{"key":112,"text":168},"`cleanup.policy=delete`, so old records expire after a retention period",{"key":115,"text":170},"`cleanup.policy=compact,delete` combined with a fixed 24-hour retention",{"key":118,"text":172},"No cleanup policy; the topic grows without bound",{"key":121,"text":174},"`cleanup.policy=compact`, so only the latest record per key is retained","A non-windowed store's changelog mirrors the store's key-value contents, so Kafka Streams sets it to log compaction — Kafka retains only the latest record per key, which is exactly what's needed to restore the store's current state.",{"id":177,"topic":9,"difficulty":138,"body":178,"options":179,"correct_key":118,"explanation":188},"01a00b9b-8ac9-7ae9-b147-fb879e783fdf","In Apache Kafka Streams 4.1, why is a repartition topic sometimes created before a join or aggregation?",[180,182,184,186],{"key":112,"text":181},"To reduce the number of partitions when the source topic has too many",{"key":115,"text":183},"To create a backup copy of the source topic for disaster recovery",{"key":118,"text":185},"To move re-keyed records onto their correct partition",{"key":121,"text":187},"To convert a KTable back into a KStream before writing to a sink","Joins and aggregations require records to be co-partitioned by key. If an upstream operation changes the key, Kafka Streams inserts an internal repartition topic so the data gets reshuffled onto the partition that matches the new key.",{"fields":190,"seniorities":407,"interview_shapes":408,"locales":413,"oauth":415,"question_count":418,"coach_enabled":419,"jd_match_enabled":419},[191,216,236,253,277,290,309,328,350,369,376,398],{"key":192,"name_tr":193,"name_en":193,"sort":108,"specializations":194},"backend","Backend",[195,198,201,204,207,210,213],{"key":196,"name":197,"field":192},"general","Genel",{"key":199,"name":200,"field":192},"go","Go",{"key":202,"name":203,"field":192},"python","Python",{"key":205,"name":206,"field":192},"java","Java",{"key":208,"name":209,"field":192},"csharp","C#\u002F.NET",{"key":211,"name":212,"field":192},"nodejs","Node.js",{"key":214,"name":215,"field":192},"php","PHP",{"key":217,"name_tr":218,"name_en":218,"sort":138,"specializations":219},"frontend","Frontend",[220,221,224,227,230,233],{"key":196,"name":197,"field":217},{"key":222,"name":223,"field":217},"javascript","JavaScript",{"key":225,"name":226,"field":217},"typescript","TypeScript",{"key":228,"name":229,"field":217},"react","React",{"key":231,"name":232,"field":217},"vue","Vue",{"key":234,"name":235,"field":217},"angular","Angular",{"key":237,"name_tr":238,"name_en":238,"sort":239,"specializations":240},"fullstack","Fullstack",3,[241,242,243,244,245,246,247,248,249,250,251,252],{"key":196,"name":197,"field":237},{"key":199,"name":200,"field":192},{"key":202,"name":203,"field":192},{"key":205,"name":206,"field":192},{"key":208,"name":209,"field":192},{"key":211,"name":212,"field":192},{"key":214,"name":215,"field":192},{"key":222,"name":223,"field":217},{"key":225,"name":226,"field":217},{"key":228,"name":229,"field":217},{"key":231,"name":232,"field":217},{"key":234,"name":235,"field":217},{"key":254,"name_tr":255,"name_en":255,"sort":256,"specializations":257},"devops-cloud","DevOps \u002F Cloud",4,[258,259,262,265,268,271,274],{"key":196,"name":197,"field":254},{"key":260,"name":261,"field":254},"aws","AWS",{"key":263,"name":264,"field":254},"gcp","GCP",{"key":266,"name":267,"field":254},"azure","Azure",{"key":269,"name":270,"field":254},"kubernetes","Kubernetes",{"key":272,"name":273,"field":254},"terraform","Terraform",{"key":275,"name":276,"field":254},"linux","Linux",{"key":278,"name_tr":279,"name_en":279,"sort":280,"specializations":281},"ai-engineer","AI Engineer",5,[282,283,284,287],{"key":196,"name":197,"field":278},{"key":202,"name":203,"field":278},{"key":285,"name":286,"field":278},"llm-rag","LLM\u002FRAG",{"key":288,"name":289,"field":278},"mlops","MLOps",{"key":291,"name_tr":292,"name_en":293,"sort":294,"specializations":295},"database","Veritabanı","Database",6,[296,297,300,303,306],{"key":196,"name":197,"field":291},{"key":298,"name":299,"field":291},"postgresql","PostgreSQL",{"key":301,"name":302,"field":291},"mysql","MySQL",{"key":304,"name":305,"field":291},"mongodb","MongoDB",{"key":307,"name":308,"field":291},"redis","Redis",{"key":310,"name_tr":311,"name_en":312,"sort":313,"specializations":314},"mobile","Mobil","Mobile",7,[315,316,319,322,325],{"key":196,"name":197,"field":310},{"key":317,"name":318,"field":310},"ios-swift","iOS (Swift)",{"key":320,"name":321,"field":310},"android-kotlin","Android (Kotlin)",{"key":323,"name":324,"field":310},"flutter","Flutter",{"key":326,"name":327,"field":310},"react-native","React Native",{"key":329,"name_tr":330,"name_en":331,"sort":332,"specializations":333},"security","Güvenlik","Security",8,[334,335,338,341,344,347],{"key":196,"name":197,"field":329},{"key":336,"name":337,"field":329},"appsec","AppSec",{"key":339,"name":340,"field":329},"offensive-pentest","Offensive \u002F Pentest",{"key":342,"name":343,"field":329},"cloud-security","Cloud Security",{"key":345,"name":346,"field":329},"devsecops","DevSecOps",{"key":348,"name":349,"field":329},"blue-team-incident","Blue Team \u002F Incident",{"key":351,"name_tr":352,"name_en":353,"sort":354,"specializations":355},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[356,357,360,363,366],{"key":196,"name":197,"field":351},{"key":358,"name":359,"field":351},"test-automation","Test Automation",{"key":361,"name":362,"field":351},"sdet","SDET",{"key":364,"name":365,"field":351},"performance-testing","Performance Testing",{"key":367,"name":368,"field":351},"mobile-qa","Mobile QA",{"key":5,"name_tr":6,"name_en":6,"sort":370,"specializations":371},10,[372,373,374,375],{"key":196,"name":197,"field":5},{"key":96,"name":97,"field":5},{"key":100,"name":101,"field":5},{"key":103,"name":104,"field":5},{"key":377,"name_tr":378,"name_en":379,"sort":380,"specializations":381},"game-dev","Oyun Geliştirme","Game Development",11,[382,383,386,389,392,395],{"key":196,"name":197,"field":377},{"key":384,"name":385,"field":377},"unity-csharp","Unity (C#)",{"key":387,"name":388,"field":377},"unreal-cpp","Unreal (C++)",{"key":390,"name":391,"field":377},"gameplay","Gameplay",{"key":393,"name":394,"field":377},"graphics-rendering","Graphics \u002F Rendering",{"key":396,"name":397,"field":377},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":399,"name_tr":400,"name_en":400,"sort":401,"specializations":402},"ml-engineer","ML Engineer",12,[403,404],{"key":196,"name":197,"field":399},{"key":405,"name":406,"field":399},"classical-ml","Classical ML",[14,15,16],{"junior":409,"mid":411,"senior":412},{"questions":410,"median_sec":3},20,{"questions":410,"median_sec":3},{"questions":410,"median_sec":3},[414,10],"tr",[416,417],"google","github",27600,true]