Company Interview Questions · Product & Retail Tech
Zomato: ML Engineer, Campus (2025, Offer)
Zomato: Machine Learning Engineer Interview Experience (Campus, 2025, Offer). Rounds, real reported questions and model answers, compiled from public candidate reports (sources at the end). Practice mode hides every answer: say your answer first, press Show answer, then rate yourself. Use 🔁 Review again to build your revision list and 🎲 Random question for a quick drill.
About this interview
Compiled from a public candidate report for a junior Zomato Machine Learning Engineer role through on-campus placement in India (August 2025, offer accepted). The questions are paraphrased, and the model answers are written by EasyLearnSpace.
| Role | Machine Learning Engineer (junior) |
| Rounds | Online assessment → Technical 1 → Technical 2 → HR |
| Online assessment | 4 MCQs (ML + Python) + implement a RAG pipeline end to end in LangChain |
| Technical rounds | Resume + DL concepts (some candidates got a medium DSA problem); high-level design to improve an agentic pipeline |
| Outcome | Offer accepted; HR round friendly (work and location preferences) |
01Rounds at a glance
- Online assessment: practical GenAI coding, building a working RAG pipeline under time pressure.
- Technical 1: BERT embeddings vs Word2Vec, the effect of tokenizer sub-word splitting, learned (patch/CNN) vs sinusoidal positional encodings, and optimising speech-to-text and text-to-speech models with quantization.
- Technical 2: design improvements to an existing agentic pipeline.
02Questions and model answers
Q1
Online assessment: implement a RAG pipeline in LangChain.
from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
docs = PyPDFLoader("menu_policy.pdf").load()
chunks = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100).split_documents(docs)
retriever = FAISS.from_documents(chunks, OpenAIEmbeddings()).as_retriever(search_kwargs={"k": 4})
prompt = ChatPromptTemplate.from_template(
"Answer only from the context. If unsure, say you don't know.\n\nContext:\n{context}\n\nQuestion: {question}")
fmt = lambda ds: "\n\n".join(d.page_content for d in ds)
chain = ({"context": retriever | fmt, "question": RunnablePassthrough()}
| prompt | ChatOpenAI(model="gpt-4o-mini", temperature=0) | StrOutputParser())
print(chain.invoke("What is the refund policy for late deliveries?"))
- Mention what you would add with more time: metadata and citations, a re-ranker, evaluation (RAGAS) and streaming.
Q2
How do BERT embeddings differ from Word2Vec?
- Word2Vec:
- Static: one vector per word type, learned with a shallow skip-gram or CBOW network.
- No context ("bank" always has the same vector), out-of-vocabulary words are a problem, and it is cheap.
- BERT:
- Contextual: the vector depends on the whole sentence through deep bidirectional self-attention.
- Uses sub-word (WordPiece) tokens, so there is no OOV problem.
- Captures syntax and senses, but costs more to compute.
- For sentence-level similarity, plain BERT
[CLS]vectors are weak; use sentence-transformers fine-tuned contrastively.
Q3
How does excessive sub-word splitting by the tokenizer affect sentiment analysis or NER?
- Problems:
- Words broken into many pieces ("un", "##believ", "##ably") dilute meaning across tokens and use up the context length.
- Rare names, Hinglish ("bahut tasty") and dish names ("paneer-tikka") fragment badly.
- NER: entity boundaries must be re-aligned from sub-words to words; labelling only the first sub-word, or aggregating, adds noise.
- Sentiment: negations and intensifiers split oddly; more tokens means more sequence and a higher chance of truncation.
- Fixes:
- A domain or multilingual tokenizer (or extend the vocabulary with domain tokens and fine-tune).
- Normalise text.
- Use word-level aggregation (first or mean sub-word) for NER.
- Choose models trained on Indic and code-mixed data.
Q4
Learned positional embeddings from a patch/CNN stem vs the fixed sinusoidal encodings of the original Transformer: what is the trade-off?
- Sinusoidal (fixed): no parameters; it encodes relative offsets through sin/cos phase and can extrapolate somewhat to longer sequences.
- Learned absolute (ViT patch positions, BERT): flexible and data-driven, but limited to the trained length or resolution. Changing image size requires interpolating the position grid.
- Convolutional or patch stems bring implicit positional information (local inductive bias, zero-padding effects), which some models use instead of, or as well as, explicit embeddings, as in ConvNeXt-style or CvT designs.
- Modern LLMs use RoPE or ALiBi (relative) for better length generalisation.
Q5
How do you optimise speech-to-text and text-to-speech models for low-latency inference? How does quantization affect quality?
- Speech-to-text (Whisper, Conformer):
- A smaller or distilled model (distil-whisper).
- Streaming / chunked decoding with VAD to skip silence.
- CTranslate2 or faster-whisper, batching, GPU FP16 or INT8.
- Text-to-speech (FastSpeech, VITS):
- Non-autoregressive models for speed.
- A streaming vocoder.
- Cache frequent phrases.
- Quantization:
- INT8 usually costs under 1% WER or MOS.
- 4-bit can hurt accents, noisy audio and prosody noticeably.
- Measure WER (speech-to-text) and MOS or MCD (text-to-speech) on your data (Hindi or Hinglish, noisy restaurant audio) before and after.
- Use calibration data from the real domain.
Q6
Design improvements to an existing agentic pipeline (for example, a customer-support agent).
- Measure first: trace every step (LangSmith or Langfuse) and find where it fails. Common culprits are wrong tool choice, loops and slow steps.
- Routing: a cheap classifier or small LLM sends simple intents (order status) to deterministic flows. Only complex cases reach the full agent.
- Tools: tighter descriptions and schemas, fewer and more specific tools, validation of arguments, idempotent APIs.
- Memory and context: summarise long chats, retrieve only the relevant policy chunks, and cache user and order lookups.
- Reliability: a maximum number of steps, timeouts, retries with backoff, fallback models, and human handoff for refunds above a threshold.
- Evaluation: a trajectory test set; measure resolution rate, average steps, latency, cost per conversation and CSAT.
Q7
HR: are you open to relocating, and what kind of work do you want?
- Be honest and positive: "Yes, I'm flexible on location (Gurugram or Bengaluru). I'm most excited about applied ML that reaches users fast, like search, recommendations and support automation at Zomato's scale."
- Show that you know the product: delivery-time prediction, restaurant ranking, and the AI support assistant.
03How to prepare for Zomato ML
- Be able to build RAG in LangChain from memory in 30 to 40 minutes.
- Know embeddings and tokenizers deeply, including problems with Indic and code-mixed text.
- Prepare one agentic-system improvement story with metrics.
- Practise some medium DSA, since some candidates got it instead of DL questions.
Sources
Created by Ajeetkumar