Viber · Data Scientist
Updated · 2026-09-22

Viber Data Scientist
Interview Questions & Guide 2026

THE 60-SECOND BRIEF

As a Data Scientist at Viber, you will play a pivotal role in transforming data into actionable insights that influence product development, enhance user experience, and drive business strategy. Your work will directly impact millions of users by improving features like messaging efficiency, user engagement, and personalized content delivery. This role is not just about analyzing data; it's about synthesizing complex datasets into strategic recommendations that guide product teams and inform key business decisions.

Ask early whether the loop includes an asynchronous take-home or a timed live case, because the two are graded on different things. A take-home is read as an artifact: the question you decided to answer, what you did about missing or malformed records, and a conclusion stated plainly enough for someone to act on. A reviewer who cannot rerun your notebook discounts the result whatever score is printed in it. Hold to the stated time box and write down what you would have done with more of it, since the follow-up round is usually a live defence of the same work.

Viber candidates report 3 rounds · ≈ 3-5 weeks. The stages below are what candidates describe, not a published process.

Design feed experiments that survive social-graph interferenceDecompose DAU into new, retained, reactivated, resurrectedAggregate impression logs without double-counting repeated deliveries

30 min read

Browse Data Scientist questions

See the practice prompts

14Practice promptsAcross five skill areas
3With worked solutionsIncluded in the practice prompts

As a Data Scientist at Viber, you will play a pivotal role in transforming data into actionable insights that influence product development, enhance user experience, and drive business strategy. Your work will directly impact millions of users by improving features like messaging efficiency, user engagement, and personalized content delivery. This role is not just about analyzing data; it's about synthesizing complex datasets into strategic recommendations that guide product teams and inform key business decisions.

The significance of a Data Scientist at Viber is underscored by the scale and complexity of the platform. With a diverse user base and a multitude of communication features, you will engage with sophisticated data challenges. You'll collaborate with teams across engineering, product management, and marketing to innovate solutions that address user needs and business objectives. This role is critical for those who thrive at the intersection of technology, data analysis, and user-centric design, providing rich opportunities to influence the future of communication.

01

HR Screening

reported

A screening call is a matching exercise run by someone who will not evaluate your statistics. They are checking that the work described on your resume is work you personally did, and that its scope matches the level the role is written for. Logistics get settled in the same half hour so nobody spends an interviewer's afternoon on a mismatch. The answer that fails is the one narrated in the plural. If every sentence is 'we built' and 'the team decided', there is nothing specific to write down about you. Name the piece that was yours, the decision you made inside it, and what changed after.

What to demonstrate

  • Whether the ownership implied by your resume survives one round of follow-up about who actually did which part
  • Whether your described scope (data size, stakeholders, what shipped) matches the seniority the role is written at
  • Whether timeline, location and compensation expectations make the rest of the loop worth scheduling

How to prepare

  • Rewrite your top three resume bullets in the first person singular, each with the decision you made and what moved afterwards, then say them out loud once so the 'we' does not return under pressure
  • Attach one number to each project: the baseline, the change, and the window it was measured over. Where impact was never measured, say that plainly rather than inventing a figure
  • Settle your compensation range before the call and give it as a range with a reason behind it, such as current total comp or a competing timeline, instead of deflecting the question twice
PracHub interview research ↗
02

Technical Interviews

reported

Much of what gets scored here happens out loud while you type. Nobody can see your reasoning inside a half-written query, so five silent minutes read as being stuck even when they are not. State the plan in plain language first: which tables, what grain you are aggregating to, and the one filter that defines the population. Then write it. The narration doubles as insurance, because a wrong plan gets caught early and cheaply while a wrong query gets caught at the end with no time left to redo it. A timed statistics section, where one exists, is a separate test with its own clock.

What to demonstrate

  • Whether the query you write matches the plan you just described
  • What you do with a hint, meaning whether the correction gets absorbed or the first approach gets defended
  • Whether you can debug your own wrong output by reading the result set and naming which part of the query produced the anomaly

