Company Interview Questions · IT Services
NTT DATA & Virtusa: GenAI Engineer
NTT DATA & Virtusa: GenAI Engineer Interview Experiences (2024–25). 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 public candidate reports: NTT DATA (Chennai in-person, August 2025, AI agent focus; Hyderabad online, November 2024, ML + GenAI) and Virtusa Gen AI Engineer (August 2025). The questions are paraphrased, and the model answers are written by EasyLearnSpace.
| NTT DATA | Virtusa | |
|---|---|---|
| Role | Gen AI / AI agent engineer; ML engineer | Gen AI Engineer |
| Rounds | HR → technical (in person at the Chennai office) | One interview (HR + technical); rescheduled 3 times |
| Key topics | Deploying an agent with MVC architecture, connecting an agent to components, caching; choosing ML algorithms | A project deep dive, an Armstrong-number function, LLMs, AWS, deployment, chunking |
| Outcome | Not stated | Not selected; candidate reported poor coordination |
01Rounds at a glance
- NTT DATA: practical agent architecture and integration questions, plus ML algorithm selection ("when not to use X").
- Virtusa: a mix of an easy coding problem, LLM/AWS deployment and RAG chunking. Expect follow-ups on your project's cloud setup.
02Questions and model answers
Q1
How would you deploy an AI agent using an MVC architecture?
- Model layer: domain data and state, meaning conversation and session state, a tool registry, and the persistence behind them (DB, vector store, checkpointer).
- Controller: the API layer (FastAPI). It receives requests, authenticates, loads state, invokes the agent runtime (LangGraph or an agent executor), streams the result, and saves state.
- View: the UI (React chat, Teams or Slack bot) rendering streamed tokens, tool-progress events and citations.
- Agent runtime as a service: keep it stateless behind the controller. Tools call downstream APIs through adapters.
- Deploy: containers on Kubernetes or Container Apps, autoscaled. Use Redis for session cache, queues for long tasks, and observability (traces per step).
Q2
How does an agent connect to other components, and how do you manage caching?
- Connections: tools wrap internal APIs and databases (with typed schemas); MCP servers expose tools in a standard way; message queues hand off long-running work; webhooks deliver callbacks.
- Caching layers:
- LLM response / semantic cache: a hash or embedding of (prompt + context) → answer, with a TTL.
- Tool-result cache: e.g. order status for 60 s.
- Retrieval cache for frequent queries.
- Provider prompt caching for long static system prompts.
- Invalidation: TTLs plus event-based busting when the source data changes. Never cache per-user sensitive data across users.
Q3
How do you choose an ML algorithm, and when should you avoid it?
| Algorithm | Use when | Avoid when |
|---|---|---|
| Linear / logistic regression | Need interpretability, linear-ish signal, a baseline | Strong non-linear interactions |
| Decision tree / random forest | Tabular data, mixed types, quick strong baseline | Need smooth extrapolation; very high-dimensional sparse text |
| Gradient boosting (XGBoost, LightGBM) | Best for tabular data | Tiny data (overfits), strict latency on huge ensembles |
| KNN | Small data, simple similarity | Large n or high dimensions (slow, curse of dimensionality) |
| SVM | Medium data, clear margins, text | Very large datasets |
| Neural nets / Transformers | Text, images, audio, lots of data | Small tabular datasets, need full explainability |
- Always start with a simple baseline and let cross-validated metrics decide.
Q4
Write a function to check for an Armstrong number.
def is_armstrong(n: int) -> bool:
digits = str(n)
k = len(digits)
return n == sum(int(d) ** k for d in digits)
print([x for x in range(1, 1000) if is_armstrong(x)]) # 1..9, 153, 370, 371, 407
- An Armstrong (narcissistic) number equals the sum of its digits, each raised to the power of the number of digits.
Q5
How do you deploy an LLM application on AWS?
- Model: Amazon Bedrock (Claude, Llama, Titan) with IAM-scoped access, or SageMaker endpoints for self-hosted models.
- Retrieval: Bedrock Knowledge Bases or OpenSearch Serverless (vector), with documents in S3.
- App: FastAPI on ECS Fargate or Lambda behind API Gateway; Cognito for authentication.
- Security and ops: Secrets Manager, a VPC with PrivateLink, Bedrock Guardrails, CloudWatch logs and metrics, cost alarms.
- CI/CD: CodePipeline or GitHub Actions, with an evaluation gate before deploy.
Q6
Which chunk size would you choose, and how do you decide?
- Typical range: 300–1,000 tokens with 10–20% overlap. Smaller chunks give precise retrieval but may lose context; larger chunks carry more context, add noise and cost more.
- Decide with data: test 256 / 512 / 1,024 chunks on your evaluation set and compare recall@k, faithfulness and latency. Respect document structure (sections, tables).
- Combine with metadata, re-ranking or parent-document retrieval to get both precision and context.
03How to prepare
- NTT DATA: be able to draw an agent's deployment architecture (API, runtime, tools, cache, state) and to defend algorithm choices.
- Virtusa: prepare an AWS deployment story for your GenAI project and RAG chunking trade-offs. Keep calm if the scheduling is messy.
Sources
- Glassdoor: NTT DATA Gen AI Engineer reviews (Chennai 2025, Hyderabad 2024)
- Glassdoor: Virtusa Gen AI Engineer (Aug 2025)
Created by Ajeetkumar