← Meta Interview Insights

Meta·Data Scientist·Technical Phone Screen·Intermediate

Intermediate
Jul 2026

Summary

SQL-heavy technical screen for a Data Scientist role at Meta. Two questions, both pulling from the same video calls table, and the second one was sneakily annoying once you got into the percentage calculation part.

Questions Asked (2)

Q1

Given a video calls table, how would you find the number of unique callers who have called more than three distinct recipients in the last seven days?

Product Analytics & MetricsData Modeling
Author's notes

Pretty standard once you see it.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the table schema and definitions (e.g., what constitutes a 'caller', 'recipient', and 'call'). Then outline a SQL query that filters calls from the last seven days, groups by caller and recipient to get distinct pairs, counts distinct recipients per caller, and finally counts callers with more than three distinct recipients.

Pro tip: Mention the importance of handling edge cases like multiple calls to the same recipient within the period, and consider performance implications for large datasets (e.g., using subqueries or window functions). Also, discuss how you would validate the results with a small sample.

1. Clarify requirements and schema

Ask about the table structure (columns like caller_id, recipient_id, call_timestamp) and confirm definitions: 'unique callers' means distinct caller IDs, 'called' means any call (regardless of duration/status), and 'last seven days' is relative to current date.

2. Filter calls to last seven days

Use a WHERE clause to select only calls where call_timestamp is within the last 7 days (e.g., call_timestamp >= CURRENT_DATE - INTERVAL '7 days').

3. Get distinct caller-recipient pairs

Use SELECT DISTINCT caller_id, recipient_id to deduplicate multiple calls between the same caller and recipient within the period.

4. Count distinct recipients per caller

Group by caller_id and count the number of distinct recipient_id values (e.g., COUNT(DISTINCT recipient_id) or COUNT(*) on the deduplicated pairs).

5. Filter callers with >3 recipients and count

Apply a HAVING clause to keep only callers with count > 3, then wrap in an outer query to count the number of such callers.

Key Points to Mention

  • Use of DISTINCT to handle multiple calls to the same recipient.
  • Filtering by date range with proper timestamp handling (e.g., timezone considerations).
  • Aggregation with GROUP BY and HAVING to filter groups.
  • Counting distinct callers in the final step (e.g., COUNT(DISTINCT caller_id) or COUNT(*) on grouped result).
  • Performance considerations: indexing on call_timestamp and caller_id, and avoiding unnecessary subqueries.
  • Edge cases: calls with null recipients, self-calls, or calls outside the period.

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

Q2

What percentage of customers from France made at least one video call yesterday?

Product Analytics & MetricsRoot Cause Analysis
Author's notes

This is where I slowed down.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

First, clarify the metric definition: 'customers from France' likely means users whose country is France, and 'video call' includes both 1:1 and group calls. Then, outline the data pipeline: identify the relevant tables (e.g., user dimension, call events), filter for French users and calls on the target date, and compute the percentage as (distinct users with ≥1 video call) / (total distinct French users) * 100. Finally, discuss potential data quality issues and validation steps.

Pro tip: Proactively mention that you would validate the metric by checking for bot activity, duplicate events, and time zone alignment, and consider whether to include users who made calls via cross-app experiences (e.g., Messenger video calls) if the question is about Meta overall.

1. Clarify the metric and scope

Define 'customer from France' (e.g., based on user profile country or IP), 'video call' (e.g., any call with video enabled, including group calls), and 'yesterday' (calendar day in which time zone). Confirm whether the metric is for a specific app (e.g., WhatsApp) or all Meta platforms.

2. Identify data sources and tables

Locate the user dimension table for country, the call event fact table with call type and timestamp, and any session or device tables if needed. Ensure you have access to the necessary date partitions.

3. Write the query logic

Use SQL or equivalent to: (a) filter users with country = 'France' and active status; (b) filter call events where call_type = 'video' and date = yesterday; (c) left join to get distinct users with at least one video call; (d) compute percentage as count(distinct users with call) / count(distinct all French users) * 100.

4. Validate and sanity-check

Check for data completeness (e.g., missing partitions), outliers (e.g., users with abnormally high call counts), and compare with historical trends. Consider segmenting by platform or user tenure to see if the percentage is consistent.

5. Communicate results and caveats

Present the percentage with confidence intervals if possible, and note any assumptions (e.g., time zone, definition of 'customer'). Suggest follow-up analyses if the number seems off.

Key Points to Mention

  • Definition of 'customer from France': user profile country vs. IP-based location, and whether to include expats or travelers.
  • Definition of 'video call': 1:1 vs. group, audio-only vs. video-enabled, and whether to count calls that failed to connect.
  • Time zone handling: 'yesterday' should be defined in a consistent time zone (e.g., UTC or local France time) and ensure event timestamps are converted accordingly.
  • Data quality: deduplication of events, bot filtering, and handling of missing or null country data.
  • Metric calculation: use distinct user counts to avoid double-counting users with multiple calls, and ensure denominator includes all active French users (not just those who made any call).
  • Potential segmentation: break down by platform (e.g., WhatsApp, Messenger, Instagram) or user demographics to provide richer insights.

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