Pinterest 的 Data Scientist 电面走完了,把题目完整记了下来。这轮考察面铺得挺全——两道 SQL、两道 Python、一道实验设计与解读,正好覆盖了 DS 岗的三块核心能力:数据查询、编程实现、实验思维。其中实验解读那道最有意思,藏了个坑,下面细说。

SQL 第一题:各国家曝光量最高的兴趣类别
题意
查询今日内,各个国家下曝光量最高的兴趣类别。
思路
标准分组聚合加窗口函数。先按 country 和 interest_category 分组把曝光量加总,再用窗口函数给每个国家内的类别排名,取第一。
踩坑点:
- “今日内”要加时间过滤,用
DATE(event_time) = CURRENT_DATE,别漏了 WHERE 条件 - 并列最高的情况:用
RANK()保留所有并列第一,用ROW_NUMBER()只取一条,看题目要求选择 - 先用 CTE 聚合再排名,比子查询嵌套更清晰
SQL 第二题:高活跃用户占比
题意
计算各国家”高活跃用户”占”活跃用户”的比例。高活跃用户定义:过去一周内至少活跃四天,OR 某天同时访问过三项服务。
思路
这题的坑在那个”或”字——两个条件是并集关系,得分别算再合并。
踩坑点:
- 两个条件是 OR 关系,用
UNION而不是INTERSECT,漏掉任何一个分支都会算错 - 条件二是”某天”访问三项服务,GROUP BY 要同时包含 user_id 和日期
- 分母是所有活跃用户,不是全体用户,注意范围
Python 第一题:Pin 相似度得分
题意
计算输入 Pin 与其他所有 Pin 的相似度得分。相似度定义为两个 Pin 共同所属的 Board 数量。
思路
本质是集合交集大小。每个 Pin 对应一个所属 Board 的集合,两个 Pin 的相似度 = 两个集合的交集大小。
时间复杂度:O(n × b),n 是 Pin 数量,b 是平均每个 Pin 所属的 Board 数量。
Python 第二题:Top N 相似 Pin
题意
在上一题基础上,返回与输入 Pin 相似度最高的前 N 个 Pin。
思路
在第一题计算出所有相似度之后,如果 Pin 数量很大,用最小堆维护 Top N 比全量排序更省内存。
时间复杂度:O(n × b × log N),比全量排序 O(n × b + n log n) 在 N 远小于 n 时更优。
面试官一般会追问:如果 Pin 数量是十亿级别,怎么做?
→ 离线预计算 + 向量化,用 ANN(近似最近邻)做向量检索,不逐一计算。
实验设计与解读
题目是想提高视频 Pin 比例来提升用户参与度,让你设计 A/B 实验。
我答了假设、核心指标(参与度)、守护指标、用户层面随机分组、实验周期 2-4 周这些常规东西。
实验结果是核心指标“大于 1 分钟会话”显著上升,但同时留存率下降、视频播放时长下降、崩溃率上升。
很多人可能一看核心指标涨了就想上线,但我当时说不能这么草率。这些负面信号说明可能损害了长期体验,尤其是留存下降很危险,崩溃率上升可能还有技术问题。建议再做用户分群分析,看看是哪类用户特别反感,再决定要不要改。
面试官明显对这个解读比较满意,感觉这才是他们想考的点——会不会被一个好看的核心指标带跑偏。
写在最后
这次电面让我觉得 Pinterest 挺看重业务判断力的。准备的时候除了刷 SQL 和 Python,多练练实验 case 的解读会舒服很多。
有在冲 Pinterest DS 或者其他数据岗的同学,可以来找我们聊聊。InterviewShow 专注北美数据和技术岗位的备考辅导,导师来自北美一线大厂,SQL 题池、实验设计 case、pipeline 训练都有覆盖,不走流水线,一对一跟着走。有需要的来聊。