How to prepare

  • Solve three problems while screen-sharing into a recording, then watch it back and mark every stretch longer than thirty seconds where you said nothing
  • Practise compressing the plan into one sentence before typing, then check afterwards whether the finished query actually matched it
  • Time yourself on statistics questions that carry a business reading, such as what a confidence interval does and does not claim, rather than re-reading notes without a clock
PracHub interview research ↗
03

Final HR Interview

reported

A loop is not scored one interview at a time. The people you meet compare notes afterwards, usually in a meeting you are not in, and the outcome turns on what each of them can say about you when asked. That rewards something other than survival: every room needs one specific thing worth repeating, and none of them can contradict another. The common way to lose is to tell the same project four times with different numbers in it, or to be uniformly fine in a way that leaves nobody with anything to argue for.

What to demonstrate

  • Whether your account of a project survives being told twice, with the same scale, the same metric definition and the same numbers each time
  • Whether each interviewer leaves with one concrete claim they could make on your behalf later, rather than an absence of complaints
  • Whether a question you already answered in an earlier room gets the same answer at the same depth, without visible impatience

How to prepare

  • Write a one-page fact sheet for your two or three main projects that fixes the numbers you will quote: rows of data, the metric as a single sentence, the effect you measured and how long the work took. Say them aloud from the sheet until they come out identical every time
  • For each kind of room you expect, decide the one sentence you want that interviewer repeating in a debrief, then check during the mock that you said it outright instead of implying it
  • Rehearse answering the same project question twice in one sitting, the second time as though you had not just answered it, because the thing that needs fixing is the flatness that creeps into a repeated story
PracHub interview research ↗

PracHub editorial advice for the preparation topics above.

01

Randomising individual members when the treatment travels along the social graph

If treated members post, comment or share more, their followers see the extra content whether or not those followers are treated, so the control group is partly treated and the measured difference understates the true effect. For features that redistribute a fixed amount of attention, the leakage runs the other way and the effect is overstated. The size of the bias scales with how dense the neighbourhood is, so it is largest exactly among the connected members whose behaviour the feature was built for. The fix is randomising clusters of the graph (ego networks or communities found by balanced partitioning), clustering the variance at that unit, and accepting that effective sample size falls by roughly the average cluster size.

02

Using report volume as a measurement of how much violating content exists

Reporting is a member behaviour, not an observation of the content. Report counts rise when the report control is made easier to reach, when a coordinated campaign targets an account, and when the audience shifts toward people who object; they fall when violating content is shown mainly to members who agree with it. A ranker that gets better at matching bad content to receptive audiences will drive reports down and harm up at the same time. Prevalence must come from a random sample of served impressions with recorded selection probabilities, labelled by humans against the written policy, and reported with an interval. Reports are useful as a detection signal and as a demand-side complaint rate, not as a denominator-anchored measure of harm.

03

Dropping rows with missing values without naming the mechanism

Say whether the values are missing at random, missing by a known process, or missing in a way that depends on the outcome, and handle them accordingly. Deleting incomplete rows silently redefines the population whenever missingness correlates with what you are measuring.

04

Extrapolating a first-week lift inflated by novelty effects

Plot the treatment effect by days since first exposure instead of quoting one pooled average. A lift that decays toward zero across the test window is behaviour that will not persist, and annualising it produces a forecast that misses by an order of magnitude.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

11 technical prompts3 include a worked solution

Write a function to calculate the mean and standard deviation of a lis…

medium
statistics and probability

Write a function to calculate the mean and standard deviation of a list of numbers.

Approach
  1. Quantify uncertainty explicitly rather than reporting a point estimate alone.
  2. Write down the assumption the method needs before you use the method.
  3. Say what the estimate is of, and over what population it generalises.
Follow-up
  • How would you explain this result to someone who does not know statistics?
  • Which assumption here is most likely to be violated in practice?

What machine learning algorithms are you most familiar with, and when …

medium
machine learning and modelling

What machine learning algorithms are you most familiar with, and when would you use them?

Approach
  1. Frame the prediction: the label, the moment of prediction, and the action it triggers.
  2. Check what information would not exist at prediction time, and exclude it.
  3. Pick an evaluation metric that matches the cost of each error type, not a default.
Follow-up
  • Where could label leakage enter this setup?
  • What would you monitor after launch to know the model is still valid?

