拼吹斯特onsite面经Seattle

下午面试的,趁还记得写个面经好了。

  1. 压缩数字。e.g. 1 -> 11, 21 -> 1211, 33333 -> 53。follow up是给你一个output,找到所有可能的input。e.g. 1211 可以是21也可以是121个1。
    用了dfs,最后提示可以用memorization优化,但是快结束了没时间写了,提了几句怎么写。

  2. 20+年工作经验的大姐,问题是remove duplicate pin, 给定一个list 的pin,排序的,和一个api diff(pin1, pin2) 用来决定两个图片的相似度,问怎么找到重复的pin并去掉靠后的。
    肯定不能蛮力比每一对,怎么做可以讨论下,因为我自己做的也很烂。

  3. design轮,当推送广告给用户的时候,有两个rule,一个是一小时内看过这个广告了的不能推送,一个是一天内看过这个广告超过10次的不能推送。怎么实现这个判断。
    先说了很多in memory 的 map啊,然后问道那deployment的时候怎么办。后来提到了用key value store他好像比较满意,比如亚麻的ddb,用户id做primary key,timestamp做range key,这个可以快速查到用户看过哪些广告。然后又问道这样的设计的话怎么样处理用户看了广告这个event,就说在event stream里面加个subscriber然后update这个table。又问到了那用户点击了但是这个event还没处理的期间怎么办。问得很细。

  4. black list words,面经好多都提到了。用trie做,妹子做前端的不太懂java只能拿代码跑才能看对错,所以bug free很重要。follow up问了你觉得这个系统会是怎么样的存在,答说最好是web service, 因为会要求realtime反馈。
    这题准备了一下所以这轮还行。

整体感觉差强人意吧。有小挂点。

补充内容 (2018-11-11 06:32):
HR跟我说惜跪,可以理解。

感觉第二题其实别人想问的就是蛮力比一遍,然后再给follow up,但是我自己把自己绕进去了就连第一问都没答完。

楼主具体面的是哪个组? 只有四轮吗?还是只是技术面四轮?谢谢!

第二题意思是按照相似度已经拍好序了?那扫一遍比较相邻的就可以了吧?

我面的西雅图这边的analytics组,给creator做分析什么的。

就是4轮,之前有karat面。

不是,是pins按照rank排好的,比如第一个和第20个类似,你就要删掉第20个。

我不知道那个人的意思是不是简单的做个双循环,所以我直接跳过了写这一步的代码。。但是后来发现她可能就是问这个的。。

楼主能具体说说第一题第二问的思路吗?

第二题可以用union find做吗?我的思路是:让第一个碰到的作为root,并且把所有的root都加到一个hashset里,每次要加入的新元素和hashset里面的比较,如果都不同就是新的root, 加到hashset里,否则不做任何处理,最后只留下hashset里的所有元素即可。

第二问最好的方法应该是DP。不需要用图的方法。

请问一下DP的时间复杂度是多少呢?DP矩阵或者向量中的每一项代表着什么?