Company Interview Questions · Global & Others

Shell, Unilever & Tesco: Data Roles (Bengaluru)

❓ 6 questions🏢 Shell & Unilever & Tesco🆕 Recent reports

Shell, Unilever & Tesco: Data Interview Experiences (Bengaluru, 2024–26). 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: Shell Associate Data Engineer (Bengaluru campus, 2024–25: DSA, SQL, HAVING vs WHERE, OOP and DBMS), Unilever Data Analyst (Bengaluru, offer; others: case study, SQL, business questions) and Tesco Decision Scientist (Bengaluru, offers in 2023 and January 2025: Python and SQL assessments, explain XGBoost). The questions are paraphrased, and the model answers are written by EasyLearnSpace.

Shell Unilever Tesco
Role Associate Data Engineer Data Analyst Decision Scientist
Rounds 1.5-hour technical (2 interviewers) + HR; or 1 hour (OOP, DBMS, projects, situational) Hiring-team interview with a case study; or 3 rounds (analysis, business, SQL) Python + SQL assessments → technical → managerial → HR
Reported questions Coding/DSA, a SQL query, HAVING vs WHERE, OOP concepts with examples A difficult situation and how you handled it; SQL; business questions SQL and pandas syntax; explain XGBoost
Outcome 1 offer, others mixed 2 offers, 1 not selected 2 offers

01Rounds at a glance

02Questions and model answers

Q1
Explain XGBoost and how it works.
  • Gradient-boosted decision trees: add trees sequentially, each fitting the gradient (and Hessian) of the loss with respect to the current predictions, using a second-order Taylor approximation.
  • Regularised objective: loss + γ·(number of leaves) + ½λ‖leaf weights‖², giving the optimal leaf weight −G/(H + λ) and a split gain formula.
  • Engineering: histogram/approximate split finding, sparsity-aware missing-value handling (a learned default direction), column and row subsampling, shrinkage (η), parallel tree building, early stopping.
  • Key hyperparameters: max_depth, eta, n_estimators, subsample, colsample_bytree, min_child_weight, lambda/alpha, scale_pos_weight.
Q2
HAVING vs WHERE, with an example.
SELECT store_id, SUM(sales) AS total
FROM transactions
WHERE txn_date >= '2025-01-01'          -- filters rows before grouping
GROUP BY store_id
HAVING SUM(sales) > 1000000;            -- filters groups after aggregation
  • WHERE cannot use aggregates; HAVING can. Put row filters in WHERE for performance.
Q3
OOP concepts with examples (Shell).
from abc import ABC, abstractmethod
class Sensor(ABC):                         # abstraction
    def __init__(self, sid): self._sid = sid          # encapsulation (protected attribute)
    @abstractmethod
    def read(self) -> float: ...
class PressureSensor(Sensor):              # inheritance
    def read(self): return 101.3
class TempSensor(Sensor):
    def read(self): return 36.6
for s in (PressureSensor("p1"), TempSensor("t1")):   # polymorphism
    print(type(s).__name__, s.read())
Q4
Unilever case: sales of a shampoo brand fell 8% in one region. How do you analyse it?
  • Decompose: distribution (number of stores stocking it) × rate of sale × price; channel (modern trade, general trade, e-commerce).
  • Check: competitor launches or promotions, price increases, out-of-stocks at distributors, seasonality, ad spend changes, a pack-size change.
  • Data: secondary sales (distributor → retailer), retail audit data, e-commerce share, promotion calendars.
  • Recommend: fix the distribution gaps, targeted promotions, pricing adjustments; track weekly.
Q5
Tell me about a time work was difficult and how you handled it.

Answer (STAR):

  • "Two stakeholders wanted conflicting definitions of 'active customer' for the same dashboard."
  • "I documented both definitions, showed the numerical impact of each, and facilitated a 30-minute alignment meeting. We agreed on one primary metric plus one secondary metric."
  • "The dashboard launched on time, and the definition became a company standard."
Q6
pandas: compute weekly sales per store and the week-over-week change.
import pandas as pd
df = pd.read_csv("sales.csv", parse_dates=["date"])
weekly = (df.set_index("date").groupby("store_id")["sales"].resample("W").sum().reset_index())
weekly["wow_pct"] = weekly.groupby("store_id")["sales"].pct_change() * 100
print(weekly.head())

03How to prepare

Sources

Created by Ajeetkumar