[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ml-engineer\u002Fsenior":4,"config":126},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":41,"samples":42},"ml-engineer","ML Engineer","senior","","tr",395,600,[13,14,7],"junior","mid",[16,20,23,26,29,32,35,38],{"key":17,"name":18,"count":19},"ml-data-preparation","Ml Data Preparation",75,{"key":21,"name":22,"count":19},"ml-deployment-serving","Ml Deployment Serving",{"key":24,"name":25,"count":19},"ml-experimentation-reproducibility","Ml Experimentation Reproducibility",{"key":27,"name":28,"count":19},"ml-model-selection-tuning","Ml Model Selection Tuning",{"key":30,"name":31,"count":19},"ml-model-training-evaluation","Ml Model Training Evaluation",{"key":33,"name":34,"count":19},"ml-monitoring-drift","Ml Monitoring Drift",{"key":36,"name":37,"count":19},"ml-problem-framing","Ml Problem Framing",{"key":39,"name":40,"count":19},"ml-scaling-performance","Ml Scaling Performance",[],[43,61,74,87,100,113],{"id":44,"topic":18,"difficulty":45,"body":46,"options":47,"correct_key":58,"explanation":60},"019f6b80-b76a-7695-a10b-6a7b8522978b",3,"Bir kredinin temerrüde düşüp düşmeyeceğini tahmin eden bir modelde 'days_since_last_payment_before_default' adlı bir feature var; bu feature yalnızca gerçekten temerrüde düşen krediler için doludur (null değildir) ve temerrüt olayından sonra kaydedilen kayıtlardan hesaplanmıştır. Bu feature'ı kullanmanın temel sorunu nedir?",[48,51,54,57],{"key":49,"text":50},"a","Kullanışlı olamayacak kadar çok eksik değeri var",{"key":52,"text":53},"b","Sayısal gibi görünen kategorik bir feature'dır",{"key":55,"text":56},"c","Diğer feature'larla aynı aralığa ölçeklenmesi gerekir",{"key":58,"text":59},"d","Target leakage'dır — ancak sonuçtan sonra bilinir","Bir feature'ın yalnızca hedef sonuç zaten gerçekleştiği için dolu olması (ve sonuç-sonrası kayıtlardan türetilmesi), klasik bir target leakage örneğidir: model, gerçek bir tahmin anında var olmayan bilgiye dayanmayı öğrenir, bu da gerçekçi olmayan derecede güçlü offline metriklere ama production'da çöken performansa yol açar.",{"id":62,"topic":18,"difficulty":45,"body":63,"options":64,"correct_key":49,"explanation":73},"019f6b80-b76d-7984-a0d6-85e2e39f0630","10.000 kayıtlık bir dolandırıcılık tespiti veri setinde yalnızca 150 dolandırıcılık vakası (%1,5) var. Herhangi bir önlem alınmadan sıradan rastgele bir %80\u002F%20 bölme kullanılırsa en olası sorun nedir?",[65,67,69,71],{"key":49,"text":66},"Test setinin dolandırıcılık oranı %1,5'ten uzaklaşabilir",{"key":52,"text":68},"Train tam 120, test tam 30 dolandırıcılık vakası alır",{"key":55,"text":70},"Sınıflar dengesiz olduğu için model hiç eğitilemez",{"key":58,"text":72},"%80\u002F%20 oranı otomatik olarak %50\u002F%50'ye döner","Nadir bir sınıf söz konusu olduğunda, sıradan rastgele bölme şans eseri, genel veri setinden belirgin biçimde farklı bir sınıf oranına sahip ya da çok az pozitif örnek içeren bir test seti üretebilir; bu da üzerinde hesaplanan her metriği gürültülü ve güvenilmez kılar. Stratified bölme oranı train ve test arasında tutarlı tutar, ancak kesin sayılar yine de yuvarlamaya bağlıdır ve otomatik olarak belirli bir sayıya sabitlenmez.",{"id":75,"topic":18,"difficulty":45,"body":76,"options":77,"correct_key":55,"explanation":86},"019f6b80-b770-76b5-a764-6fd059f9b709","Bir feature'ın değerlerinin çoğu için ortalaması 50, standart sapması 5. Bir değer ise 300. Bu değer ortalamadan yaklaşık kaç standart sapma uzaktadır ve bu ne anlama gelir?",[78,80,82,84],{"key":49,"text":79},"Yaklaşık 2, tamamen tipik bir değer",{"key":52,"text":81},"Yaklaşık 5, ortalamanın biraz altında",{"key":55,"text":83},"Yaklaşık 50, araştırılmaya değer aşırı bir outlier",{"key":58,"text":85},"Standart sapma tek bir değeri değerlendiremez","(300 - 50) \u002F 5 = 50, yani değer ortalamadan yaklaşık 50 standart sapma uzakta — bu, tipik eşiklere kıyasla (genelde sadece 2-3 standart sapma bile dikkate değer sayılır) son derece büyük bir sapmadır. Bu, değeri nasıl ele alacağınıza karar vermeden önce gerçek bir nadir vaka mı yoksa veri hatası mı olduğunu araştırmanız için güçlü bir sinyaldir.",{"id":88,"topic":18,"difficulty":45,"body":89,"options":90,"correct_key":55,"explanation":99},"019f6b80-b772-764f-b9fb-b29b0dde882a","Bir veri setinde A ve B adlı iki sayısal feature arasında 0,98 korelasyon katsayısı var. Bir mühendis ikisini de tutup tutmayacağına karar vermek istiyor. En makul sonuç nedir?",[91,93,95,97],{"key":49,"text":92},"0,98, feature'ların ilgisiz olduğu anlamına gelir",{"key":52,"text":94},"0,98 gerçek dünya feature'ları için imkansızdır",{"key":55,"text":96},"Feature'lar birbiriyle neredeyse redundant'tır",{"key":58,"text":98},"0,98, bir sütunun tamamen eksik olması gerektiği anlamına gelir","0,98 korelasyon katsayısı, iki feature'ın neredeyse mükemmel şekilde birlikte hareket ettiğini, yani birinin diğerinden büyük ölçüde tahmin edilebildiğini gösterir. Bu durumda ikisini de tutmak genelde çok az ek tahmin değeri katar ve redundancy ile karmaşıklığı artırır; bu yüzden birini kaldırmak ya da birleştirmek yaygın, makul bir seçimdir.",{"id":101,"topic":18,"difficulty":45,"body":102,"options":103,"correct_key":58,"explanation":112},"019f6b80-b774-703c-b386-06cd5529c6dd","Bir mühendis eğitimden önce ham bir veri seti üzerinde şu adımları planlıyor: (1) eksik değerleri doldur, (2) sayısal feature'ları ölçekle, (3) train\u002Ftest olarak böl, (4) modeli eğit. Kıdemli bir meslektaşı adım sıralamasını riskli buluyor. Ne değişmeli?",[104,106,108,110],{"key":49,"text":105},"Hiçbir şey, verilen sıra zaten güvenli",{"key":52,"text":107},"4. adım 3. adımdan önce çalışmalı",{"key":55,"text":109},"1 ve 2. adımlar tamamen kaldırılmalı",{"key":58,"text":111},"Önce böl, sonra 1-2. adımları yalnızca train'e fit et","İmputation ya da ölçekleme istatistiklerini bölmeden önce tüm veri seti üzerinde fit etmek, test bölümündeki bilginin bu hesaplanan değerleri etkilemesine izin verir — ince bir data leakage biçimidir. Güvenli sıralama: önce böl, sonra veriden türetilen her dönüşümü yalnızca eğitim bölümü üzerinde fit et ve zaten fit edilmiş dönüşümü test bölümüne değiştirmeden uygula.",{"id":114,"topic":22,"difficulty":45,"body":115,"options":116,"correct_key":55,"explanation":125},"019f6b80-b778-7b96-b7db-11baab359ac0","Bir ödeme sistemi her işlemi tamamlanmadan önce, birkaç yüz milisaniye içinde onaylamalı veya reddetmelidir. Burada batch yerine online inference'ın gerekli olmasının nedeni nedir?",[117,119,121,123],{"key":49,"text":118},"Çünkü online inference her veri kümesinde batch inference'tan daha yüksek doğruluk garanti eder",{"key":52,"text":120},"Çünkü batch inference hiçbir kullanım durumunda günde birden fazla çalıştırılamaz",{"key":55,"text":122},"Çünkü karar, işlem devam edebilmeden önce, o işleme özel ve senkron biçimde gerekiyor",{"key":58,"text":124},"Çünkü batch inference sayısal girdi özelliklerini hiç desteklemez","Karar, şu anda gerçekleşen belirli bir işlemi kilitliyor; bu yüzden o tek istek için senkron biçimde üretilmelidir. İşlem henüz var olmadığından yanıtı önceden hesaplamak mümkün değildir.",{"fields":127,"seniorities":312,"interview_shapes":313,"locales":318,"oauth":320,"question_count":323,"coach_enabled":324,"jd_match_enabled":324},[128,154,175,191,215,228,247,266,288,295,301,308],{"key":129,"name_tr":130,"name_en":130,"sort":131,"specializations":132},"backend","Backend",1,[133,136,139,142,145,148,151],{"key":134,"name":135,"field":129},"general","Genel",{"key":137,"name":138,"field":129},"go","Go",{"key":140,"name":141,"field":129},"python","Python",{"key":143,"name":144,"field":129},"java","Java",{"key":146,"name":147,"field":129},"csharp","C#\u002F.NET",{"key":149,"name":150,"field":129},"nodejs","Node.js",{"key":152,"name":153,"field":129},"php","PHP",{"key":155,"name_tr":156,"name_en":156,"sort":157,"specializations":158},"frontend","Frontend",2,[159,160,163,166,169,172],{"key":134,"name":135,"field":155},{"key":161,"name":162,"field":155},"javascript","JavaScript",{"key":164,"name":165,"field":155},"typescript","TypeScript",{"key":167,"name":168,"field":155},"react","React",{"key":170,"name":171,"field":155},"vue","Vue",{"key":173,"name":174,"field":155},"angular","Angular",{"key":176,"name_tr":177,"name_en":177,"sort":45,"specializations":178},"fullstack","Fullstack",[179,180,181,182,183,184,185,186,187,188,189,190],{"key":134,"name":135,"field":176},{"key":137,"name":138,"field":129},{"key":140,"name":141,"field":129},{"key":143,"name":144,"field":129},{"key":146,"name":147,"field":129},{"key":149,"name":150,"field":129},{"key":152,"name":153,"field":129},{"key":161,"name":162,"field":155},{"key":164,"name":165,"field":155},{"key":167,"name":168,"field":155},{"key":170,"name":171,"field":155},{"key":173,"name":174,"field":155},{"key":192,"name_tr":193,"name_en":193,"sort":194,"specializations":195},"devops-cloud","DevOps \u002F Cloud",4,[196,197,200,203,206,209,212],{"key":134,"name":135,"field":192},{"key":198,"name":199,"field":192},"aws","AWS",{"key":201,"name":202,"field":192},"gcp","GCP",{"key":204,"name":205,"field":192},"azure","Azure",{"key":207,"name":208,"field":192},"kubernetes","Kubernetes",{"key":210,"name":211,"field":192},"terraform","Terraform",{"key":213,"name":214,"field":192},"linux","Linux",{"key":216,"name_tr":217,"name_en":217,"sort":218,"specializations":219},"ai-engineer","AI Engineer",5,[220,221,222,225],{"key":134,"name":135,"field":216},{"key":140,"name":141,"field":216},{"key":223,"name":224,"field":216},"llm-rag","LLM\u002FRAG",{"key":226,"name":227,"field":216},"mlops","MLOps",{"key":229,"name_tr":230,"name_en":231,"sort":232,"specializations":233},"database","Veritabanı","Database",6,[234,235,238,241,244],{"key":134,"name":135,"field":229},{"key":236,"name":237,"field":229},"postgresql","PostgreSQL",{"key":239,"name":240,"field":229},"mysql","MySQL",{"key":242,"name":243,"field":229},"mongodb","MongoDB",{"key":245,"name":246,"field":229},"redis","Redis",{"key":248,"name_tr":249,"name_en":250,"sort":251,"specializations":252},"mobile","Mobil","Mobile",7,[253,254,257,260,263],{"key":134,"name":135,"field":248},{"key":255,"name":256,"field":248},"ios-swift","iOS (Swift)",{"key":258,"name":259,"field":248},"android-kotlin","Android (Kotlin)",{"key":261,"name":262,"field":248},"flutter","Flutter",{"key":264,"name":265,"field":248},"react-native","React Native",{"key":267,"name_tr":268,"name_en":269,"sort":270,"specializations":271},"security","Güvenlik","Security",8,[272,273,276,279,282,285],{"key":134,"name":135,"field":267},{"key":274,"name":275,"field":267},"appsec","AppSec",{"key":277,"name":278,"field":267},"offensive-pentest","Offensive \u002F Pentest",{"key":280,"name":281,"field":267},"cloud-security","Cloud Security",{"key":283,"name":284,"field":267},"devsecops","DevSecOps",{"key":286,"name":287,"field":267},"blue-team-incident","Blue Team \u002F Incident",{"key":289,"name_tr":290,"name_en":291,"sort":292,"specializations":293},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[294],{"key":134,"name":135,"field":289},{"key":296,"name_tr":297,"name_en":297,"sort":298,"specializations":299},"data-engineer","Data Engineer",10,[300],{"key":134,"name":135,"field":296},{"key":302,"name_tr":303,"name_en":304,"sort":305,"specializations":306},"game-dev","Oyun Geliştirme","Game Development",11,[307],{"key":134,"name":135,"field":302},{"key":5,"name_tr":6,"name_en":6,"sort":309,"specializations":310},12,[311],{"key":134,"name":135,"field":5},[13,14,7],{"junior":314,"mid":316,"senior":317},{"questions":315,"median_sec":3},20,{"questions":315,"median_sec":3},{"questions":315,"median_sec":3},[9,319],"en",[321,322],"google","github",21750,true]