Pinterest VO | Big Head Pins Interviews | Pinterest Onsite Interview Record|General Backend|Experience Summary

1,233 Views
No Comment

this Pinterest, VO is one of the most intensive in my recent experience, with five rounds overall, covering all dimensions of algorithms, system design, and BQ.
At the beginning, I was full of confidence, thinking that I had prepared quite a lot for the system design, but after I really went on the field, I realized that Pinterest's follow-up is the kind of style that digs to the bottom step by step, and doesn't give you a chance to "go around" at all. Here are the details of the interview.

Pinterest VO | Big Head Pins Interviews | Pinterest Onsite Interview Record|General Backend|Experience Summary

Pinterest Interview Process

The overall interview process at Pinterest is fast-paced, with the interview process from recruiter reach out to formal VO generally completed within 2~3 weeks.

Stage Description duration focus of investigation
Resume Screening Internal promotion or official website submission, after recruiter preliminary screening - Background match, project experience, motivation to jump ship, etc.
Recruiter Call Recruitment HR initial phone chat, introduce the position, confirm the intention, some cases will have a short behavioral interview 30 minutes or so Communication presentation, job search motivation, culture fit
OA (depending on position) Some positions may require an online written test (e.g. DS, ML) 60~90 minutes Coding skills, algorithmic fundamentals
VO (Virtual Onsite) Typically consists of 4~5 rounds: Coding, System Design, BQ, and possibly one round of architectural discussion. 45 minutes per round Comprehensive assessment of technical depth, system design, collaborative communication, etc.

Round 1 Coding: Mirror Reflection Path Problem

The interviewer for this question came up with a straightforward question, which was, frankly, to give a two-dimensional grid, in which each grid was either /,\\, either empty, you enter from a certain starting point, direction, and have to simulate the trajectory of the light reflection to see if you can get to the target point.

The ideas are not really complicated, but the pitfalls are particularly numerous.
I started to write too roughly, reflecting the direction of the if wrote a lot of logic, the result of the boundary judgment missed, the direction of the update is also written wrong, ran the sample directly infinite loop.
Luckily, my side ProgramHelp real-time voice reminds: first abstract the direction of (dx, dy), and then use a mapping table to write the mirror reflection changes, this idea is clear, change after a moment over the sample.
And they also reminded me that this question is easy to make mistakes on visited records, not just with position coordinates, but also with directional information, otherwise you might not be able to find the bug even if you go back and forth in circles.

Round 2 Coding: TopK Ad Stats + Sliding Window Version

This round is one of those topics that seems easy at first and gets more and more elaborate the more you write.
Given a bunch of (timestamp, adId), you want to return the top K ads with the highest frequency, follow-up is topK in the sliding window scenario.

I used hash + heap at the very beginning, and the interviewer challenged me directly:
"If there are hundreds of millions of records and the sliding window only retains events within 1 minute, how do you update your data structure? Can sex be enough?"
I froze, the lazy remove of the heap would not be able to handle such frequent data changes.

ProgramHelp's voice reminder came directly to the point: you can use bucket + counter map, timestamp down to align to the time fragment (such as every 10 seconds a group), and then use multiple buckets sliding clean up expired data. This change in the logic of the entire smooth, I even brought the space complexity also explained very well, the interviewer also satisfied nodded and said: "That's a nice trick."

Round 3 SD: Aggregation system for user click events and advertising events

This round was super long, right off the bat the interviewer threw in a bunch of fields and asked me to design an event aggregation system with the goal of outputting "adId -> region -> click/view times".

At first I thought it was one of those standard stream processing questions and went straight to flink + window join, but was challenged by the interviewer, "Is there any way to simplify this join? Does the data have to be joined in real time?"
I'm stuck straight away in a whirlwind of "should I triage?" thoughts.
ProgramHelp hints that the core here is not join, but to build an intermediate servingId -> adId + region mapping relationship with the help of Redis, to ease the complex logic in advance, and do lazy join in the background.
As soon as I heard immediately changed direction, the subsequent design is very natural, especially Redis key/value structure in the reminder has also been optimized to avoid data redundancy.

Round 4 SD: Product Catalog Uploading System

This question honestly almost dissuaded me.
The scenario is: a merchant uploads a catalog of products, which may be 500,000 items at a time, and a back-end processing system has to be designed, which is required to be stable and scalable.

My first reaction was chunk uploaded in batches, but the interviewer disliked it straight back:
"We don't control the client, our server has to be able to take 50w items at once."

I was momentarily stumped and could only say that I might want to use streaming consumption and asynchronous drop libraries, but couldn't speak clearly about architectural stability.
The ProgramHelp backend immediately reminded me to check the read/write ratio before deciding whether to go for a write-optimized or read-optimized architecture. After I clarified my requirements, I realized that there are actually more reads than writes.
So changed the direction, designed to write buffer + background batch persistence + front-end cache to reduce high-frequency reading, and then add a write task queue to ensure throughput, the whole system design logic a clear.

This round was sort of saved from the brink of collapse...

Round 5 BQ: Leadership, Conflict, Project Ownership

I was better prepared for this round of BQ because ProgramHelp gave me a copy of the behavior simulation questions and mocked them a few times in advance.
Ask classic questions like:

  • "Tell me about a time you disagreed with a teammate."
  • "When did you take initiative to lead something not in your scope?"

I used the STAR framework to speak steadily, and in each example I interspersed some data metrics/impact ranges, which kind of impressed, and the interviewer even complimented me at the end: very structured, and impact-focused.

To summarize: the biggest thing I learned from this interview

Pinterest's interview style tends to be challenging, especially in the two rounds of system design, so don't be afraid to be challenged, but rather "clarify + reposition" and show that you can adjust quickly from feedback.

And my biggest plus this time around is actually the ProgramHelp The VO assist:

Coding that reminds you when you're stuck, "You can actually use a direction map here."

When design gets stuck in the wrong direction, it immediately suggests that you "clarify your requirements before producing a drawing."

Even BQ helped me to refine a few templates and cases in advance, which made the presentation particularly smooth

Without this service I'm likely to hang at least one round. Waiting on hr to hear back now, but overall feels pretty solid.

author avatar
azn7u2@gmail.com
END
 0
Comment(No Comment)