[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:data-engineer\u002Fst-flink-time-watermarks-windows":4,"config":190},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-flink-time-watermarks-windows","St Flink Time Watermarks Windows","tr",75,1950,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,61,64,67,70,73,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":8,"name":9,"count":11},{"key":62,"name":63,"count":11},"st-kafka-broker-storage-replication","St Kafka Broker Storage Replication",{"key":65,"name":66,"count":11},"st-kafka-connect-schema-registry","St Kafka Connect Schema Registry",{"key":68,"name":69,"count":11},"st-kafka-producer-consumer-semantics","St Kafka Producer Consumer Semantics",{"key":71,"name":72,"count":11},"streaming-fundamentals","Streaming Fundamentals",{"key":74,"name":75,"count":11},"st-streaming-joins-tables","St Streaming Joins Tables",{"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,138,151,164,177],{"id":107,"topic":9,"difficulty":108,"body":109,"options":110,"correct_key":115,"explanation":123},"01a00b9b-89b1-7d67-9275-b45c7c5cb448",1,"Flink DataStream API'sinde `TumblingEventTimeWindows.of(Time.seconds(10))` çağrısındaki tek süre parametresi neyi belirtir?",[111,114,117,120],{"key":112,"text":113},"a","Stream için watermark üretim aralığını",{"key":115,"text":116},"b","Her pencerenin sabit uzunluğunu",{"key":118,"text":119},"c","Pencere kapandıktan sonra geç olayların hâlâ kabul edileceği süreyi",{"key":121,"text":122},"d","Pencere sınırlarını epoch'tan kaydırmak için kullanılan offset'i","Tumbling window assigner tek bir boyut parametresi alır ve bu, her pencerenin ne kadar süreceğini belirler; tumbling pencerelerde ayrı bir slide yoktur çünkü slide=size'dır. Watermark üretim aralığı ayrı bir execution config'dir, izin verilen geç kalış süresi başka bir metotla ayarlanır, sınır offset'i de ayrı, opsiyonel bir parametredir — bunların hiçbiri bu tek argümanın kontrol ettiği şey değildir.",{"id":125,"topic":9,"difficulty":126,"body":127,"options":128,"correct_key":112,"explanation":137},"01a00b9b-89b3-7aba-8a04-81f30c24f4c2",2,"`SlidingEventTimeWindows.of(Time.minutes(1), Time.seconds(15))` tanımıyla tek bir olay kaç çakışan pencereye atanır?",[129,131,133,135],{"key":112,"text":130},"4 — pencere boyutu (60sn) slide değerine (15sn) bölünür",{"key":115,"text":132},"1, çünkü her olay yalnızca tek bir sliding window'a ait olabilir",{"key":118,"text":134},"15, slide değerinin kendisini çakışma sayısı sanarak",{"key":121,"text":136},"60, pencere boyutu değerinin kendisini çakışma sayısı sanarak","Sliding pencereler çakışır: bir olay, zaman damgasını kapsayan HER pencereye düşer ve bu sayı size\u002Fslide'a eşittir (60000ms\u002F15000ms=4). Sliding window'u tumbling gibi düşünüp her olayın tek pencereye düştüğünü varsaymak çakışmayı görmezden gelir; slide ya da size değerini doğrudan cevap sanmak parametreleri türetilmiş sayıyla karıştırır.",{"id":139,"topic":9,"difficulty":108,"body":140,"options":141,"correct_key":121,"explanation":150},"01a00b9b-89b4-7a5c-b9f7-4e0d71be1eb9","`EventTimeSessionWindows.withGap(Time.minutes(5))` tanımıyla, bir key için session window hangi koşulda kapanmaya (ateşlenmeye) hak kazanır?",[142,144,146,148],{"key":112,"text":143},"Pencere açıldıktan tam 5 dakika sonra, sonraki olaylardan bağımsız olarak",{"key":115,"text":145},"Tüm stream, tüm key'ler genelinde 5 dakika boyunca boşta kaldığında",{"key":118,"text":147},"O key için tam olarak 5 olay biriktiğinde",{"key":121,"text":149},"Watermark, o key'in `maxTimestamp`'ine (son olay + 5dk − 1ms) ulaştığında","Session pencereleri gap tabanlıdır ve key başına çalışır. Her olay session sonunu kendi zaman damgası artı yapılandırılmış gap'e uzatır; pencereler yarı-açık olduğundan (`[start, end)`), pencerenin `maxTimestamp()` değeri bu sondan 1 ms öncesidir, ve event-time trigger, watermark bu `maxTimestamp`'e ulaştığında ateşlenir. Flink'in boşluğun geçtiğini kanıtlamak için daha sonraki bir olay görmesi gerekmez. Bu; ilk olaydan başlayan sabit süre, global stream idleness ya da olay sayısı kuralı değildir.",{"id":152,"topic":9,"difficulty":126,"body":153,"options":154,"correct_key":118,"explanation":163},"01a00b9b-89b6-7c7f-9284-56be3cd4b7d7","Bir stream'i `GlobalWindows.create()` ile pencereleyip özel bir `Trigger` EKLEMEZSENİZ ne olur?",[155,157,159,161],{"key":112,"text":156},"Flink sessizce sabit 1 dakikalık tumbling window davranışına geri döner",{"key":115,"text":158},"Gelen her tek olay pencereyi anında ateşler ve bir sonuç emit eder",{"key":118,"text":160},"Pencere hiç sonuç emit etmez, çünkü varsayılan trigger asla FIRE dönmez",{"key":121,"text":162},"Job başlamadan derleme zamanında hatayla reddedilir","`GlobalWindows`, her elemanı tek ve hiç bitmeyen bir pencereye atar ve ne zaman ateşleneceğine tamamen açık bir `Trigger` karar verir; trigger verilmezse yerleşik varsayılan trigger hiçbir zaman FIRE dönmez, dolayısıyla hiçbir şey emit edilmez. Başka bir pencere tipine otomatik geri dönüş yoktur, olay başına ateşleme yoktur ve bu bir çalışma-zamanı davranışıdır, derleyicinin yakalayabileceği bir şey değildir.",{"id":165,"topic":9,"difficulty":108,"body":166,"options":167,"correct_key":112,"explanation":176},"01a00b9b-89ba-7806-88f0-91983eeddb3b","`WatermarkStrategy.forMonotonousTimestamps()` hangi tür kaynak için uygun bir seçimdir?",[168,170,172,174],{"key":112,"text":169},"Zaman damgaları kaynakta zaten azalmayan sırada üretilen bir stream",{"key":115,"text":171},"Olayların birbirine göre düzenli olarak birkaç saniye sırasız geldiği bir stream",{"key":118,"text":173},"Hiç zaman damgası taşımayan, tamamen processing-time'a dayanan bir stream",{"key":121,"text":175},"Aralarında hiçbir sıralama garantisi olmayan birden fazla partition'dan beslenen bir stream","Monotonic strateji watermark'ı o ana kadarki en büyük zaman damgasının kendisi olarak üretir, yani out-of-orderness'ı sıfır varsayar; zaman damgaları gerçekten sırasız geliyorsa bu strateji her yeni maksimumdan sonra watermark'ı hemen ileri iter, bu yüzden daha büyük bir zaman damgası görüldükten sonra gelen daha küçük zaman damgalı olaylar watermark'ın gerisinde kalır ve aslında geçerli olsalar da geç sayılır. Gerçek sırasızlık taşıyan ya da partition'lar arası sıralama garantisi olmayan kaynaklar bounded-out-of-orderness stratejisi ister; hiç zaman damgası taşımayan kaynağın da zaman damgası tabanlı bir watermark stratejisine ihtiyacı yoktur.",{"id":178,"topic":9,"difficulty":126,"body":179,"options":180,"correct_key":115,"explanation":189},"01a00b9b-89bd-781f-abca-4450d8bae307","```java\nWatermarkStrategy\n  .\u003CEvent>forBoundedOutOfOrderness(Duration.ofSeconds(5))\n  .withTimestampAssigner((e, ts) -> e.eventTime);\n```\nBu tanım watermark üretimini nasıl etkiler?",[181,183,185,187],{"key":112,"text":182},"5 saniyeden eski her olay kaynakta filtrelenir",{"key":115,"text":184},"Watermark, o ana kadarki en büyük event-time'dan yaklaşık 5 saniye geride kalır",{"key":118,"text":186},"Checkpoint aralığı artık sabit olarak tam 5 saniyeye kilitlenir",{"key":121,"text":188},"Her bir olay geldikten tam 5 saniye sonra o olay için bir watermark emit edilir","Bound, o ana kadarki en büyük zaman damgasından çıkarılan bir gecikme payıdır, yani watermark bu miktar kadar geride kalır; hiçbir veriyi filtrelemez, checkpoint ile ilgisi yoktur ve olay başına sabit bir gecikme de değildir — periyodik watermark emisyon aralığına bağlıdır, olaydan tam 5 saniye sonra değil.",{"fields":191,"seniorities":408,"interview_shapes":409,"locales":414,"oauth":416,"question_count":419,"coach_enabled":420,"jd_match_enabled":420},[192,217,237,254,278,291,310,329,351,370,377,399],{"key":193,"name_tr":194,"name_en":194,"sort":108,"specializations":195},"backend","Backend",[196,199,202,205,208,211,214],{"key":197,"name":198,"field":193},"general","Genel",{"key":200,"name":201,"field":193},"go","Go",{"key":203,"name":204,"field":193},"python","Python",{"key":206,"name":207,"field":193},"java","Java",{"key":209,"name":210,"field":193},"csharp","C#\u002F.NET",{"key":212,"name":213,"field":193},"nodejs","Node.js",{"key":215,"name":216,"field":193},"php","PHP",{"key":218,"name_tr":219,"name_en":219,"sort":126,"specializations":220},"frontend","Frontend",[221,222,225,228,231,234],{"key":197,"name":198,"field":218},{"key":223,"name":224,"field":218},"javascript","JavaScript",{"key":226,"name":227,"field":218},"typescript","TypeScript",{"key":229,"name":230,"field":218},"react","React",{"key":232,"name":233,"field":218},"vue","Vue",{"key":235,"name":236,"field":218},"angular","Angular",{"key":238,"name_tr":239,"name_en":239,"sort":240,"specializations":241},"fullstack","Fullstack",3,[242,243,244,245,246,247,248,249,250,251,252,253],{"key":197,"name":198,"field":238},{"key":200,"name":201,"field":193},{"key":203,"name":204,"field":193},{"key":206,"name":207,"field":193},{"key":209,"name":210,"field":193},{"key":212,"name":213,"field":193},{"key":215,"name":216,"field":193},{"key":223,"name":224,"field":218},{"key":226,"name":227,"field":218},{"key":229,"name":230,"field":218},{"key":232,"name":233,"field":218},{"key":235,"name":236,"field":218},{"key":255,"name_tr":256,"name_en":256,"sort":257,"specializations":258},"devops-cloud","DevOps \u002F Cloud",4,[259,260,263,266,269,272,275],{"key":197,"name":198,"field":255},{"key":261,"name":262,"field":255},"aws","AWS",{"key":264,"name":265,"field":255},"gcp","GCP",{"key":267,"name":268,"field":255},"azure","Azure",{"key":270,"name":271,"field":255},"kubernetes","Kubernetes",{"key":273,"name":274,"field":255},"terraform","Terraform",{"key":276,"name":277,"field":255},"linux","Linux",{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"ai-engineer","AI Engineer",5,[283,284,285,288],{"key":197,"name":198,"field":279},{"key":203,"name":204,"field":279},{"key":286,"name":287,"field":279},"llm-rag","LLM\u002FRAG",{"key":289,"name":290,"field":279},"mlops","MLOps",{"key":292,"name_tr":293,"name_en":294,"sort":295,"specializations":296},"database","Veritabanı","Database",6,[297,298,301,304,307],{"key":197,"name":198,"field":292},{"key":299,"name":300,"field":292},"postgresql","PostgreSQL",{"key":302,"name":303,"field":292},"mysql","MySQL",{"key":305,"name":306,"field":292},"mongodb","MongoDB",{"key":308,"name":309,"field":292},"redis","Redis",{"key":311,"name_tr":312,"name_en":313,"sort":314,"specializations":315},"mobile","Mobil","Mobile",7,[316,317,320,323,326],{"key":197,"name":198,"field":311},{"key":318,"name":319,"field":311},"ios-swift","iOS (Swift)",{"key":321,"name":322,"field":311},"android-kotlin","Android (Kotlin)",{"key":324,"name":325,"field":311},"flutter","Flutter",{"key":327,"name":328,"field":311},"react-native","React Native",{"key":330,"name_tr":331,"name_en":332,"sort":333,"specializations":334},"security","Güvenlik","Security",8,[335,336,339,342,345,348],{"key":197,"name":198,"field":330},{"key":337,"name":338,"field":330},"appsec","AppSec",{"key":340,"name":341,"field":330},"offensive-pentest","Offensive \u002F Pentest",{"key":343,"name":344,"field":330},"cloud-security","Cloud Security",{"key":346,"name":347,"field":330},"devsecops","DevSecOps",{"key":349,"name":350,"field":330},"blue-team-incident","Blue Team \u002F Incident",{"key":352,"name_tr":353,"name_en":354,"sort":355,"specializations":356},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[357,358,361,364,367],{"key":197,"name":198,"field":352},{"key":359,"name":360,"field":352},"test-automation","Test Automation",{"key":362,"name":363,"field":352},"sdet","SDET",{"key":365,"name":366,"field":352},"performance-testing","Performance Testing",{"key":368,"name":369,"field":352},"mobile-qa","Mobile QA",{"key":5,"name_tr":6,"name_en":6,"sort":371,"specializations":372},10,[373,374,375,376],{"key":197,"name":198,"field":5},{"key":96,"name":97,"field":5},{"key":100,"name":101,"field":5},{"key":103,"name":104,"field":5},{"key":378,"name_tr":379,"name_en":380,"sort":381,"specializations":382},"game-dev","Oyun Geliştirme","Game Development",11,[383,384,387,390,393,396],{"key":197,"name":198,"field":378},{"key":385,"name":386,"field":378},"unity-csharp","Unity (C#)",{"key":388,"name":389,"field":378},"unreal-cpp","Unreal (C++)",{"key":391,"name":392,"field":378},"gameplay","Gameplay",{"key":394,"name":395,"field":378},"graphics-rendering","Graphics \u002F Rendering",{"key":397,"name":398,"field":378},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":400,"name_tr":401,"name_en":401,"sort":402,"specializations":403},"ml-engineer","ML Engineer",12,[404,405],{"key":197,"name":198,"field":400},{"key":406,"name":407,"field":400},"classical-ml","Classical ML",[14,15,16],{"junior":410,"mid":412,"senior":413},{"questions":411,"median_sec":3},20,{"questions":411,"median_sec":3},{"questions":411,"median_sec":3},[10,415],"en",[417,418],"google","github",27600,true]