最近不少同学在面 Pinterest OA ,整体风格很明显:不再只是传统 LeetCode,而是「算法 + 数据科学基础 + 实现能力」混合考察。这套题我帮大家完整整理了一下,包含核心思路和破题关键,适合临时抱佛脚或者系统复盘。

OA 整体情况
- 平台:HackerRank
- 题量:一般 3-4 道题(不同批次略有差异)
- 时长:90-120 分钟
- 特点:前半部分偏算法实现,后半部分开始出现机器学习手撕题(Bagging、k-Means 等),对代码能力和 ML 基础要求较高。
下面是最近出现频率较高的 6 道独家真题 及详细解题思路:
Pinterest OA 题库曝光|Programhelp独家整理
题目 1:局部最大值索引(Local Maxima Indices)
问题描述
给定一个整数数组 rawData 和整数 localArea,找出数组中所有局部最大值的下标,并按升序返回。
局部最大值定义:
- 从 i 开始向右连续 localArea 个元素严格递减;或
- 从 i 开始向左一直严格递减到数组开头。
示例:
rawData = [2, 10, 4, 3, 11, 5, 2, 6, 12, 3, 2], localArea = 2
输出: [1, 8]
解题思路:
- 遍历每个位置 i
- 检查右边是否满足严格递减 localArea 长度
- 检查左边是否所有元素都严格小于当前值
- 收集所有满足条件的下标并排序
题目 2:矩阵表达式最大值
问题描述
给定一个仅包含数字、+、- 的矩阵,从任意数字单元格出发,只能全程向右或全程向下移动,组成合法表达式,求所有可能表达式中的最大值。
规则:
- 不能连续出现运算符
- 不能连续出现数字
- 必须以数字开头
解题思路:
- DFS 遍历所有合法路径
- 边走边维护当前表达式的值和上一个字符类型
- 注意负号的处理
题目 3:山峰最小高度差
问题描述
给定山峰高度数组 heights 和最小观察距离 viewingGap,找出所有满足 |i – j| >= viewingGap 的山峰对中,高度差的最小值。
示例:
heights = [1, 5, 4, 10, 9], viewingGap = 3
输出: 4
解题思路:
- 暴力 O(n²) 容易超时
- 推荐使用排序 + 双指针或滑动窗口 + 单调栈优化
题目 5:Bagging 算法实现
核心要求:
- 从零实现 Bagging 分类器(不使用 sklearn)
- 自助采样(Bootstrap)
- 训练多个基分类器
- 多数投票决定最终结果(平票选编号更小的类)
关键点:严格按题目要求的采样方式实现。
题目 6:k-Means 聚类实现
核心要求:
- 从零实现 k-Means 算法
- 迭代指定次数
- 返回每个数据点的簇编号
实现要点:
- 计算欧氏距离
- 更新质心均值
- 注意空簇处理和数值稳定
一点现实建议
如果你已经在冲刺阶段,其实会发现一个问题:
Pinterest 这类 OA 很少“卡思路”,更多是卡时间 + 卡实现细节 + 卡边界。很多同学明明会做,但就是来不及调通,或者因为一个 corner case 直接挂掉。
这也是为什么现在不少人会借助像 Programhelp 这样的辅助平台来做最后一层保障。
他们主要做几件事:
- OA 实时辅助(支持 HackerRank / Codesignal 等平台)
- 编程卡点语音提醒(不会打断你思路的那种)
- VO / 面试实时提示(偏策略 + 思路引导)
- 高频题库整理(很多就是这种“刚考过”的)
比较关键的一点是:
他们更偏“低干扰辅助”,而不是那种粗暴代做,这点在现在监控越来越严格的环境下其实挺重要。
当然,是否需要用辅助,还是看你自己的准备情况。但如果你已经刷到瓶颈,或者就是差临门一脚,这种方式确实能帮你把“不确定性”降下来。