← PayPal Interview Insights

PayPal·Data Scientist·Technical Phone Screen·Intermediate

IntermediatePrefer not to say
Jun 2026

Summary

PayPal data science interview with a SQL-heavy focus, at least for this round. Two questions, both centered on the same pair of tables about contact syncing. Nothing wild, but the denominator logic on the second one is the kind of thing that trips you up if you're not careful.

Questions Asked (2)

Q1

Given a table of synced contacts and a table of user info, write SQL to calculate the average number of contacts synced per user.

Product Analytics & MetricsData Modeling
Author's notes

Straightforward aggregation question.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

First, clarify the table schemas and the definition of 'average contacts per user'—whether it's average across all users (including those with zero contacts) or only users who have synced contacts. Then, write a SQL query that counts contacts per user, joins to the user table if needed, and computes the average using either a subquery or a window function.

Pro tip: PayPal values data-driven decision making, so explicitly state your assumptions about the data model (e.g., whether every user appears in the user table) and mention how you would validate the result with a sanity check, such as comparing the average to the median or checking for outliers.

1. Clarify the schema and requirements

Ask about the structure of the synced contacts table and user info table, and confirm whether the average should include users with zero synced contacts. This ensures you're solving the right problem.

2. Aggregate contacts per user

Write a subquery or CTE that groups the synced contacts table by user ID and counts the number of contacts per user.

3. Join with user info (if needed)

If the user table contains all users (including those without synced contacts), left join the aggregated contacts to the user table and coalesce null counts to zero.

4. Compute the average

Calculate the average number of contacts per user by dividing the total number of contacts by the total number of users, or by using the AVG() function on the per-user counts.

5. Validate and discuss edge cases

Mention potential edge cases such as duplicate contacts, users with no synced contacts, and how to handle them. Also, suggest a sanity check on the result.

Key Points to Mention

  • Definition of 'average contacts per user': whether to include users with zero contacts.
  • Use of LEFT JOIN to include all users from the user info table.
  • Handling NULLs with COALESCE or IFNULL to treat missing counts as zero.
  • Using COUNT(DISTINCT contact_id) to avoid double-counting duplicate contacts.
  • Performance considerations: indexing on user_id and avoiding unnecessary joins.
  • Validation: compare average to median or check distribution for outliers.

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

Q2

Using the same tables, write SQL to find what percentage of all PayPal users have synced at least one contact.

Product Analytics & MetricsData Modeling
Author's notes

This is where I slowed down a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

First, clarify the table schemas and define what constitutes a 'PayPal user' and a 'synced contact'. Then, write a SQL query that calculates the percentage by dividing the number of distinct users who have at least one synced contact by the total number of distinct users, ensuring to handle potential duplicates and NULLs appropriately.

Pro tip: Always confirm the grain of the tables and whether 'synced' means a specific status or any record in a contacts table. Also, consider if you need to filter for active users or a specific time frame, as this can significantly impact the metric.

1. Clarify Definitions and Assumptions

Ask clarifying questions to understand the table structures, what defines a PayPal user (e.g., all users vs. active users), and what 'synced at least one contact' means (e.g., a record in a contacts table with a specific status).

2. Identify Relevant Tables and Columns

Determine which tables contain user information and contact sync data. Identify the user ID column and the contact sync indicator (e.g., a flag or a separate table with user IDs).

3. Calculate Numerator and Denominator

Write subqueries or CTEs to count distinct users who have synced at least one contact (numerator) and count distinct all users (denominator). Ensure to use DISTINCT to avoid duplicates.

4. Compute Percentage and Format Output

Divide the numerator by the denominator and multiply by 100 to get the percentage. Use appropriate rounding and handle division by zero if necessary.

5. Validate and Sanity Check

Mention that you would validate the query by checking edge cases, such as users with no contacts, and possibly cross-check with a sample or known metrics.

Key Points to Mention

  • Use of DISTINCT to count unique users in both numerator and denominator.
  • Handling of NULLs or missing data in the contact sync table.
  • Consideration of time frame (e.g., all-time vs. monthly active users).
  • Definition of 'synced contact' (e.g., any record vs. successful sync status).
  • Potential need to join tables and filter for PayPal users specifically.
  • Performance considerations for large datasets (e.g., using indexes, avoiding unnecessary joins).

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