2017秋招-技术岗-亚马逊-海外购-全栈开发(2轮面试)

来源:互联网 发布:oracle数据库审计 编辑:程序博客网 时间:2024/04/28 05:50
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的情况,这是致命的。

下此面试一定要注意细节!!!

原创粉丝点击