[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr: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","tr",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,"Apache Kafka Streams 4.1'de bir `KStream` neyi temsil eder?",[111,114,117,120],{"key":112,"text":113},"a","Uygulama başlarken bir kez yüklenen, sınırlı, çevrimdışı bir veri kümesi",{"key":115,"text":116},"b","Aynı key için yeni bir kaydın önceki değeri üzerine yazdığı bir changelog",{"key":118,"text":119},"c","Her application instance'ının tuttuğu, bir topic'in tam kopyalanmış anlık görüntüsü",{"key":121,"text":122},"d","Her biri yeni bir olay olarak ele alınan, sınırsız, bağımsız kayıtlar dizisi","KStream, topic'i bir kayıt akışı olarak modeller: gelen her kayıt, key'inden bağımsız olarak ayrı ve bağımsız bir olaydır — aynı key için bir kaydın diğerinin yerine geçmesi diye bir şey yoktur. Bu, KStream'in değil KTable\u002FGlobalKTable'ın yorumudur.",{"id":125,"topic":9,"difficulty":108,"body":126,"options":127,"correct_key":118,"explanation":135},"01a00b9b-8ac4-747a-a364-a7cd29b5464f","Apache Kafka Streams 4.1'de bir `KTable` neyi temsil eder?",[128,129,131,133],{"key":112,"text":122},{"key":115,"text":130},"Yalnızca başlangıçta bir kez doldurulan, sonradan dokunulmayan salt-okunur bellek-içi cache",{"key":118,"text":132},"Yeni bir kaydın bir key'in güncel değerini güncellediği, null'ın ise sildiği bir changelog",{"key":121,"text":134},"Her application instance'ının yerelde materialize ettiği, bir topic'in tam kopyası","KTable, altındaki topic'i bir changelog olarak yorumlar: her kayıt kendi key'i için bir upsert'tir (son değer kazanır), null değerli bir kayıt ise o key'i kaldıran bir tombstone olarak davranır. d şıkkı KTable'ı değil GlobalKTable'ı tarif eder.",{"id":137,"topic":9,"difficulty":138,"body":139,"options":140,"correct_key":112,"explanation":149},"01a00b9b-8ac5-7601-9745-aba0d3912ee6",2,"Apache Kafka Streams 4.1'de bir `GlobalKTable`'ı sıradan bir `KTable`'dan ayıran nedir?",[141,143,145,147],{"key":112,"text":142},"Her instance, atanan partition'lar yerine topic'in tamamını yerelde materialize eder",{"key":115,"text":144},"Bir GlobalKTable yalnızca başka bir GlobalKTable ile join edilebilir, bir KStream ile edilemez",{"key":118,"text":146},"Bir GlobalKTable, uygulama başladıktan sonra güncelleme almayı bırakır",{"key":121,"text":148},"Bir GlobalKTable verisini yalnızca bellekte tutar ve bir changelog'a kalıcı hale getirmez","Sıradan bir KTable'ın state'i, topolojinin geri kalanı gibi partitionlanmıştır — her instance yalnızca kendisine atanan partition'ları tutar. Bir GlobalKTable'ın topic'i ise her instance tarafından tamamen tüketilir, yani her biri tablonun eksiksiz bir yerel kopyasını tutar.",{"id":151,"topic":9,"difficulty":108,"body":152,"options":153,"correct_key":115,"explanation":162},"01a00b9b-8ac6-7ebf-869b-26a792ed633e","Apache Kafka Streams 4.1'de bir state store'un changelog topic'inin temel amacı nedir?",[154,156,158,160],{"key":112,"text":155},"Downstream tüketici uygulamalarının store'un güncel state'ini doğrudan okuyabilmesini sağlamak",{"key":115,"text":157},"Yerel state store'u, bir çökme sonrası geri yüklenebilmesi için kalıcı olarak desteklemek",{"key":118,"text":159},"Store için hangi consumer group offset'lerinin commit edildiğini kaydetmek",{"key":121,"text":161},"Store'a karşı yapılan her interactive query'yi denetim amacıyla loglamak","Kalıcı bir state store'a uygulanan her değişiklik, aynı zamanda changelog topic'ine de yazılır. Bir task yeni bir instance'a taşındığında ya da bir hatanın ardından yeniden başladığında, Kafka Streams işlemeye devam etmeden önce store'un içeriğini yeniden kurmak için bu changelog'u replay eder.",{"id":164,"topic":9,"difficulty":138,"body":165,"options":166,"correct_key":121,"explanation":175},"01a00b9b-8ac7-7537-a401-68ba89fe149c","Apache Kafka Streams 4.1, windowed olmayan bir state store'un changelog topic'inde hangi cleanup policy'yi ayarlar?",[167,169,171,173],{"key":112,"text":168},"`cleanup.policy=delete`, böylece eski kayıtlar bir retention süresinin ardından silinir",{"key":115,"text":170},"`cleanup.policy=compact,delete`, sabit 24 saatlik bir retention ile birlikte",{"key":118,"text":172},"Herhangi bir cleanup policy yok; topic sınırsız büyür",{"key":121,"text":174},"`cleanup.policy=compact`, böylece key başına yalnızca en son kayıt tutulur","Windowed olmayan bir store'un changelog'u, store'un key-value içeriğini birebir yansıtır, bu yüzden Kafka Streams onu log compaction'a ayarlar — Kafka key başına yalnızca en son kaydı tutar, ki bu tam olarak store'un güncel state'ini geri yüklemek için gereken şeydir.",{"id":177,"topic":9,"difficulty":138,"body":178,"options":179,"correct_key":118,"explanation":188},"01a00b9b-8ac9-7ae9-b147-fb879e783fdf","Apache Kafka Streams 4.1'de, bir join ya da aggregation'dan önce bazen otomatik olarak bir repartition topic neden oluşturulur?",[180,182,184,186],{"key":112,"text":181},"Kaynak topic'in çok fazla partition'ı olduğunda partition sayısını azaltmak için",{"key":115,"text":183},"Felaket kurtarma amacıyla kaynak topic'in bir yedek kopyasını oluşturmak için",{"key":118,"text":185},"Yeniden key'lenen kayıtları doğru partition'a taşımak için",{"key":121,"text":187},"Bir sink'e yazmadan önce bir KTable'ı tekrar KStream'e dönüştürmek için","Join ve aggregation işlemleri, kayıtların key'e göre co-partitioned olmasını gerektirir. Upstream'deki bir işlem key'i değiştirirse, Kafka Streams veriyi yeni key'e uyan partition'a yeniden dağıtmak için dahili bir repartition topic ekler.",{"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},[10,414],"en",[416,417],"google","github",27600,true]