Given a dataset, how would you approach building a predictive model fo…

medium
machine learning and modelling

Given a dataset, how would you approach building a predictive model for user churn?

Approach
  1. Check what information would not exist at prediction time, and exclude it.
  2. Pick an evaluation metric that matches the cost of each error type, not a default.
  3. Set a baseline first, so any model has something honest to beat.
Follow-up
  • How would you choose the decision threshold, and who owns that choice?
  • What would you monitor after launch to know the model is still valid?

Trailing seven-day distinct actives without a rolling window

mediumWorked solution
windowed distinctinterval mergecomplexity

activity has member_id (int64) and local_date (date), one row per member per active local day, about 60 million distinct pairs spanning 400 dates. For every date d in the range, compute the number of distinct members active on at least one day in the closed window [d minus 6, d]. You may not use rolling, and you may not loop over dates recomputing a distinct count across the full frame. Return a DataFrame of date and wau, and state the time and memory cost of the method you chose.

Approach
  1. Say why the obvious answers fail. Summing seven daily active counts double-counts anyone active on more than one day, which is most of the active base. Looping over 400 dates with a nunique over 60 million rows is 400 full passes. Neither is a rolling-window problem in the pandas sense, because the aggregate is a distinct count and distinct counts do not decompose additively.
  2. Reframe it geometrically. A member contributes to wau(d) exactly when d lies in [t, t+6] for one of their active dates t. So the answer is the size of the union of those intervals, counted across members, evaluated at each date.
  3. Merge each member's intervals before counting, which is the step that removes the double counting. After sorting by (member_id, local_date), a new interval starts wherever the gap to the previous active date exceeds 7 days; otherwise the interval extends. The run's interval is [first t of the run, last t of the run + 6].
  4. Turn merged intervals into a difference array: plus one at each interval start, minus one at end plus one day, then a cumulative sum over the full date index. That is O(number of runs) memory and one sort overall.
  5. Offer the simpler alternative and price it: explode each (member, date) into the seven dates it covers, drop duplicates on (member, target_date), then count per target_date. Correct and easy to defend, but it materialises seven times the rows before the dedupe, so it is a memory decision rather than a correctness one.
  6. Handle the edges: dates in the first six days of the range have a truncated window and should be reported as such or dropped, not silently published as a lower wau.
Worked solution 35 min
  1. a = activity.drop_duplicates().sort_values(['member_id','local_date'])
  2. gap = a.groupby('member_id').local_date.diff().dt.days; run_start = gap.isna() | (gap > 7); run_id = run_start.groupby(a.member_id).cumsum()
  3. runs = a.groupby([a.member_id, run_id]).local_date.agg(['min','max']); runs['end'] = runs['max'] + pd.Timedelta(days=6)
  4. deltas = pd.concat([runs['min'].value_counts(), -(runs['end'] + pd.Timedelta(days=1)).value_counts()]).groupby(level=0).sum()
  5. wau = deltas.reindex(full_date_index, fill_value=0).cumsum().rename('wau').to_frame()
  6. Mark the first six dates as truncated and either drop them or carry a flag column
EXPECTED RESULTA DataFrame indexed by every date in the range with one integer column wau, equal to the count of distinct members active in the trailing seven days, with the first six dates flagged as truncated.
Follow-up
  • Now report wau by country. What breaks in the interval approach and what do you change?
  • The definition changes to distinct members with at least two active days in the window. Does either method survive?
  • How would you compute the same number incrementally each day without recomputing the whole history?

For someone who can already write the query and train the model but stalls when asked what to measure or whether a change is worth making. Metric definition and case structure come first; the technical work is kept as maintenance rather than the centre of the week.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Metric anatomy
  • For three products you use daily, write one primary metric, two input metrics that plausibly move it, and one guardrail that would catch a cheap way of moving the primary at the cost of the product.
  • For one of them, specify the metric precisely enough that two analysts would return the same number: numerator, denominator, unit of observation, time window, and how returning and deleted accounts are treated.
  • Pick a ratio metric and write what happens to it when the denominator shrinks for reasons unrelated to the numerator, with a concrete example of that happening.

Deliverable: A one-page metric tree for one product, with the primary metric written as an unambiguous spec.

