Lyft 面经
http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=309636&extra=page%3D1%26filter%3Dlastpost%26orderby%3Dlastpost%26sortid%3D311%26sortid%3D311%26orderby%3Dlastpost
今天面了个很想去的公司。。。上来发个面经求点RP.... 1st Round
这就是所谓的90-minutecoding round,就是实现一个存image data的59oojhgLRU cache,我发现要下载data之后就赶紧改成了C#。不过既然是实现LRUCache也没啥好说的,反正都写烂了,还可以上网搜,所以我觉得我写的code应该完全没啥问题,写完之后测了一下正在加unit test的时候到了1小时的时限。
2ndRounnd
第二轮的面试官比较junior,问的问题还是挺有趣的,一开始问我知不知道inverted index,然后就说假设Amazon上搜比如说red shirt这样的东西,red给一个结果,shirt给一个结果,怎么返回relevant的结果,其实就是intersectionof two sorted arrays。
秒了之后她问了一个很奇怪的问题,说现在我告诉你每个数字都是32 bit的,也就是一个32 bit的有序数组,我们想节省空间怎么办?这个我当时并不会,回家搜了一下发现这是一个叫做variant encoding的东西,在Jeff Dean 09年WSDM Keynote里面也谈到过,说起来整个idea也不是特别复杂,最简单的做法就是8位改7位,最高位用做continuation bit来表示下一个byte是否还是这个数字。那么如果假设有这样的varint encoding呢,整个有序数组为了节省空间其实可以改成存第一个数字以及这些数字的差,这样的话就节省空间了。 这一个followup我其实没想出来,基本上是她提示着走的,后来到最后就把前面的intersection of two sorted arrays改成了如果我们存的是差,如何去解决原问题。后面她又问了一个follow up就是如何merge sorted list,先从two开始然后说如何用multithread解决K,这个我的解法自然而然的就往priorityqueue上走了,她心中期望的解法是每次把list取到一个queue里面,然后只要queue的size >= 2就spin一个worker thread用merge two sorted list的方法去merge,然后merge完了之后再压回queue里面,这样确实可能多线程上更好一点。
. visit 1point3acres.com for more.3rd Round
System design轮,小哥人很不错,一直笑眯眯的,出的题目就是TinyURL。
|