← Meta Interview Insights

Meta·Data Scientist·Technical Phone Screen·Intermediate

IntermediatePrefer not to say
May 2026Remote

Summary

SQL-heavy technical screen for a Data Scientist role at Meta, focused on user engagement metrics using call and user profile tables. Two questions, both variations on the same join-and-aggregate theme. Nothing too wild but the devil is in the details with the date filtering.

Questions Asked (2)

Q1

Using a calls table and a user profile table, write a query to find what percentage of French users participated in at least one video call the previous day.

Product Analytics & MetricsData Modeling
Author's notes

The join is straightforward but I tripped up on the DISTINCT count part.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the schema and definitions: which table has user country, which table logs calls, and what counts as a 'video call' and 'participated'. Then write a query that filters French users, identifies those with at least one video call the previous day, and computes the percentage as the ratio of distinct participating users to total French users.

Pro tip: Always state your assumptions about the data model (e.g., user_id in calls table represents a participant, and call_date is in UTC) and mention edge cases like users with no calls or multiple calls. This shows you think like a product analyst who cares about data quality and metric definitions.

1. Clarify definitions and schema

Confirm which table contains user country (e.g., user_profile) and which contains call events (e.g., calls). Define 'video call' (e.g., call_type = 'video') and 'participated' (e.g., user is caller or callee).

2. Filter French users

Select distinct user IDs from the user profile table where country = 'France' (or equivalent). This forms the denominator population.

3. Identify active video callers yesterday

From the calls table, filter for video calls that occurred on the previous day (using date functions relative to current_date). Extract distinct user IDs who participated.

4. Compute the percentage

Join or use a subquery to count how many French users are in the active set, then divide by total French users and multiply by 100. Use LEFT JOIN or conditional aggregation to handle users with no calls.

5. Write and validate the SQL

Construct the final query, ensuring correct handling of NULLs and date boundaries. Optionally, test with sample data or explain how you would validate the result.

Key Points to Mention

  • Clear definition of 'participated' (caller, callee, or both) and 'video call' (call_type filter).
  • Use of DISTINCT to avoid double-counting users with multiple calls.
  • Date filtering for 'previous day' (e.g., call_date = current_date - 1) and timezone considerations.
  • Handling of users with no calls (LEFT JOIN or subquery with COALESCE).
  • Denominator should be all French users, not just those who made calls.
  • Potential data quality issues: missing country, null user IDs, or duplicate records.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Write a query to calculate total video call duration divided by the number of daily active users in the United States for today.

Product Analytics & MetricsData Modeling
Author's notes

Easier than the first one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Clarify the definitions of 'video call duration' and 'daily active users' (DAU) in the US for today, then outline the SQL query structure: aggregate total call duration from a calls table and count distinct active users from an activity table, both filtered by US and today's date, and finally divide the two. Emphasize handling edge cases like zero DAU and time zone considerations.

Pro tip: Mention that you would validate the metric by checking for outliers and ensuring that the date filter uses the correct time zone (e.g., US Pacific Time for Meta) to align with business reporting. Also, consider whether 'today' means the current date or the last complete day, as real-time data may be incomplete.

1. Clarify Definitions and Assumptions

Define what constitutes a video call (e.g., duration > 0, completed calls) and a daily active user (e.g., any user who initiated a session). Confirm the time zone and whether 'today' refers to the current date or the last full day.

2. Identify Data Sources and Tables

Determine the tables needed: likely a calls table with call duration and user IDs, and a user activity table with user IDs and timestamps. Ensure both have country and date fields.

3. Write Subqueries for Aggregates

Write a subquery to sum call duration for US users today, and another subquery to count distinct active users in the US today. Use appropriate date functions and filters.

4. Combine and Compute the Ratio

Divide the total duration by the DAU count, handling division by zero (e.g., using NULLIF or CASE). Present the final metric, possibly with rounding.

5. Validate and Consider Edge Cases

Discuss potential data issues: incomplete day, time zone mismatches, bot traffic, or users with multiple calls. Suggest sanity checks like comparing to historical averages.

Key Points to Mention

  • Definition of 'video call duration': sum of call durations or average? Typically sum for total.
  • Definition of 'daily active users': distinct users who performed any activity (e.g., opened app, sent message) or specifically made a video call?
  • Time zone handling: use US time zone (e.g., PT) for 'today' to align with business reporting.
  • SQL structure: use subqueries or CTEs to compute numerator and denominator separately, then divide.
  • Handling division by zero: use NULLIF or CASE to avoid errors.
  • Data validation: check for outliers, incomplete data for current day, and ensure filters are correctly applied.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.