Practice prompt ↗Practice prompt ↗Worked solution ↗
02Diagnosing a drop without guessing
  • Take the prompt "weekly active users fell 8 percent week over week" and write the segmentation plan before proposing any cause: platform, region, tenure cohort, acquisition channel, and whether the movement sits in the numerator or in a changed denominator.
  • List the instrumentation failures that manufacture fake drops (a client release that stopped firing an event, a bot filter change, a shifted date boundary or timezone) and write the query that rules out each one.
  • Rehearse stating the boring explanations first, seasonality and day-of-week composition, before reaching for a product cause.

Deliverable: A drop-diagnosis checklist short enough to recite from memory in under a minute.

Practice prompt ↗Practice prompt ↗
03Should we build it
  • Take a feature idea and write it as a bet: what you believe is true, what would have to be true for it to pay off, the metric that would confirm it, and the effect size that would justify the engineering cost.
  • Size the opportunity top-down and bottom-up, then reconcile the two numbers in writing instead of quoting whichever is friendlier.
  • Write the counter-metric that would make you kill the feature even if it wins on the primary metric.

Deliverable: A one-page product memo ending in a decision rather than a list of considerations.

Practice prompt ↗Practice prompt ↗
04The places aggregate numbers lie
  • Construct a Simpson's paradox numerically: two segments where the treatment wins within each segment yet loses overall, and identify the shift in segment weights that causes it.
  • Take a heavy right-tailed quantity such as revenue per user and write why the mean is the wrong summary, which percentile you would report instead, and what a moving mean with a stable median tells you.
  • Write your definition of a session for the product from day one, then name two real behaviours it misclassifies.

Deliverable: One page holding a worked Simpson's paradox table and a session definition with its two known failure cases.

Practice prompt ↗Practice prompt ↗Worked solution ↗
05Technical maintenance, aimed at metrics
  • Solve four timed SQL prompts that all end in a ratio metric, so the question of grain stays live in every answer.
  • Compute a 95 percent confidence interval for a proportion on a small sample, and state why the normal approximation is unreliable when either np or n(1 minus p) falls below roughly 10, along with which interval you would use instead.
  • Take one metric from your day-one tree, write the query that computes it correctly, then write the query that computes it wrong in the most plausible way and explain how you would notice.

Deliverable: Four solved prompts plus a matched correct and plausible-wrong query for one metric.

Practice prompt ↗Practice prompt ↗
06Turning engineering work into data science stories
  • Write three project stories as situation, decision, trade-off, outcome, each carrying one number and one thing you got wrong.
  • For the story you will lead with, prepare an answer to "what would you do differently" that names a decision you made, not a constraint you were handed.
  • Practise the sentence that reframes a systems project as a question project: the question the work answered, ahead of the pipeline it shipped.

Deliverable: Three written stories with the lead story delivered aloud and timed under four minutes.

Practice prompt ↗Practice prompt ↗
07Mock case and gap list
  • Run a 40-minute mock case with someone playing a product manager who pushes back on your metric choice, and record it.
  • Listen back and mark every moment you proposed a solution before the success metric existed.
  • Rewrite those moments as the question you should have asked, and rehearse the first 90 seconds of the case until scoping comes before solving.

Deliverable: A recorded case plus a rewritten opening 90 seconds.

Practice prompt ↗Practice prompt ↗Worked solution ↗

Expand any day for tasks and deliverables. Your progress is saved on this device.

Have two ready. In one, the data was on your side and you had to move someone who outranked you. In the other, the pushback was correct and you changed position. The second is the harder story and it lands better, because it shows you separate being right from being attached to an answer. Name the person's actual objection.

Describe a time when you used statistical analysis to solve a problem.

medium
behavioural and stakeholder questions

Describe a time when you used statistical analysis to solve a problem.

Approach
  1. Quantify the outcome, including what you would not claim credit for.
  2. Name the disagreement or constraint, and how you resolved it with evidence.
  3. State the situation in two sentences and spend the rest on your reasoning.
Follow-up
  • What would you do differently if you ran that project again?
  • What did you decide not to do, and why?

Tell me about a time you had to work with a difficult team member.

