最近不少同學在面 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 / 面試實時提示(偏策略 + 思路引導)
- 高頻題庫整理(很多就是這種“剛考過”的)
比較關鍵的一點是:
他們更偏“低干擾輔助”,而不是那種粗暴代做,這點在現在監控越來越嚴格的環境下其實挺重要。
當然,是否需要用輔助,還是看你自己的準備情況。但如果你已經刷到瓶頸,或者就是差臨門一腳,這種方式確實能幫你把“不確定性”降下來。