[亞馬遜群面] 送貨問題

1月11號去西雅圖總部面的。1月16號星期一收到的感謝信,雖然跪了,還是寫下來吧。
因為簽了保密協議,又因為很多阿三會找我們的面經,所以代碼和描述都是取近義,盡量給后來的同學講明白。
新蓋的樓,叫"Day 1",聽說是取自CEO的一句名言。
頭一天晚上去踩了個點,從住的酒店到大樓最多10分鐘。
我是提前半個小時到的,看著公司的人進進出出就也就沒這么緊張。

幾個之后的同學問到的問題:
  • 保密協議到前臺也可以簽,不想自己打印的可以直接到公司簽。
  • 不用存包,帶著自己的包上去。
  • 手機會要求你關掉。
  • 提供早餐和午餐,食物是能量,能吃就吃。

基本是三個人一個組,在recruiter嘮叨半天之后,開始進入面試正題。

第一題

每個組會得到一個問題,每個組員會拿到同一個問題的不同解決方案。小組討論每個人的解法有什么優缺點,分析時間復雜度,然后給三個解法排個序,哪個相對來說最好,哪個相對來說最不好。(根據地里面經,一般都是 2 > 1 > 3)一共好像是15分鐘。包括討論和跟一起跟面試官交流。

我們組抽到的是【排名前M】的那道題。這道題LeetCode上有,大家都應該做過。

注意仔細審題
題目要求 只考慮時間復雜度,不考慮空間復雜度,不用優化。但是面試官會要求小組提出優化的大概方向。

三個不同的解法。

第一個是暴力,不多說。
第二個,也就是我拿到的解法, 快速選擇
第三個是用 優先隊列,也不用多說。

第二個解法其實是不完整的代碼,缺少遞歸的部分。(不知道我說啥的同學,按照上面三個解法把原題做一遍就知道了,這里就不貼代碼了。)

不完整的代碼是肯定墊底的。

然后排序完之后,會給面試官確認。面試官一般都會問問優化的問題。注意表現出領導力,這是亞麻看重的地方(帶著其他人審題,分析代碼什么的)


第二題

這就是傳說中的送貨問題。(代碼在最后,百度云,密碼是:k四五六(換成阿拉伯數字即可)

Tips:在寫代碼中途會有一個30分鐘的一對一interview。主要是講第一小題的解法和第二小題的思路和實現所用的數據結構。自己去選擇自己的時間段(一共有4個時間段可以選),我建議選擇第二個時間段,當時我就選的第三個時間段,結果輪到我的時候,我基本上都寫完了……
把每一道題的時間復雜度分析清楚,因為在提交代碼之后還會有一輪15分鐘的interview,就會讓你解釋每個解法的時間復雜度。

題目背景大概如下:(建議配合代碼一起看,上傳的是Java的版本)

公司的主要業務就是淘寶。那么淘寶就需要送貨。從用戶下訂單到送貨,有很多因素需要考慮(庫存量,庫存所在地,收貨地區,運費等等)。
每天公司都會產生很多的訂單,每一個訂單對應只有一個商品(一個商品ID),而公司在全國幾個大的地區都有設置倉庫。倉庫里有商品,每個商品有不同的ID唯一識別。另外,每個倉庫都有能從自己的所在地運送到其他地區的費用和方式。


三個小題:
  1. 給定 一個商品ID 和一個 目的地,返回所有對應這個商品的庫存運送花費
  2. 給定一個訂單的列表,要么滿足運送最多的訂單,要么滿足最小化遲到的訂單(盡量在用戶預期時間內送到)
  3. 跟第二小題一樣的輸入,滿足平均每單運費最小。

在第二小題和第三小題中,只需要完成核心的算法代碼部分,輸入和輸出都不用擔心,并且在運行主函數的時候,會有百分比打印在console上。

我第三小題沒有做,但是在第二小題里,基本把第三小題也做了,結果記得是91%的fulfill orders,30%的ontime order,$4的average shipping cost

題目本身并不難,而且也并不需要很復雜的實現,什么樹,什么圖都用不著,要么排序,要么用優先隊列。主要考慮的是很多edge cases和優化。

  • 對于第一小題的建議是,先寫暴力的方法(兩個for循環嵌套),等出去一對一的時候,就可以讓面試官問優化的事,然后一秒鐘答上用HashMap。讓面試官感覺你反應很快。
  • 對于第二小題,見仁見智,反正寫出的算法合理并且復雜度不要太高就行。
  • 對于第三小題,對shippingcost排個序,然后想想優化就行了。

為什么不多說,是因為亞麻考這題就是看每個人的思路,說的細致了就給大家有了先入為主的框架,想edge case就不好想了,另外每個人的解法都不一樣,如果能有用樹或者圖,面試官同意,在2個小時左右能夠寫出完整代碼的話,也是可以的,反正我是沒有想到……

鏈接:http://pan.baidu.com/s/1i48itBB
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,287評論 25 708
  • 雨,很大的雨,一滴一滴地,從天上掉下來。起先,是砸到地上,把浮土砸出一個個小坑,撲起一波灰塵,慢慢地,浮土都洇濕了...
    小兔子圓圓閱讀 285評論 0 0
  • 1 在即刻上看到淡豹的一個小采訪,這種長得又美,寫東西又好的人真是讓人... 2 吃餃子不蘸醋真是對不起醋。 3 ...
    lemarc9723閱讀 732評論 0 1
  • 2015.2.15 甘阿姨叫我起床,我看看窗外,天還是黑的。 我手里握著給媽媽的信,睡覺的時候可能壓倒了,紙頁已經...
    不是我666666閱讀 491評論 0 3
  • 每個人都是由孩子成長起來的,喜歡玩是我們從小的天性。我每曾看到孩子在那玩,而我就會放下成人的身段和他們一起玩。畢竟...
    天外之音閱讀 199評論 1 1