[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:ml-engineer\u002Fdl-sequence-attention":4,"config":170},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":76,"samples":84},"ml-engineer","ML Engineer","","dl-sequence-attention","Dl Sequence Attention","en",75,1500,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,49,52,55,58,61,64,67,70,73],{"key":19,"name":20,"count":11},"cml-distance-clustering-dimreduction","Cml Distance Clustering Dimreduction",{"key":22,"name":23,"count":11},"cml-gradient-boosting-mechanics","Cml Gradient Boosting Mechanics",{"key":25,"name":26,"count":11},"cml-linear-logistic-internals","Cml Linear Logistic Internals",{"key":28,"name":29,"count":11},"cml-probabilistic-models-calibration","Cml Probabilistic Models Calibration",{"key":31,"name":32,"count":11},"cml-svm-kernels-margins","Cml Svm Kernels Margins",{"key":34,"name":35,"count":11},"cml-trees-randomforest-internals","Cml Trees Randomforest Internals",{"key":37,"name":38,"count":11},"dl-architecture-layers","Dl Architecture Layers",{"key":40,"name":41,"count":11},"dl-initialization-optimizers","Dl Initialization Optimizers",{"key":43,"name":44,"count":11},"dl-losses-output-layers","Dl Losses Output Layers",{"key":46,"name":47,"count":11},"dl-normalization-regularization","Dl Normalization Regularization",{"key":8,"name":9,"count":11},{"key":50,"name":51,"count":11},"dl-training-dynamics-backprop","Dl Training Dynamics Backprop",{"key":53,"name":54,"count":11},"ml-data-preparation","Ml Data Preparation",{"key":56,"name":57,"count":11},"ml-deployment-serving","Ml Deployment Serving",{"key":59,"name":60,"count":11},"ml-experimentation-reproducibility","Ml Experimentation Reproducibility",{"key":62,"name":63,"count":11},"ml-model-selection-tuning","Ml Model Selection Tuning",{"key":65,"name":66,"count":11},"ml-model-training-evaluation","Ml Model Training Evaluation",{"key":68,"name":69,"count":11},"ml-monitoring-drift","Ml Monitoring Drift",{"key":71,"name":72,"count":11},"ml-problem-framing","Ml Problem Framing",{"key":74,"name":75,"count":11},"ml-scaling-performance","Ml Scaling Performance",[77,81],{"key":78,"name":79,"count":80},"classical-ml","Classical ML",450,{"key":82,"name":83,"count":80},"deep-learning","Deep Learning",[85,103,117,131,144,157],{"id":86,"topic":9,"difficulty":87,"body":88,"options":89,"correct_key":97,"explanation":102},"01a0499c-f17b-7826-890f-9cdcf492e1cd",1,"In a vanilla recurrent network unrolled over a sequence of length T, how are the recurrent weight matrices used across the T steps?",[90,93,96,99],{"key":91,"text":92},"a","A distinct recurrent matrix is learned per step, so a longer sequence needs proportionally more parameters",{"key":94,"text":95},"b","Only the input projection is shared; a fresh recurrent matrix is allocated for every step of the sequence",{"key":97,"text":98},"c","The same matrices are reused at every step, so the parameter count is independent of sequence length",{"key":100,"text":101},"d","The matrices are shared across the batch but resampled from the initializer at each step of the sequence","Recurrence means one cell function is applied repeatedly, so the same input-to-hidden and hidden-to-hidden matrices act at every step. That is exactly why the same trained network can process sequences of any length, and why what makes a recurrent layer larger is a wider hidden state rather than a longer input.",{"id":104,"topic":9,"difficulty":105,"body":106,"options":107,"correct_key":91,"explanation":116},"01a0499c-f17c-73c5-b5c2-b6ff26986c86",2,"PyTorch 2.8. `lstm = nn.LSTM(input_size=6, hidden_size=10, batch_first=True)` and `x` has shape `(3, 7, 6)`. After `output, (h_n, c_n) = lstm(x)`, what are the shapes of `output` and `h_n`?",[108,110,112,114],{"key":91,"text":109},"`output` is `(3, 7, 10)` and `h_n` is `(1, 3, 10)`",{"key":94,"text":111},"`output` is `(3, 7, 6)` and `h_n` is `(3, 10)`",{"key":97,"text":113},"`output` is `(7, 3, 10)` and `h_n` is `(3, 1, 10)`",{"key":100,"text":115},"`output` is `(3, 10)` and `h_n` is `(3, 7, 10)`","The layer emits one hidden vector per timestep, so with `batch_first=True` the stacked outputs keep the batch and time axes and swap the feature axis to `hidden_size`. The final state is returned separately and is indexed by layer-direction first, which is why it carries a leading axis of size 1 for a single unidirectional layer.",{"id":118,"topic":9,"difficulty":119,"body":120,"options":121,"correct_key":97,"explanation":130},"01a0499c-f17c-7ab4-83cb-101d80f35e1e",3,"You build `nn.LSTM(input_size=8, hidden_size=16)` in PyTorch 2.8 and sum `p.numel()` over its parameters. Which count do you get, and why?",[122,124,126,128],{"key":91,"text":123},"416, because one weight block of shape (16, 8) plus one of shape (16, 16) plus a bias covers the cell",{"key":94,"text":125},"832, because two gates need a full input and recurrent projection each plus their biases",{"key":97,"text":127},"1664, because four gates each need an input projection, a recurrent projection and two bias vectors",{"key":100,"text":129},"1600, because four gates need input and recurrent projections but the cell keeps a single bias vector","The layer packs the four gate pre-activations into one block, giving weights of shape (4*16, 8) and (4*16, 16), and PyTorch keeps two separate bias vectors of length 4*16 for the input and recurrent sides. That is 4*(16*8 + 16*16 + 2*16) = 1664, measured directly on the module.",{"id":132,"topic":9,"difficulty":105,"body":133,"options":134,"correct_key":94,"explanation":143},"01a0499c-f17d-74c0-9530-872a4cbdf620","For the same input and hidden sizes, how does a GRU's parameter count compare with an LSTM's, and what structural fact explains the ratio?",[135,137,139,141],{"key":91,"text":136},"They are equal, because a GRU uses the same four gates but ties the input and forget gates together",{"key":94,"text":138},"A GRU has three quarters as many, because it has three gated blocks instead of four",{"key":97,"text":140},"A GRU has half as many, because it drops both the cell state and the output gate",{"key":100,"text":142},"A GRU has more, because merging memory into the hidden state needs an extra projection","An LSTM computes four gated blocks of pre-activations while a GRU computes three, and each block costs the same input projection, recurrent projection and bias. Measured with input 10 and hidden 20, the GRU came out at 1920 against the LSTM's 2560, exactly a three-to-four ratio.",{"id":145,"topic":9,"difficulty":105,"body":146,"options":147,"correct_key":94,"explanation":156},"01a0499c-f17d-7ad1-a8f0-4d0c6264fedf","A recurrent stack is built with two layers running over the same sequence. At step t, what does the second layer take as its input?",[148,150,152,154],{"key":91,"text":149},"The first layer's final hidden state, broadcast unchanged to every step of the second layer",{"key":94,"text":151},"The first layer's hidden output at step t; depth and time remain separate axes",{"key":97,"text":153},"The raw input at step t again, with the two layers meeting only when their final states are concatenated",{"key":100,"text":155},"The concatenation of every first-layer output from step 0 up to step t, which is why the width grows with t","A stack is a recurrence in depth applied to the per-step output sequence of the layer below, so the second layer consumes one vector per timestep exactly as the first consumes one input per timestep. Rebuilding a two-layer module as two single-layer ones and feeding the first one's output sequence into the second reproduced the stacked module's output to float tolerance.",{"id":158,"topic":9,"difficulty":119,"body":159,"options":160,"correct_key":100,"explanation":169},"01a0499c-f17e-740e-8879-fc8b39da1f16","PyTorch 2.8. A self-attention layer has separate learned query and key projections. You softmax the scaled scores for a 10-token input and look at the weight matrix. How often should the largest weight in a row sit on the diagonal, that is on the token's own position?",[161,163,165,167],{"key":91,"text":162},"Always, because a vector's dot product with itself is the largest entry its row can hold",{"key":94,"text":164},"Usually, because a token's query and its key are two images of one vector and stay correlated",{"key":97,"text":166},"Never, because a token is excluded from its own key set and cannot read itself",{"key":100,"text":168},"No more often than any other column, since query and key are different images of the token","The query and the key for one token are two different linear images of it, so the diagonal score is an ordinary dot product between two unrelated vectors and carries no built-in advantage. Across five random draws with 10 tokens and width 16 the diagonal held the row maximum in 0 to 2 rows out of 10 and the mean diagonal weight stayed around the uniform value of 0.1; feeding the raw token vectors in as both query and key instead put the maximum on the diagonal in all 10 rows, which is where the intuition comes from.",{"fields":171,"seniorities":392,"interview_shapes":393,"locales":398,"oauth":400,"question_count":403,"coach_enabled":404,"jd_match_enabled":404},[172,197,217,233,257,270,289,308,330,349,364,386],{"key":173,"name_tr":174,"name_en":174,"sort":87,"specializations":175},"backend","Backend",[176,179,182,185,188,191,194],{"key":177,"name":178,"field":173},"general","Genel",{"key":180,"name":181,"field":173},"go","Go",{"key":183,"name":184,"field":173},"python","Python",{"key":186,"name":187,"field":173},"java","Java",{"key":189,"name":190,"field":173},"csharp","C#\u002F.NET",{"key":192,"name":193,"field":173},"nodejs","Node.js",{"key":195,"name":196,"field":173},"php","PHP",{"key":198,"name_tr":199,"name_en":199,"sort":105,"specializations":200},"frontend","Frontend",[201,202,205,208,211,214],{"key":177,"name":178,"field":198},{"key":203,"name":204,"field":198},"javascript","JavaScript",{"key":206,"name":207,"field":198},"typescript","TypeScript",{"key":209,"name":210,"field":198},"react","React",{"key":212,"name":213,"field":198},"vue","Vue",{"key":215,"name":216,"field":198},"angular","Angular",{"key":218,"name_tr":219,"name_en":219,"sort":119,"specializations":220},"fullstack","Fullstack",[221,222,223,224,225,226,227,228,229,230,231,232],{"key":177,"name":178,"field":218},{"key":180,"name":181,"field":173},{"key":183,"name":184,"field":173},{"key":186,"name":187,"field":173},{"key":189,"name":190,"field":173},{"key":192,"name":193,"field":173},{"key":195,"name":196,"field":173},{"key":203,"name":204,"field":198},{"key":206,"name":207,"field":198},{"key":209,"name":210,"field":198},{"key":212,"name":213,"field":198},{"key":215,"name":216,"field":198},{"key":234,"name_tr":235,"name_en":235,"sort":236,"specializations":237},"devops-cloud","DevOps \u002F Cloud",4,[238,239,242,245,248,251,254],{"key":177,"name":178,"field":234},{"key":240,"name":241,"field":234},"aws","AWS",{"key":243,"name":244,"field":234},"gcp","GCP",{"key":246,"name":247,"field":234},"azure","Azure",{"key":249,"name":250,"field":234},"kubernetes","Kubernetes",{"key":252,"name":253,"field":234},"terraform","Terraform",{"key":255,"name":256,"field":234},"linux","Linux",{"key":258,"name_tr":259,"name_en":259,"sort":260,"specializations":261},"ai-engineer","AI Engineer",5,[262,263,264,267],{"key":177,"name":178,"field":258},{"key":183,"name":184,"field":258},{"key":265,"name":266,"field":258},"llm-rag","LLM\u002FRAG",{"key":268,"name":269,"field":258},"mlops","MLOps",{"key":271,"name_tr":272,"name_en":273,"sort":274,"specializations":275},"database","Veritabanı","Database",6,[276,277,280,283,286],{"key":177,"name":178,"field":271},{"key":278,"name":279,"field":271},"postgresql","PostgreSQL",{"key":281,"name":282,"field":271},"mysql","MySQL",{"key":284,"name":285,"field":271},"mongodb","MongoDB",{"key":287,"name":288,"field":271},"redis","Redis",{"key":290,"name_tr":291,"name_en":292,"sort":293,"specializations":294},"mobile","Mobil","Mobile",7,[295,296,299,302,305],{"key":177,"name":178,"field":290},{"key":297,"name":298,"field":290},"ios-swift","iOS (Swift)",{"key":300,"name":301,"field":290},"android-kotlin","Android (Kotlin)",{"key":303,"name":304,"field":290},"flutter","Flutter",{"key":306,"name":307,"field":290},"react-native","React Native",{"key":309,"name_tr":310,"name_en":311,"sort":312,"specializations":313},"security","Güvenlik","Security",8,[314,315,318,321,324,327],{"key":177,"name":178,"field":309},{"key":316,"name":317,"field":309},"appsec","AppSec",{"key":319,"name":320,"field":309},"offensive-pentest","Offensive \u002F Pentest",{"key":322,"name":323,"field":309},"cloud-security","Cloud Security",{"key":325,"name":326,"field":309},"devsecops","DevSecOps",{"key":328,"name":329,"field":309},"blue-team-incident","Blue Team \u002F Incident",{"key":331,"name_tr":332,"name_en":333,"sort":334,"specializations":335},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[336,337,340,343,346],{"key":177,"name":178,"field":331},{"key":338,"name":339,"field":331},"test-automation","Test Automation",{"key":341,"name":342,"field":331},"sdet","SDET",{"key":344,"name":345,"field":331},"performance-testing","Performance Testing",{"key":347,"name":348,"field":331},"mobile-qa","Mobile QA",{"key":350,"name_tr":351,"name_en":351,"sort":352,"specializations":353},"data-engineer","Data Engineer",10,[354,355,358,361],{"key":177,"name":178,"field":350},{"key":356,"name":357,"field":350},"pipelines-etl","Pipelines \u002F ETL",{"key":359,"name":360,"field":350},"streaming","Streaming",{"key":362,"name":363,"field":350},"warehousing","Warehousing",{"key":365,"name_tr":366,"name_en":367,"sort":368,"specializations":369},"game-dev","Oyun Geliştirme","Game Development",11,[370,371,374,377,380,383],{"key":177,"name":178,"field":365},{"key":372,"name":373,"field":365},"unity-csharp","Unity (C#)",{"key":375,"name":376,"field":365},"unreal-cpp","Unreal (C++)",{"key":378,"name":379,"field":365},"gameplay","Gameplay",{"key":381,"name":382,"field":365},"graphics-rendering","Graphics \u002F Rendering",{"key":384,"name":385,"field":365},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":5,"name_tr":6,"name_en":6,"sort":387,"specializations":388},12,[389,390,391],{"key":177,"name":178,"field":5},{"key":78,"name":79,"field":5},{"key":82,"name":83,"field":5},[14,15,16],{"junior":394,"mid":396,"senior":397},{"questions":395,"median_sec":3},20,{"questions":395,"median_sec":3},{"questions":395,"median_sec":3},[399,10],"tr",[401,402],"google","github",28050,true]