Redian新闻
>
攒人品,Amazon 二面面经
avatar
攒人品,Amazon 二面面经# JobHunting - 待字闺中
f*z
1
2nd phone interview之后悲剧。下面是面经
1st phone:
Question about the project I listed on my resume
Basic questions on Java, what I can remember includes
(1) difference between stack and heap
(2) inheritance in java
(3) multi-threading
(4) difference between abstract class and interface
Open question, find which 三连击 on Amazon's website is the most popular.
2nd phone:
Question on web application I've developed. How to scale up? How to handle
concurrent requests etc.
Coding question:
(1) implement spell checking function
(2) there are two BSTs, write a program to determine whether they have the
same set of values.
感觉跟amazon的面试官交流的时候气氛很dry,第一个面试官,答完了也没有反馈,接
着问下一道;第二个面试官写完程序也不告诉你他认为怎么样,有没有错什么的。
avatar
x*i
2
有包子才有人品啊。。。
avatar
p*2
3
(2) there are two BSTs, write a program to determine whether they have the
same set of values.
就是return true or false吗?
avatar
f*z
4
我所有的包子都在某年某月某日给了别人了。。

【在 x****i 的大作中提到】
: 有包子才有人品啊。。。
avatar
f*z
5
是嗒。

【在 p*****2 的大作中提到】
: (2) there are two BSTs, write a program to determine whether they have the
: same set of values.
: 就是return true or false吗?

avatar
q*x
6
how to do spell checking?

【在 f***z 的大作中提到】
: 2nd phone interview之后悲剧。下面是面经
: 1st phone:
: Question about the project I listed on my resume
: Basic questions on Java, what I can remember includes
: (1) difference between stack and heap
: (2) inheritance in java
: (3) multi-threading
: (4) difference between abstract class and interface
: Open question, find which 三连击 on Amazon's website is the most popular.
: 2nd phone:

avatar
c*z
7
how to do spell checking
avatar
f*z
8
我的做法是用一个字典,把字典的词按字母排序,然后建一个hashtable,排过序的字母
序列作为key,所有具有相同entry的词组成一个链表,作为value。当输入一个拼错的
单词时,就可以look up hashtable给出recommendation了。

【在 q****x 的大作中提到】
: how to do spell checking?
avatar
q*x
9
没看懂。每个链表都是key的一个排列吗?那你假定拼写错误都是次序错,忽略多输、
少输、输错的情况?

【在 f***z 的大作中提到】
: 我的做法是用一个字典,把字典的词按字母排序,然后建一个hashtable,排过序的字母
: 序列作为key,所有具有相同entry的词组成一个链表,作为value。当输入一个拼错的
: 单词时,就可以look up hashtable给出recommendation了。

avatar
s*n
10
有现成的代码
PYTHON的马上就可以用,很好懂
http://norvig.com/spell-correct.html

【在 q****x 的大作中提到】
: 没看懂。每个链表都是key的一个排列吗?那你假定拼写错误都是次序错,忽略多输、
: 少输、输错的情况?

avatar
c*e
11
bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
if(!one && !two) return true;
else if(!one && two) return false;
else if(one && !two) return false;
else return (one->data).equal(two->data)
&& equal(one->left,two->left) && equal(one->right,two->right);
}

【在 p*****2 的大作中提到】
: (2) there are two BSTs, write a program to determine whether they have the
: same set of values.
: 就是return true or false吗?

avatar
q*x
12
wrong. they can have same data set but different topologies.

【在 c**********e 的大作中提到】
: bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
: if(!one && !two) return true;
: else if(!one && two) return false;
: else if(one && !two) return false;
: else return (one->data).equal(two->data)
: && equal(one->left,two->left) && equal(one->right,two->right);
: }

avatar
f*z
13
what I did is inorder traverse and then compared the two sorted array.

【在 q****x 的大作中提到】
: wrong. they can have same data set but different topologies.
avatar
f*z
14
assume不会有多输,少输,输错的情况。。

【在 q****x 的大作中提到】
: 没看懂。每个链表都是key的一个排列吗?那你假定拼写错误都是次序错,忽略多输、
: 少输、输错的情况?

avatar
c*e
15
How about this one?
void inorder(vector& v, BinaryTreeNode* node) {
if(node) {
inorder(v, node->left);
v.push_back(node->data);
inorder(v, node->right);
}
}
bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
vector v1, v2;
inorder(v1, one);
inorder(v2, two);
return v1.equal(v2);
}

【在 q****x 的大作中提到】
: wrong. they can have same data set but different topologies.
avatar
q*x
16
那您应该加到题目里啊。这假设很重要。

【在 f***z 的大作中提到】
: assume不会有多输,少输,输错的情况。。
avatar
q*x
17
yes, this is good.

【在 c**********e 的大作中提到】
: How about this one?
: void inorder(vector& v, BinaryTreeNode* node) {
: if(node) {
: inorder(v, node->left);
: v.push_back(node->data);
: inorder(v, node->right);
: }
: }
: bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
: vector v1, v2;

avatar
p*4
18
顶!
avatar
s*n
19
using too many spaces if the tree is huge.

