[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:ai-engineer\u002Fsenior":4,"config":193},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":98,"samples":109},"ai-engineer","AI Engineer","senior","","en",1285,2025,[13,14,7],"junior","mid",[16,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95],{"key":17,"name":18,"count":19},"agents-tool-use","Agents Tool Use",75,{"key":21,"name":22,"count":19},"aimlops-deployment-strategies-ml","Aimlops Deployment Strategies Ml",{"key":24,"name":25,"count":19},"aimlops-experiment-tracking-reproducibility","Aimlops Experiment Tracking Reproducibility",{"key":27,"name":28,"count":19},"aimlops-feature-store-data-versioning","Aimlops Feature Store Data Versioning",{"key":30,"name":31,"count":19},"aimlops-ml-cicd-pipelines","Aimlops Ml Cicd Pipelines",{"key":33,"name":34,"count":19},"aimlops-model-monitoring-drift-detection","Aimlops Model Monitoring Drift Detection",{"key":36,"name":37,"count":19},"aimlops-model-versioning-registry","Aimlops Model Versioning Registry",{"key":39,"name":40,"count":19},"aipy-async-concurrency-ml-serving","Aipy Async Concurrency Ml Serving",{"key":42,"name":43,"count":19},"aipy-data-pipeline-dataloader","Aipy Data Pipeline Dataloader",{"key":45,"name":46,"count":19},"aipy-gpu-memory-management","Aipy Gpu Memory Management",{"key":48,"name":49,"count":19},"aipy-numpy-vectorization-broadcasting","Aipy Numpy Vectorization Broadcasting",{"key":51,"name":52,"count":19},"aipy-python-ml-packaging-environments","Aipy Python Ml Packaging Environments",{"key":54,"name":55,"count":19},"aipy-tensor-ops-autograd","Aipy Tensor Ops Autograd",{"key":57,"name":58,"count":19},"embeddings-vector-search","Embeddings Vector Search",{"key":60,"name":61,"count":19},"evaluation-testing","Evaluation Testing",{"key":63,"name":64,"count":19},"fine-tuning-adaptation","Fine Tuning Adaptation",{"key":66,"name":67,"count":19},"inference-serving","Inference Serving",{"key":69,"name":70,"count":19},"llm-fundamentals","Llm Fundamentals",{"key":72,"name":73,"count":19},"prompt-engineering","Prompt Engineering",{"key":75,"name":76,"count":19},"rag-chunking-indexing","Rag Chunking Indexing",{"key":78,"name":79,"count":19},"rag-embeddings-similarity","Rag Embeddings Similarity",{"key":81,"name":82,"count":19},"rag-evaluation","Rag Evaluation",{"key":84,"name":85,"count":19},"rag-generation-context","Rag Generation Context",{"key":87,"name":88,"count":19},"rag-reranking-fusion","Rag Reranking Fusion",{"key":90,"name":91,"count":19},"rag-retrieval","Rag Retrieval",{"key":93,"name":94,"count":19},"rag-retrieval-search","Rag Retrieval Search",{"key":96,"name":97,"count":19},"safety-guardrails","Safety Guardrails",[99,103,106],{"key":100,"name":101,"count":102},"llm-rag","LLM\u002FRAG",450,{"key":104,"name":105,"count":102},"mlops","MLOps",{"key":107,"name":108,"count":102},"python","Python",[110,128,141,154,167,180],{"id":111,"topic":18,"difficulty":112,"body":113,"options":114,"correct_key":122,"explanation":127},"019f5912-4584-7167-bd34-bbf5c9fe3f06",3,"During testing, an agent repeatedly calls the same tool with the same arguments across several iterations, and the returned observation is also unchanged each time, yet the agent has not produced a final answer. What does this most likely indicate, and what is a reasonable mitigation?",[115,118,121,124],{"key":116,"text":117},"a","This is expected behavior for any agent loop working as designed, and no change is needed, since repeated calls with an unchanged observation will resolve themselves given enough time.",{"key":119,"text":120},"b","The tool itself must be non-deterministic, since a well-built deterministic tool would never be called more than once by a correctly functioning agent loop.",{"key":122,"text":123},"c","The agent is likely stuck in a loop, misreading the observation or missing a stopping condition; detecting repeated identical calls and breaking out is a reasonable fix, alongside the step limit.",{"key":125,"text":126},"d","This indicates the model's context window has been exceeded, and switching to a completely different tool is the only way to make the agent stop repeating itself.","Identical repeated calls with an unchanged observation and no progress toward an answer is a classic sign the agent is stuck (e.g., misreading the observation or missing a stop condition), and a targeted repetition check is a useful mitigation in addition to a hard step limit. Calling this expected behavior, blaming tool non-determinism, or attributing it to context window size does not match the symptom described.",{"id":129,"topic":18,"difficulty":112,"body":130,"options":131,"correct_key":119,"explanation":140},"019f5912-4584-7d95-91dd-5666cb100ef1","An agent has access to a `delete_customer_account` tool. Which design is safest for handling this specific tool within the agent loop?",[132,134,136,138],{"key":116,"text":133},"Treat this exactly like a read-only tool such as `get_customer_info`, since from the model's perspective both are simply tool calls it is free to request at any time.",{"key":119,"text":135},"Require explicit human confirmation (or a strong business-rule check) before executing this call, since it is destructive and hard to reverse, unlike read tools.",{"key":122,"text":137},"Give the tool a longer, more detailed description so the model is less likely to call it by mistake, and skip any runtime safeguard.",{"key":125,"text":139},"Disable step limits specifically for this tool so the agent has unlimited attempts to get it right.","A destructive, hard-to-reverse action like account deletion warrants an extra runtime safeguard (confirmation or a business-rule gate) that a read-only tool does not need, because the consequence of a mistaken call is far more severe. Relying only on a better description, treating it identically to a read tool, or removing step limits does not add the protection this specific tool needs.",{"id":142,"topic":18,"difficulty":112,"body":143,"options":144,"correct_key":116,"explanation":153},"019f5912-4585-761b-becf-a224ce31730d","Why do teams commonly distinguish between 'read' tools (e.g., `get_order_status`) and 'write' or side-effecting tools (e.g., `cancel_order`) when designing an agent's tool set?",[145,147,149,151],{"key":116,"text":146},"Write tools can cause real, potentially irreversible changes if called incorrectly, so they often need stricter safeguards (confirmation, validation, idempotency) than read tools, whose worst case is usually just wrong or stale data.",{"key":119,"text":148},"Read tools always execute faster than write tools, because reading data is inherently a lighter database operation than writing it in every implementation.",{"key":122,"text":150},"The model is technically unable to distinguish read operations from write operations within its schema format, so the application must track that distinction separately.",{"key":125,"text":152},"Write tools cannot be described using the same schema format as read tools, since side-effecting operations require a fundamentally different parameter structure.","The risk profile differs: a mistaken read only returns wrong information, while a mistaken write can cause a real, sometimes irreversible change, which is why write tools typically get extra safeguards like confirmation and idempotency. This distinction is about risk and consequence, not execution speed or schema-format limitations.",{"id":155,"topic":18,"difficulty":112,"body":156,"options":157,"correct_key":125,"explanation":166},"019f5912-4586-7ee0-b6fc-1e6e96df862a","In one turn, a model requests two tool calls: `get_weather(city=\"Paris\")` and `get_weather(city=\"Tokyo\")`, where neither call's arguments depend on the other's result. In a separate scenario, a model requests `get_user_id(email=...)`, and only in a later turn requests `get_orders(user_id=...)` using the ID returned by the first call. What is the key difference between these two situations?",[158,160,162,164],{"key":116,"text":159},"There is no real difference; every tool call must always wait for the previous call to finish, since the application processes tool calls strictly one at a time no matter what.",{"key":119,"text":161},"The two `get_weather` calls must run strictly one after another and can never be issued concurrently, because a single conversation turn only ever contains one independent action.",{"key":122,"text":163},"The `get_user_id` and `get_orders` calls could safely be sent in the same turn, since batching dependent calls together is always more efficient regardless of missing input.",{"key":125,"text":165},"The two `get_weather` calls are independent and could run in parallel, while `get_orders` depends on `get_user_id`'s result, so it must wait for that observation first.","Independent calls (the two weather lookups) have no data dependency between them and can potentially run concurrently, while a dependent call (`get_orders` needing the user ID) cannot be issued correctly until the earlier observation is available. Treating both cases the same, or batching a dependent call before its input exists, ignores this data-flow distinction.",{"id":168,"topic":18,"difficulty":112,"body":169,"options":170,"correct_key":125,"explanation":179},"019f5912-4587-7a72-b520-94410db1ff7f","A `create_shipping_label` tool internally calls a third-party carrier API that occasionally returns a different tracking number for what should be the same logical request (e.g., due to an internal retry on the carrier's side), even when called with an identical idempotency key. Why is this a problem for the agent's retry logic?",[171,173,175,177],{"key":116,"text":172},"It is not a problem, since sending an idempotency key always guarantees an identical output, no matter how the underlying carrier service is actually implemented internally.",{"key":119,"text":174},"It only matters if the agent's step limit is set too low, and simply raising that limit will fully resolve the inconsistency in the tracking numbers being returned.",{"key":122,"text":176},"It is irrelevant to the agent loop, because tool determinism only affects how many reasoning tokens the model consumes, not any real side effects that occur.",{"key":125,"text":178},"If the tool can still produce a different real result on retry despite an identical key, the agent's assumption of safety is false, and retrying may cause duplicate side effects like an extra shipment.","An idempotency key only helps if the underlying service actually honors it consistently; if the carrier can still produce a different real-world outcome on retry despite an identical key, the agent's assumption of safety is false and duplicate shipments can occur. Raising the step limit or claiming determinism is irrelevant to reasoning tokens does not address this genuine service-level gap.",{"id":181,"topic":58,"difficulty":112,"body":182,"options":183,"correct_key":119,"explanation":192},"019f5912-4591-7319-b15a-61c835a91e9f","A junior engineer writes the following similarity function:\n```\nscore = dot(query_vec, doc_vec)\n```\nThe vectors are not normalized before this calculation. What problem can this cause?",[184,186,188,190],{"key":116,"text":185},"The dot product will always raise a runtime error whenever the two input vectors happen to have different dimensions.",{"key":119,"text":187},"Vectors with a larger magnitude can score higher even when they are not more semantically similar, skewing the ranking.",{"key":122,"text":189},"The result will always equal the cosine similarity value regardless of vector length.",{"key":125,"text":191},"The score becomes negative whenever the two texts are unrelated in meaning.","A raw dot product is sensitive to vector length, so documents whose embeddings happen to have larger magnitude can outscore more relevant documents with smaller magnitude vectors. Option (c) describes the opposite: an unnormalized dot product equals cosine similarity only when both vectors already have unit length.",{"fields":194,"seniorities":373,"interview_shapes":374,"locales":379,"oauth":381,"question_count":384,"coach_enabled":385,"jd_match_enabled":385},[195,219,240,256,280,287,306,325,347,354,360,367],{"key":196,"name_tr":197,"name_en":197,"sort":198,"specializations":199},"backend","Backend",1,[200,203,206,207,210,213,216],{"key":201,"name":202,"field":196},"general","Genel",{"key":204,"name":205,"field":196},"go","Go",{"key":107,"name":108,"field":196},{"key":208,"name":209,"field":196},"java","Java",{"key":211,"name":212,"field":196},"csharp","C#\u002F.NET",{"key":214,"name":215,"field":196},"nodejs","Node.js",{"key":217,"name":218,"field":196},"php","PHP",{"key":220,"name_tr":221,"name_en":221,"sort":222,"specializations":223},"frontend","Frontend",2,[224,225,228,231,234,237],{"key":201,"name":202,"field":220},{"key":226,"name":227,"field":220},"javascript","JavaScript",{"key":229,"name":230,"field":220},"typescript","TypeScript",{"key":232,"name":233,"field":220},"react","React",{"key":235,"name":236,"field":220},"vue","Vue",{"key":238,"name":239,"field":220},"angular","Angular",{"key":241,"name_tr":242,"name_en":242,"sort":112,"specializations":243},"fullstack","Fullstack",[244,245,246,247,248,249,250,251,252,253,254,255],{"key":201,"name":202,"field":241},{"key":204,"name":205,"field":196},{"key":107,"name":108,"field":196},{"key":208,"name":209,"field":196},{"key":211,"name":212,"field":196},{"key":214,"name":215,"field":196},{"key":217,"name":218,"field":196},{"key":226,"name":227,"field":220},{"key":229,"name":230,"field":220},{"key":232,"name":233,"field":220},{"key":235,"name":236,"field":220},{"key":238,"name":239,"field":220},{"key":257,"name_tr":258,"name_en":258,"sort":259,"specializations":260},"devops-cloud","DevOps \u002F Cloud",4,[261,262,265,268,271,274,277],{"key":201,"name":202,"field":257},{"key":263,"name":264,"field":257},"aws","AWS",{"key":266,"name":267,"field":257},"gcp","GCP",{"key":269,"name":270,"field":257},"azure","Azure",{"key":272,"name":273,"field":257},"kubernetes","Kubernetes",{"key":275,"name":276,"field":257},"terraform","Terraform",{"key":278,"name":279,"field":257},"linux","Linux",{"key":5,"name_tr":6,"name_en":6,"sort":281,"specializations":282},5,[283,284,285,286],{"key":201,"name":202,"field":5},{"key":107,"name":108,"field":5},{"key":100,"name":101,"field":5},{"key":104,"name":105,"field":5},{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"database","Veritabanı","Database",6,[293,294,297,300,303],{"key":201,"name":202,"field":288},{"key":295,"name":296,"field":288},"postgresql","PostgreSQL",{"key":298,"name":299,"field":288},"mysql","MySQL",{"key":301,"name":302,"field":288},"mongodb","MongoDB",{"key":304,"name":305,"field":288},"redis","Redis",{"key":307,"name_tr":308,"name_en":309,"sort":310,"specializations":311},"mobile","Mobil","Mobile",7,[312,313,316,319,322],{"key":201,"name":202,"field":307},{"key":314,"name":315,"field":307},"ios-swift","iOS (Swift)",{"key":317,"name":318,"field":307},"android-kotlin","Android (Kotlin)",{"key":320,"name":321,"field":307},"flutter","Flutter",{"key":323,"name":324,"field":307},"react-native","React Native",{"key":326,"name_tr":327,"name_en":328,"sort":329,"specializations":330},"security","Güvenlik","Security",8,[331,332,335,338,341,344],{"key":201,"name":202,"field":326},{"key":333,"name":334,"field":326},"appsec","AppSec",{"key":336,"name":337,"field":326},"offensive-pentest","Offensive \u002F Pentest",{"key":339,"name":340,"field":326},"cloud-security","Cloud Security",{"key":342,"name":343,"field":326},"devsecops","DevSecOps",{"key":345,"name":346,"field":326},"blue-team-incident","Blue Team \u002F Incident",{"key":348,"name_tr":349,"name_en":350,"sort":351,"specializations":352},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[353],{"key":201,"name":202,"field":348},{"key":355,"name_tr":356,"name_en":356,"sort":357,"specializations":358},"data-engineer","Data Engineer",10,[359],{"key":201,"name":202,"field":355},{"key":361,"name_tr":362,"name_en":363,"sort":364,"specializations":365},"game-dev","Oyun Geliştirme","Game Development",11,[366],{"key":201,"name":202,"field":361},{"key":368,"name_tr":369,"name_en":369,"sort":370,"specializations":371},"ml-engineer","ML Engineer",12,[372],{"key":201,"name":202,"field":368},[13,14,7],{"junior":375,"mid":377,"senior":378},{"questions":376,"median_sec":3},20,{"questions":376,"median_sec":3},{"questions":376,"median_sec":3},[380,9],"tr",[382,383],"google","github",21750,true]