avatar
AMAZON onsite 3月面经# JobHunting - 待字闺中
b*t
1
第一轮:
印度小哥,先讲project。
实现一个二叉树的类,包含parent节点。
给一个二叉树的任意节点,返回inorder遍历的下一个节点。
刚开始写了返回右子树最左边的节点,后来经提醒补充了没有子树要从parent里找的情
况。中间穿插问了一些java和数据结构的小问题,不难。
第二轮:
白人,kindle组搞测试的,先是自我介绍。
然后写题:给一个string,返回出现频率最高的字符。
先给他讨论思路,问他这些char在不在ASCII范围内,他说good question,不一定。
然后用hashmap写了出来,中间让我解释了一下hash得概念,还有一些小问题记不清了
都不难。
中间遍历hashmap的时候卡了一下,忘了那个KV pair怎么写了,经提醒写出来了,后来
又发现不用遍历hashmap,直接遍历string就可以,然后改正。
最后问了一些测试的问题, 比如刚才是我写的如果输入String为空,就返回null,但
是我的方法返回类型是char,不能用null,后来告诉我可以返回‘\0’(这个我之前还
真不知道。。。)
后来又问我改如何测试,给了几个test case。
总体感觉这轮聊得还不错,后来问了他一些问题,以为下一个面试官还没来,就多跟他
聊了一会,耐心的给我讲了好多amazon的工作环境,文化什么的。
第三轮:
看着有点像墨西哥裔,一进来就连连打哈欠,感觉就像中午喝了酒,没有午休好一样。
然后简单自我介绍一下开始算法
1, 给一个string, 返回所有出现次数为奇数的char.告诉他用hashmap统计出现频率
,后来让优化,就想到可以用hashset先插入再删除,如初反复可以得到所有奇数频率
的char,这题没写代码。
2. 给两个string,代表两个数字,比如s1 = “123”, s2 = “322”, 返回s3 = “
445”,还是先讨论思路,开始说用Integer.parseInt(),然后问我什么情况下我这个方
法不行,我说string很长或者输入不合法。中间又说了用long,bigInteger,最后说用
数组实现他才满意。然后写代码,代码写的比较长,为了方便相加,数组里的数字是倒
序储存的。后来写到相加完毕,还差把相加后的数组再倒序回来转换成string的时候时
间到了。我给他说用stringbuilder倒序遍历一下就可以了。
第四轮:
白人,带了一个学徒一起。
问的是检查一个二叉树树是否是对称树,leetcode原题,之前做过,可惜当时忘了。开
始用bfs写,写到一半自己突然发现有test case满足不了,卡了一下,后来经提醒写出
了递归的解法,代码写的比较长,写完也没多久时间了,就让我问问题了。
回去看之前leetcode上写的解法,就六七行,瞬间就沮丧了。
总体感觉还行,因为问的题基本都写出来了,聊天感觉也还好。不过4天后接到电话
reject。
想想应该还是自己基础不扎实,这次题都比较简单,面试官可能觉得应该在更短的时间
内完成的。
哎,继续努力吧,求内推啊!
avatar
x*1
2
没事,被烙印黑了而已。不要沮丧
avatar
x*m
3
这个不算黑吧,基本正常的题目
avatar
w*s
4
不要老想着hashmap啊,这个开销很大的。
比如string求奇数的问题,可以开一个int[26]数组,
string="ababcdgeef"
那么当扫到a的时候,array[0]=array[0]^1 = 1;
当扫到b的时候,array[1]=array[1]^1 = 1;
第三个a的时候,array[0]=array[0]^1 = 0;
扫完后,遍历数组,print if array[k] = 1;
只用了一次循环,只用异或运算

【在 b********t 的大作中提到】
: 第一轮:
: 印度小哥,先讲project。
: 实现一个二叉树的类,包含parent节点。
: 给一个二叉树的任意节点,返回inorder遍历的下一个节点。
: 刚开始写了返回右子树最左边的节点,后来经提醒补充了没有子树要从parent里找的情
: 况。中间穿插问了一些java和数据结构的小问题,不难。
: 第二轮:
: 白人,kindle组搞测试的,先是自我介绍。
: 然后写题:给一个string,返回出现频率最高的字符。
: 先给他讨论思路,问他这些char在不在ASCII范围内,他说good question,不一定。

avatar
w*s
5
奇数的话要想到异或,
偶数个char异或后是0,奇数个是1
因为有不同的char,所以开一个"数组"空间,其实每个元素只需要1bit就够了。最小的
开销只有26bit,连一个int都不到。
你用hashmap,比这个要浪费很多空间,而且计算也复杂很多。
avatar
b*t
6
不好意思,要纠正一个小错误,第三轮第一题是给的一个integer array,不是string。
不过你这个方法很好。

【在 w********s 的大作中提到】
: 奇数的话要想到异或,
: 偶数个char异或后是0,奇数个是1
: 因为有不同的char,所以开一个"数组"空间,其实每个元素只需要1bit就够了。最小的
: 开销只有26bit,连一个int都不到。
: 你用hashmap,比这个要浪费很多空间,而且计算也复杂很多。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。