【在 c**********e 的大作中提到】
: How about this one?
: void inorder(vector& v, BinaryTreeNode* node) {
: if(node) {
: inorder(v, node->left);
: v.push_back(node->data);
: inorder(v, node->right);
: }
: }
: bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
: vector v1, v2;

avatar
q*x
20
then traverse tree x and query tree b.

【在 s******n 的大作中提到】
: using too many spaces if the tree is huge.
avatar
s*n
21
依然大,最好的办法是用2个stack同时in-order traverse,当然对写代码要求就比递
归高了

【在 q****x 的大作中提到】
: then traverse tree x and query tree b.
avatar
q*x
22
怎么会大?那样可以O(1)。
用stack worst case也是O(N)开销吧。

【在 s******n 的大作中提到】
: 依然大,最好的办法是用2个stack同时in-order traverse,当然对写代码要求就比递
: 归高了

avatar
b*3
23
a)遍历第一棵树,建一个hashtable,每个数字对应出现次数
b)遍历第二棵树,递减hashtable里相应数字的出现次数。如果hashtable里没有,就返
回false。当一个数字出现次数为0就remove。最后如果hashtable空,就表示一样。

【在 q****x 的大作中提到】
: 怎么会大?那样可以O(1)。
: 用stack worst case也是O(N)开销吧。

avatar
g*n
24
amazon jobs:
http://jobguiding.com/it-jobs/it-companies/amazon.html

【在 f***z 的大作中提到】
: 2nd phone interview之后悲剧。下面是面经
: 1st phone:
: Question about the project I listed on my resume
: Basic questions on Java, what I can remember includes
: (1) difference between stack and heap
: (2) inheritance in java
: (3) multi-threading
: (4) difference between abstract class and interface
: Open question, find which 三连击 on Amazon's website is the most popular.
: 2nd phone:

avatar
p*2
25
三连击这题有人说说吗?
avatar
H*e
26
This is not inorder traversal

【在 f***z 的大作中提到】
: what I did is inorder traverse and then compared the two sorted array.
avatar
c*e
27
Why? Do not understand it.

【在 H***e 的大作中提到】
: This is not inorder traversal
avatar
l*a
28
are there duplicate in binary tree?

【在 b*********3 的大作中提到】
: a)遍历第一棵树,建一个hashtable,每个数字对应出现次数
: b)遍历第二棵树,递减hashtable里相应数字的出现次数。如果hashtable里没有,就返
: 回false。当一个数字出现次数为0就remove。最后如果hashtable空,就表示一样。

avatar
f*z
29
2nd phone interview之后悲剧。下面是面经
1st phone:
Question about the project I listed on my resume
Basic questions on Java, what I can remember includes
(1) difference between stack and heap
(2) inheritance in java
(3) multi-threading
(4) difference between abstract class and interface
Open question, find which 三连击 on Amazon's website is the most popular.
2nd phone:
Question on web application I've developed. How to scale up? How to handle
concurrent requests etc.
Coding question:
(1) implement spell checking function
(2) there are two BSTs, write a program to determine whether they have the
same set of values.
感觉跟amazon的面试官交流的时候气氛很dry,第一个面试官,答完了也没有反馈,接
着问下一道;第二个面试官写完程序也不告诉你他认为怎么样,有没有错什么的。
avatar
x*i
30
有包子才有人品啊。。。
avatar
p*2
31
(2) there are two BSTs, write a program to determine whether they have the
same set of values.
就是return true or false吗?
avatar
f*z
32
我所有的包子都在某年某月某日给了别人了。。

【在 x****i 的大作中提到】
: 有包子才有人品啊。。。
avatar
f*z
33
是嗒。

【在 p*****2 的大作中提到】
: (2) there are two BSTs, write a program to determine whether they have the
: same set of values.
: 就是return true or false吗?

avatar
q*x
34
how to do spell checking?

【在 f***z 的大作中提到】
: 2nd phone interview之后悲剧。下面是面经
: 1st phone:
: Question about the project I listed on my resume
: Basic questions on Java, what I can remember includes
: (1) difference between stack and heap
: (2) inheritance in java
: (3) multi-threading
: (4) difference between abstract class and interface
: Open question, find which 三连击 on Amazon's website is the most popular.
: 2nd phone:

avatar
c*z
35
how to do spell checking
avatar
f*z
36
我的做法是用一个字典,把字典的词按字母排序,然后建一个hashtable,排过序的字母
序列作为key,所有具有相同entry的词组成一个链表,作为value。当输入一个拼错的
单词时,就可以look up hashtable给出recommendation了。

【在 q****x 的大作中提到】
: how to do spell checking?
avatar
q*x
37
没看懂。每个链表都是key的一个排列吗?那你假定拼写错误都是次序错,忽略多输、
少输、输错的情况?

【在 f***z 的大作中提到】
: 我的做法是用一个字典,把字典的词按字母排序,然后建一个hashtable,排过序的字母
: 序列作为key,所有具有相同entry的词组成一个链表,作为value。当输入一个拼错的
: 单词时,就可以look up hashtable给出recommendation了。

