← Meta Interview Insights

Meta·Data Scientist·Technical Phone Screen·Senior

Senior
May 2026

Summary

Meta data scientist SQL round, two questions both centered on a voice calling feature. Nothing too wild conceptually but the window logic and dual-role counting tripped me up more than I expected.

Questions Asked (2)

Q1

Given a table of call events, compute the percentage of distinct callers who made at least 20 calls in the last 7 days. A caller is defined strictly by the caller_user_id column. Output the analysis date and the percentage as a double.

Product Analytics & MetricsData Modeling
Author's notes

Pretty clean once you pin down the analysis date.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

First, filter the call events to the last 7 days relative to the analysis date. Then, group by caller_user_id and count distinct calls (or rows) per caller, filter to those with at least 20 calls, and compute the percentage of distinct callers meeting this threshold out of all distinct callers in the same period. Finally, output the analysis date and the percentage as a double.

Pro tip: Clarify whether 'calls' means distinct call events or distinct callees, and confirm the definition of 'last 7 days' (e.g., rolling 7 days vs. calendar week). Also, consider using a subquery or CTE to avoid counting callers multiple times.

1. Define the analysis window

Determine the exact date range for 'last 7 days' based on the analysis date. Ensure you handle time zones and date boundaries consistently.

2. Filter and aggregate call events

Filter the call events table to the last 7 days. Group by caller_user_id and count the number of calls per caller.

3. Identify heavy callers

From the aggregated counts, select caller_user_ids that have at least 20 calls. This gives the numerator.

4. Compute the percentage

Calculate the total number of distinct callers in the last 7 days (denominator). Divide the numerator by the denominator and multiply by 100 to get the percentage as a double.

5. Output the result

Return the analysis date and the computed percentage in the required format.

Key Points to Mention

  • Use of DISTINCT on caller_user_id to count unique callers.
  • Definition of 'call' as a row in the call events table (or clarify if distinct calls are needed).
  • Handling of the date range: rolling 7 days vs. calendar week, and inclusion/exclusion of the analysis date.
  • Use of conditional aggregation or subqueries to compute numerator and denominator.
  • Edge cases: callers with exactly 20 calls, missing dates, and time zone considerations.
  • Performance considerations: indexing on date and caller_user_id for efficient filtering.

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

Q2

For GB daily active users on the analysis date, what percentage had at least 50 total calls (as caller plus recipient) in the last 7 days? The denominator is GB users active on the analysis date in the daily_active_users table.

Product Analytics & MetricsData Modeling
Author's notes

This one took me longer.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

First, define the denominator as distinct GB users from the daily_active_users table on the analysis date. Then, for each of those users, compute the total number of calls (as caller plus recipient) in the 7 days prior to the analysis date, and calculate the percentage who had at least 50 calls.

Pro tip: Clarify whether 'last 7 days' includes the analysis date and whether calls are counted per user or per call event; also consider edge cases like users with no calls. This shows attention to detail and prevents misinterpretation.

1. Define the denominator

Extract the distinct set of GB users from the daily_active_users table on the analysis date. This forms the base population for the percentage calculation.

2. Define the numerator criteria

For each user in the denominator, count the total number of calls where they were either the caller or the recipient in the 7-day window ending on the analysis date. Then filter to those with at least 50 calls.

3. Compute the percentage

Divide the number of users meeting the call threshold by the total number of GB users in the denominator, and multiply by 100 to get the percentage.

4. Validate and handle edge cases

Check for data quality issues such as missing call records, users with no calls, and ensure the time window is correctly applied. Consider if the analysis date should be included in the 7-day window.

Key Points to Mention

  • Denominator: distinct GB users from daily_active_users on the analysis date.
  • Numerator: users with at least 50 total calls (as caller plus recipient) in the last 7 days.
  • Time window: define 'last 7 days' precisely (e.g., 7 days prior to and including the analysis date).
  • Call counting: sum calls where user is caller and calls where user is recipient.
  • Data sources: daily_active_users table and call logs table (or equivalent).
  • Edge cases: users with zero calls, missing data, and potential duplicates.

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