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。
|