天天看點

2017秋招-技術崗-亞馬遜-海外購-全棧開發(2輪面試)前言第一輪第二輪面試回報總結

Title Content
時間 2017-07-31 10:00
地點 北京市朝陽區東四環中路56号樓遠洋國際中心26層
部門 海外購
崗位 全棧開發
性質 暑期實習,可轉正

前言

本來是通過師兄走秋招内推,該部門多出兩個暑期intern,是以幫忙推了下。

面試當天,照常跑步,到8:20左右從宿舍出發,特别怕遲到,一路上很趕,最後提前30分鐘到達。

後來被HR帶到10層去面試。

第一輪

Title Content
時間 10:00-11:00
面試官 男性

Q1

問題 實作LRU,即實作緩存
面試官先講了緩存的概念
緩存處理主要是新的替換舊的
我設計了類的資料定義和接口
面試官讓我隻實作添加和傳回緩存執行個體的接口
添加是給定key-value
傳回執行個體是給key
我的做法是通過HashMap緩存資料,再維護一個List維護資料的進入時
間。大體沒問題,一些細節、異常處理疏忽了,他說其實這些地方才是經常
考核的。
           

Q2

問題 講一個你的項目
講了自己的一個偏向背景架構設計的項目,講到一些架構的時候,會問為什
麼用它不用别的,分析下就好。
這一部門基本上是我自己講,面試官的回報挺少的
           

第二輪

Title Content
時間 11:00-12:00
面試官 男性

Q1

問題 将二叉搜尋樹變成雙向連結清單,不需要額外空間,改變指針就好
這題我的思路從inorder周遊出發,在面試官的提示下寫了遞歸法,原理
沒想清楚,但是似乎是對的,但是處理出來的是單連結清單,之後需要周遊一遍
改成雙向就好
           

思路:

(1)定義函數helper,含義是傳回包含node的雙向連結清單

(2)每次遞歸,求得node的左右兩邊子樹得到的雙向連結清單,并傳回左右子樹的雙向連結清單的尾部節點

(3)分左右子樹為空、不空各種情況下,将左邊、parent、右邊組合成新的雙向連結清單的政策進行組合

class Node{
    public int val;
    public int left=null;
    public int right=null;
    public Node(int val){
        this.val = val;
    }
}
public class Sollution{

    void sove(Node root){

    }

    Node helper(Node node){
        if(node==null)
            return null;

        Node leftEnd = helper(node.left);
        Node rightEnd = helper(node.right);

        if(leftEnd==null && rightEnd==null){
            node.right=node;
            return node;
        }

        if(leftEnd==null && rightEnd!=null){
            Node rightStart = rightEnd.right;
            node.right=rightStart;
            right.left=node;
            rightEnd.right=node;
            return rightEnd;
        }

        if(leftEnd!=null && rightEnd==null){
            Node leftStart = leftEnd.right;
            leftEnd.right = node;
            node.left=leftEnd;
            node.right=leftStart;
            return node;
        }

        if(leftEnd!=null && rightEnd!=null){
            Node leftStart = leftEnd.right;
            Node rightStart = rightEnd.right;
            node.left=leftEnd;
            node.right=rightStart;
            leftEnd.right=node;
            rightStart.left=node;
            rightEnd.right=leftStart;
            return rightEnd;
        }

    }

}
           

Q2

問題 将阿拉伯數字轉換成中文讀法,例如“12”,轉換成“十二”
我隻考慮了不含0的,億以下的轉換。經過面試官提點才發現這個問題。這
就是我失敗的地方。
           

面試回報

Failed

總結

其實面試官出的題都挺簡單的,但是就是在那種封閉、時間限制的環境中,很多細節覺得沒必要(其實往往是考核的,也是你比别人更優秀的地方,簡單的大家都會做,做好細節才能突出自己)。同時思維比較局限,有遺漏case的情況,這是緻命的。

下此面試一定要注意細節!!!

繼續閱讀