medium
behavioural and stakeholder questions

Tell me about a time you had to work with a difficult team member.

Approach
  1. Pick a story where you drove the decision, not one where you observed it.
  2. Quantify the outcome, including what you would not claim credit for.
  3. Name the disagreement or constraint, and how you resolved it with evidence.
Follow-up
  • What did you decide not to do, and why?
  • How did you know the outcome was caused by your change?

Choose between three requests with one analyst week

medium
prioritisationidentificationsample size

You have one analyst week and three open requests. Ranking wants an off-policy estimate of a candidate ranker, but log_propensity is NULL on 92 percent of home-feed impressions. Growth wants a week-1 retention read on a registration cohort whose day 7 to 13 window closes in four days. Integrity wants the audit sample re-sized because the prevalence interval cannot detect a 20 percent change. Give the order, what each requester gets and when, and the request you refuse outright with the reason.

Approach
  1. Sort by identification before sorting by importance. A request that cannot be answered correctly with any amount of effort is not competing for the week; it is competing for a different conversation.
  2. Rule out the off-policy estimate on positivity grounds and say it in one line: log_propensity NULL means serving was deterministic top-k, so the unserved slots had zero logging probability, and no inverse-propensity or doubly-robust estimator is identified there. The fix is a randomised exploration slot or an online test, which is a platform change and not an analyst task.
  3. Rule out the retention read on timing: days 7 to 13 must have closed for every member in the cohort. Reading it four days early truncates the window for the late-registering half of the cohort and biases the estimate by registration day, which correlates with acquisition channel.
  4. Do the integrity re-size, because it is tractable in hours and unblocks a standing measurement. At a two-sided alpha of 0.05 and 80 percent power, detecting a move from 0.50 percent to 0.40 percent needs roughly 70,000 labelled impressions per comparison period under simple random sampling, before any design effect from unequal weights. That number reframes the request: the honest deliverable may be a stratified design plus a longer comparison window, not a bigger weekly sample.
  5. Convert each refusal into a dated deliverable so the week does not end in three unhappy teams: ranking gets the exploration-slot design and the randomised fraction it needs; growth gets the date the cohort closes plus the activation rate on days 0 to 6, which is already readable and is a leading indicator of the number they want.
Follow-up
  • Ranking says a biased estimate is better than none. Answer them in two sentences.
  • How large an exploration fraction would you request, and what does it cost in served quality?
  • If integrity cannot fund 70,000 labels a week, what do you offer instead?
  • 01

    Describe a time when you used statistical analysis to solve a problem.

  • 02

    Tell me about a time you had to work with a difficult team member.

  • 03

    You have one analyst week and three open requests. Ranking wants an off-policy estimate of a candidate ranker, but log_propensity is NULL on 92 percent of home-feed impressions. Growth wants a week-1 retention read on a registration cohort whose day 7 to 13 window closes in four days. Integrity wants the audit sample re-sized because the prevalence interval cannot detect a 20 percent change. Give the order, what each requester gets and when, and the request you refuse outright with the reason.

PracHub interview preparation framework ↗
Is this an official Viber interview guide?

No. It is PracHub's own research and practice material for the Data Scientist role at Viber. Rounds and questions reflect what candidates have reported, not a process Viber has published, and they change over time. Confirm the current format and scope with your recruiter.

PracHub interview research ↗
How difficult is the interview process, and how much preparation time is typical?

The interview process can be challenging, particularly in the technical assessments. Candidates typically spend several weeks preparing to ensure they are well-versed in relevant skills and concepts.

PracHub interview research ↗
What differentiates successful candidates?

Successful candidates demonstrate a strong balance of technical proficiency, problem-solving ability, and cultural fit. They effectively communicate their thought processes and showcase their adaptability.

PracHub interview research ↗
What is the culture and working style like at Viber?

The culture at Viber promotes collaboration, innovation, and a user-first mindset. Teams work closely together, fostering an environment where diverse perspectives are valued.

PracHub interview research ↗
What is the typical timeline from initial screen to offer?

Candidates can expect a timeline ranging from a few weeks to a couple of months, depending on the number of interview stages and team availability.

PracHub interview research ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.