[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en: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","","en",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,"A model predicting whether a loan will default includes a feature called 'days_since_last_payment_before_default', which is only populated (non-null) for loans that actually defaulted and is computed from records logged after the default event. What is the main issue with using this feature?",[48,51,54,57],{"key":49,"text":50},"a","It has too many missing values to be useful",{"key":52,"text":53},"b","It is a categorical feature disguised as numeric",{"key":55,"text":56},"c","It needs to be scaled with the other features",{"key":58,"text":59},"d","It is target leakage — only known after the outcome","A feature that is only populated because the target outcome already happened (and derived from post-outcome records) is a textbook case of target leakage: the model would learn to rely on information that does not exist at the moment a real prediction is needed, producing unrealistically strong offline metrics that collapse in production.",{"id":62,"topic":18,"difficulty":45,"body":63,"options":64,"correct_key":49,"explanation":73},"019f6b80-b76d-7984-a0d6-85e2e39f0630","A dataset of 10,000 fraud-detection records has only 150 fraud cases (1.5%). If a plain random 80\u002F20 split is used without any precaution, what is the most likely problem?",[65,67,69,71],{"key":49,"text":66},"The test set's fraud share may drift from 1.5%",{"key":52,"text":68},"Train gets exactly 120 fraud cases, test exactly 30",{"key":55,"text":70},"The model cannot train at all with imbalanced classes",{"key":58,"text":72},"The 80\u002F20 ratio automatically becomes 50\u002F50","With a rare class, a plain random split can by chance produce a test set whose class proportion diverges noticeably from the overall dataset, or contains very few positive examples, making any metric computed on it noisy and unreliable. Stratified splitting keeps the proportion consistent across train and test, though the exact counts still depend on rounding and are not automatically fixed at some particular number.",{"id":75,"topic":18,"difficulty":45,"body":76,"options":77,"correct_key":55,"explanation":86},"019f6b80-b770-76b5-a764-6fd059f9b709","A feature's values have a mean of 50 and a standard deviation of 5 across most of the dataset. One value is 300. Roughly how many standard deviations away from the mean is this value, and what does that suggest?",[78,80,82,84],{"key":49,"text":79},"About 2, a completely typical value",{"key":52,"text":81},"About 5, slightly below the mean",{"key":55,"text":83},"About 50, an extreme outlier worth checking",{"key":58,"text":85},"Standard deviation cannot judge single values","(300 - 50) \u002F 5 = 50, so the value sits about 50 standard deviations from the mean — an extremely large deviation compared to typical thresholds (often just 2-3 standard deviations are already considered notable). This is a strong signal to investigate whether the value is a genuine rare case or a data error before deciding how to treat it.",{"id":88,"topic":18,"difficulty":45,"body":89,"options":90,"correct_key":55,"explanation":99},"019f6b80-b772-764f-b9fb-b29b0dde882a","A dataset has two numeric features, A and B, with a correlation coefficient of 0.98 between them. A junior engineer wants to decide whether to keep both. What is the most reasonable conclusion?",[91,93,95,97],{"key":49,"text":92},"0.98 means the features are unrelated",{"key":52,"text":94},"0.98 is impossible for real-world features",{"key":55,"text":96},"The features are nearly redundant with one another",{"key":58,"text":98},"0.98 means one column must be all missing","A correlation coefficient of 0.98 indicates the two features move together almost perfectly, meaning one is largely predictable from the other. In that situation, keeping both usually adds little extra predictive value while increasing redundancy and complexity, so dropping or combining one of them is a common, reasonable choice.",{"id":101,"topic":18,"difficulty":45,"body":102,"options":103,"correct_key":58,"explanation":112},"019f6b80-b774-703c-b386-06cd5529c6dd","Before training, a junior engineer plans the following steps on a raw dataset: (1) impute missing values, (2) scale numeric features, (3) split into train\u002Ftest, (4) train the model. A senior colleague flags step ordering as risky. What should change?",[104,106,108,110],{"key":49,"text":105},"Nothing, the given order is already safe",{"key":52,"text":107},"Step 4 should run before step 3",{"key":55,"text":109},"Steps 1 and 2 should be removed entirely",{"key":58,"text":111},"Split first, then fit steps 1-2 on train only","Fitting imputation or scaling statistics on the full dataset before splitting lets information from the test portion influence those computed values — a subtle form of data leakage. The safe order is: split first, then fit any data-derived transformation exclusively on the training split, and apply the already-fitted transformation to the test split unchanged.",{"id":114,"topic":22,"difficulty":45,"body":115,"options":116,"correct_key":55,"explanation":125},"019f6b80-b778-7b96-b7db-11baab359ac0","A payment system must approve or decline each transaction before it completes, within a couple hundred milliseconds. Why is online inference required here rather than batch?",[117,119,121,123],{"key":49,"text":118},"Because online inference guarantees a higher accuracy score than batch inference on every dataset",{"key":52,"text":120},"Because batch inference cannot be run more than once per day for any use case",{"key":55,"text":122},"Because the decision is needed synchronously, per transaction, before the transaction can proceed",{"key":58,"text":124},"Because batch inference does not support numeric input features at all","The decision gates a specific transaction that is happening right now, so it must be produced synchronously for that single request. Precomputing an answer ahead of time is not possible because the transaction did not exist yet.",{"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},[319,9],"tr",[321,322],"google","github",21750,true]