顶级技术积累,独家面试资源,免费Mock直播展示
Senior @ Meta
UCSD博士毕业,前Pinterest senior MLE。在CVPR、ECCV等顶级学术会议上以第一作者身份发表过十余篇论文。研究方向集中在可解释的人工智能和鲁棒模型架构的研究。对MLE的面试技巧和得分点了如指掌,培训了团队内的数十名新同事。
Luke P
Senior @ 谷歌
前谷歌高级软件开发工程师,精通分布式系统、云计算和大规模数据处理。在顶级技术会议KubeCon和Google Cloud Next上发表多篇技术报告。专注于提升系统的可扩展性和可靠性。在Github上发布了System Design面试手册,收获上千 🌟
3-1 @ Tiktok
前TikTok工程老兵,擅长大规模互联网应用的开发与优化,专注于提升应用的性能、用户体验和平台安全性。在分布式系统、微服务架构和实时数据处理领域有深厚的技术积累。专做Amazon和Meta的SDE面试辅助,一年内曾拿下超过30个 L5 offer。
Pinterest面经|Pinterest一亩三分地|VO代面|VO辅助
想要和我们的技术团队进行一次免费的沟通?
我们会直击要点,回答你的所有疑问,并介绍我们的服务。
还有顾虑?
我们可以提供免费的vo mock直播展示,我们的团队到底有多少水平,你说了算。
virtual onsite一共包含三轮 coding 和一轮与 Hiring Manager 的沟通。整体感觉 Pinterest 的面试非常注重代码质量、沟通清晰度,以及ownership。网传pin的面试题很难,但其实还好。
第一轮 coding 面试考的是一道比较常规的 graph 题,但 twist 很有意思。题目是:给定一个城市地图,每条边代表一条单向道路,每条道路有一个开关(on/off),问从城市 A 到城市 B 是否存在一条路径,最多允许翻转 K 个开关使其变为可通行。我建了一个变种的 BFS,状态包含当前 node 和已经 flip 了多少次。每次遇到关闭的道路,如果没超过 K,就尝试 flip 并加入队列。面试官非常注重变量命名和边界条件的处理,尤其是 flip 计数的逻辑是否能避免重复访问。
第二轮题目是一个典型的 LRU Cache + Eviction Hook 的变种。除了 get 和 put,还需要支持在元素被驱逐的时候触发一个 callback 函数。思路还是用双向链表 + HashMap,但额外需要在 evict 时正确触发回调。我写完后和面试官详细讨论了线程安全的问题(没有想到会在算法面试问这些问题),包括是否需要加锁、是否支持并发访问等。他也问了我如果 callback 执行时间太长,会不会影响主流程,我提到了用异步处理的可能性。
第三轮是一个面试官自己设计的题,看得出来是实际遇到的系统问题:输入是一个日志系统的访问记录,格式是 (user_id, action_type, timestamp),实现一个类支持以下两个方法:countUniqueUsers(start_time, end_time),和 getUserActions(user_id, start_time, end_time)。我先用两个 Map 做 indexing,一个按 user_id 索引,一个按 timestamp 排序的 list。countUniqueUsers 用 sliding window + HashSet 处理,getUserActions 直接 binary search 范围查找。面试官非常关心数据量大时的性能,还问了我是否可以只用一个索引结构解决两个方法,这部分讨论挺深入。这也是最近的面试的趋势,考原题的概率越来越小了。
最后一轮是和 Hiring Manager 的聊天(HM competency),重点不是算法,而是聊 experience 和合作经历。他先简单介绍了团队正在做的一些 infra 工作,然后问我过去有没有从零设计某个系统、是否带过新人、有没有对 legacy code 进行重构。我重点讲了一个异步消息系统从 design 到 rollout 的过程,以及怎么推动整个团队 adopt 新工具。整个对话非常轻松,也很注重沟通方式和影响力。
Pinterest 的面试给我整体感觉是比较工程化,题目都跟实际系统设计有些挂钩,coding 不追求 trick,而是注重代码健壮性和扩展性。建议大家准备的时候,多练习那些贴近实际业务的题型,尤其是带状态管理或数据访问接口的设计题。系统设计虽然没有单独一轮,但 coding 中经常夹带一些 design 元素,要准备好深入讲你的 trade-off。
求职辅助服务,是关于时间和品质的较量。咨询 Alpha 小助手,获取最专业的Tech求职辅助。