avatar
s*n
38
有现成的代码
PYTHON的马上就可以用,很好懂
http://norvig.com/spell-correct.html

【在 q****x 的大作中提到】
: 没看懂。每个链表都是key的一个排列吗?那你假定拼写错误都是次序错,忽略多输、
: 少输、输错的情况?

avatar
c*e
39
bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
if(!one && !two) return true;
else if(!one && two) return false;
else if(one && !two) return false;
else return (one->data).equal(two->data)
&& equal(one->left,two->left) && equal(one->right,two->right);
}

【在 p*****2 的大作中提到】
: (2) there are two BSTs, write a program to determine whether they have the
: same set of values.
: 就是return true or false吗?

avatar
q*x
40
wrong. they can have same data set but different topologies.

【在 c**********e 的大作中提到】
: bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
: if(!one && !two) return true;
: else if(!one && two) return false;
: else if(one && !two) return false;
: else return (one->data).equal(two->data)
: && equal(one->left,two->left) && equal(one->right,two->right);
: }

avatar
f*z
41
what I did is inorder traverse and then compared the two sorted array.

【在 q****x 的大作中提到】
: wrong. they can have same data set but different topologies.
avatar
f*z
42
assume不会有多输,少输,输错的情况。。

【在 q****x 的大作中提到】
: 没看懂。每个链表都是key的一个排列吗?那你假定拼写错误都是次序错,忽略多输、
: 少输、输错的情况?

avatar
c*e
43
How about this one?
void inorder(vector& v, BinaryTreeNode* node) {
if(node) {
inorder(v, node->left);
v.push_back(node->data);
inorder(v, node->right);
}
}
bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
vector v1, v2;
inorder(v1, one);
inorder(v2, two);
return v1.equal(v2);
}

【在 q****x 的大作中提到】
: wrong. they can have same data set but different topologies.
avatar
q*x
44
那您应该加到题目里啊。这假设很重要。

【在 f***z 的大作中提到】
: assume不会有多输,少输,输错的情况。。
avatar
q*x
45
yes, this is good.

【在 c**********e 的大作中提到】
: How about this one?
: void inorder(vector& v, BinaryTreeNode* node) {
: if(node) {
: inorder(v, node->left);
: v.push_back(node->data);
: inorder(v, node->right);
: }
: }
: bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
: vector v1, v2;

avatar
p*4
46
顶!
avatar
s*n
47
using too many spaces if the tree is huge.

【在 c**********e 的大作中提到】
: How about this one?
: void inorder(vector& v, BinaryTreeNode* node) {
: if(node) {
: inorder(v, node->left);
: v.push_back(node->data);
: inorder(v, node->right);
: }
: }
: bool equal(BinaryTreeNode* one, BinaryTreeNode* two) {
: vector v1, v2;

avatar
q*x
48
then traverse tree x and query tree b.

【在 s******n 的大作中提到】
: using too many spaces if the tree is huge.
avatar
s*n
49
依然大,最好的办法是用2个stack同时in-order traverse,当然对写代码要求就比递
归高了

【在 q****x 的大作中提到】
: then traverse tree x and query tree b.
avatar
q*x
50
怎么会大?那样可以O(1)。
用stack worst case也是O(N)开销吧。

【在 s******n 的大作中提到】
: 依然大,最好的办法是用2个stack同时in-order traverse,当然对写代码要求就比递
: 归高了

avatar
b*3
51
a)遍历第一棵树,建一个hashtable,每个数字对应出现次数
b)遍历第二棵树,递减hashtable里相应数字的出现次数。如果hashtable里没有,就返
回false。当一个数字出现次数为0就remove。最后如果hashtable空,就表示一样。

【在 q****x 的大作中提到】
: 怎么会大?那样可以O(1)。
: 用stack worst case也是O(N)开销吧。

avatar
g*n
52
amazon jobs:
http://jobguiding.com/it-jobs/it-companies/amazon.html

【在 f***z 的大作中提到】
: 2nd phone interview之后悲剧。下面是面经
: 1st phone:
: Question about the project I listed on my resume
: Basic questions on Java, what I can remember includes
: (1) difference between stack and heap
: (2) inheritance in java
: (3) multi-threading
: (4) difference between abstract class and interface
: Open question, find which 三连击 on Amazon's website is the most popular.
: 2nd phone:

avatar
p*2
53
三连击这题有人说说吗?
avatar
H*e
54
This is not inorder traversal

【在 f***z 的大作中提到】
: what I did is inorder traverse and then compared the two sorted array.
avatar
c*e
55
Why? Do not understand it.

【在 H***e 的大作中提到】
: This is not inorder traversal
avatar
l*a
56
are there duplicate in binary tree?

【在 b*********3 的大作中提到】
: a)遍历第一棵树,建一个hashtable,每个数字对应出现次数
: b)遍历第二棵树,递减hashtable里相应数字的出现次数。如果hashtable里没有,就返
: 回false。当一个数字出现次数为0就remove。最后如果hashtable空,就表示一样。

avatar
s*5
57
最后一道题也问我了,就是in-order写两个数组,然后比一遍。
对方夸我code is clear, easy to follow, 反而对是否最优化space不是很care
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。