Lyft 面经

http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=309636&extra=page%3D1%26filter%3Dlastpost%26orderby%3Dlastpost%26sortid%3D311%26sortid%3D311%26orderby%3Dlastpostphp

 

 

今天面了个很想去的公司。。。上来发个面经求点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。
相关文章
相关标签/搜索