Redian新闻
>
郁闷死了,顺便贴个Amazon电面面经
avatar
郁闷死了,顺便贴个Amazon电面面经# JobHunting - 待字闺中
V*e
1
星期四寄是星期五到还是星期六到?包子感谢正确答案
avatar
S*5
2
上周二Amazon一面,面试官是个印度人,问了点基础然后问了两题,后来过了。
题目是:
Best Time to Buy and Sell Stock
Best Time to Buy and Sell Stock II
上周五Amazon的二面,面试官终于碰到中国人了,本来还挺高兴的,结果面试中他一直
冷笑很不屑的样子,后来出的LC的简单题,题做完后他说不是他要的解法,让再写两种
不同的解法,没写出来,后来45分钟就做了一题。今天HR通知挂了。好郁闷,面试运好
差,对于底子不好的new grad是不是不可能找到工作了。
题目是:Plus one
这是我写的,请大家指点下哪里可以提高的,另外还有什么写法。
public int[] plusOne(int[] digits) {
if(digits==null || digits.length==0) return digits;
for(int i=digits.length-1;i>=0;i--){
if(digits[i]<9){
digits[i]+=1;
return digits;
}
else{
digits[i]=0;
}
}
int[] newDigits=new int[digits.length+1];
newDigits[0]=1;
return newDigits;
}
自己总结了一下,刷题的时候没有考虑过各种解法,一直就写自己理解的解法,没有深
入思考解法。除了看概念和刷题其他不知道还应该做什么。另外觉得自己面试运有点差
,我想我以后再也不会投Amazon了,和这个中国男生的面试过程中感觉压力好大,说什
么他都是很不屑的样子轻哼一声,最后时间到了就直接挂了,连问问题的机会也没有。
avatar
f*y
3
FEDEX GROUND没有1 DAY
avatar
m*i
4
newDigits 没有复制原来的值。这个是硬伤。面试官如果要其他方法,你该问是不是性
能更高,空间用的少?不然任何公司是make things done不要浪费时间写回字的四个写
法。
avatar
V*e
5
我是指距离近可以1天到的

【在 f******y 的大作中提到】
: FEDEX GROUND没有1 DAY
avatar
a*g
6
马鬃二面也是电面?不是应该直接onsite了吗?

【在 S**********5 的大作中提到】
: 上周二Amazon一面,面试官是个印度人,问了点基础然后问了两题,后来过了。
: 题目是:
: Best Time to Buy and Sell Stock
: Best Time to Buy and Sell Stock II
: 上周五Amazon的二面,面试官终于碰到中国人了,本来还挺高兴的,结果面试中他一直
: 冷笑很不屑的样子,后来出的LC的简单题,题做完后他说不是他要的解法,让再写两种
: 不同的解法,没写出来,后来45分钟就做了一题。今天HR通知挂了。好郁闷,面试运好
: 差,对于底子不好的new grad是不是不可能找到工作了。
: 题目是:Plus one
: 这是我写的,请大家指点下哪里可以提高的,另外还有什么写法。

avatar
f*y
7
if close enough, there is same day delivery :D
other than that, 1 day refers to express as I understand. 可选周六delivery.
周四寄,就是周六到了。不选周六就是周一了。
overnight才是周五到

【在 V**e 的大作中提到】
: 我是指距离近可以1天到的
avatar
b*n
8
感觉MM运气有点背。。
虽然没copy原来的array但是我觉得写的挺好的。
继续努力也别把亚麻一棒子打死啊,只是没碰到好的面试官。
avatar
b*n
9
Monday

【在 V**e 的大作中提到】
: 星期四寄是星期五到还是星期六到?包子感谢正确答案
avatar
S*5
10
我也不知道啊,一开始跟HR联系的时候就说2轮电面+onsite。

【在 a******g 的大作中提到】
: 马鬃二面也是电面?不是应该直接onsite了吗?
avatar
c*1
11
ship before thursday pickup
deliver friday
baozi:)
avatar
d*e
12
好像一般也是两轮.
以前我们组是如果第二轮说no hire,那么经理就是看看要不要来第三轮电面或者直接
onsite又或者拒了算.不太清楚是不是普遍这样做.很久没面试过了.

【在 S**********5 的大作中提到】
: 我也不知道啊,一开始跟HR联系的时候就说2轮电面+onsite。
avatar
y*i
13
看了几楼才看到正解.

【在 c*******1 的大作中提到】
: ship before thursday pickup
: deliver friday
: baozi:)

avatar
S*5
14
我问了有什么要求,他说那是我该思考的问题,我就没敢再问下去。

【在 m****i 的大作中提到】
: newDigits 没有复制原来的值。这个是硬伤。面试官如果要其他方法,你该问是不是性
: 能更高,空间用的少?不然任何公司是make things done不要浪费时间写回字的四个写
: 法。

avatar
A*e
15
这个不行吧。属于致命的bug。

【在 b*****n 的大作中提到】
: 感觉MM运气有点背。。
: 虽然没copy原来的array但是我觉得写的挺好的。
: 继续努力也别把亚麻一棒子打死啊,只是没碰到好的面试官。

avatar
p*g
16
lz 写的一点也没问题。
原因就是面试官和楼上几位水平一样,
不知道java 数组有默认值这么一说。
所以太精通也不是好事, 呵呵。
就算你是对的, 大家不认为你对, 你也没办法。
avatar
p*g
17
要不把你代码发HR, 投诉一下那个2B得了。
这个题根本也没啥更好的解法, 那人就是看不懂你写的而已。
avatar
y*e
18
lz的写法没问题吧,放到lc里一遍过了,也许有更好的办法,但这个version应该是可
以work的啊。
lz不用因为一共面试官否定一个公司,那就是和自己过不去了,亚麻的中国人挺不错的
,只是你碰巧遇到了一个爱装大尾巴狼的,整理一下心情,换个邮箱继续投~~
avatar
S*5
19
发给HR有用吗?已经拒了,而且我也不想去Amazon了,面完我一直没缓过来,面的时候
好想哭。
avatar
S*5
20
谢谢安慰!!好受打击,当时就觉得他根本看不起我,又不能说什么,想讨论也不敢多
问。很少碰到国人面试官,结果这个结果,以后宁愿碰到烙印算了,至少人家表面还客
气点,不会让人这么难受。

【在 y*****e 的大作中提到】
: lz的写法没问题吧,放到lc里一遍过了,也许有更好的办法,但这个version应该是可
: 以work的啊。
: lz不用因为一共面试官否定一个公司,那就是和自己过不去了,亚麻的中国人挺不错的
: ,只是你碰巧遇到了一个爱装大尾巴狼的,整理一下心情,换个邮箱继续投~~

avatar
p*g
21
管他有用没用, 2B黑你, 你就黑他。
那题没啥好优化的,就是这么个死题。
要不再版上,把面你的揪出来,
让他写个好的给大家看看,写不出来就tjjtds
avatar
l*z
22
别伤心,亚麻就算去了一年后也会折腾跳槽的

【在 S**********5 的大作中提到】
: 谢谢安慰!!好受打击,当时就觉得他根本看不起我,又不能说什么,想讨论也不敢多
: 问。很少碰到国人面试官,结果这个结果,以后宁愿碰到烙印算了,至少人家表面还客
: 气点,不会让人这么难受。

avatar
A*e
23
有问题啊。输入被改,语义不一致。
int[] digits = {9, 8}; => {9, 9}
int[] digits = {9, 9}; => {0, 0}

【在 y*****e 的大作中提到】
: lz的写法没问题吧,放到lc里一遍过了,也许有更好的办法,但这个version应该是可
: 以work的啊。
: lz不用因为一共面试官否定一个公司,那就是和自己过不去了,亚麻的中国人挺不错的
: ,只是你碰巧遇到了一个爱装大尾巴狼的,整理一下心情,换个邮箱继续投~~

avatar
A*e
24
什么默认值。改输入是大忌,而且还改的不一致。

【在 p*********g 的大作中提到】
: lz 写的一点也没问题。
: 原因就是面试官和楼上几位水平一样,
: 不知道java 数组有默认值这么一说。
: 所以太精通也不是好事, 呵呵。
: 就算你是对的, 大家不认为你对, 你也没办法。

avatar
S*5
25
写了:
int[] newDigits=new int[digits.length+1];
newDigits[0]=1;
返回:
int[] digits = {9, 9}; => {1,0, 0}

【在 A*******e 的大作中提到】
: 有问题啊。输入被改,语义不一致。
: int[] digits = {9, 8}; => {9, 9}
: int[] digits = {9, 9}; => {0, 0}

avatar
p*g
26
啥叫in space,
你这么说 快速排序算法 不是犯了大忌吗?

【在 A*******e 的大作中提到】
: 什么默认值。改输入是大忌,而且还改的不一致。
avatar
A*e
27
快速排序算法,结果就在输入里。in-place指的是不用额外空间,当然只能在输入里。
这个加一函数,要么结果在输入里,要么在输出里,输入不变。不能有时在输入,有时
在输出。语义上混乱。

【在 p*********g 的大作中提到】
: 啥叫in space,
: 你这么说 快速排序算法 不是犯了大忌吗?

avatar
p*g
28
你这是自己定的规矩,
其实压根没这么一说。
你能找出代码规范来, 说不能这么写吗?
写C的时候,这么写的多的去了。
当前内存够用,就用现成的,不够用就另外分配新的。

【在 A*******e 的大作中提到】
: 快速排序算法,结果就在输入里。in-place指的是不用额外空间,当然只能在输入里。
: 这个加一函数,要么结果在输入里,要么在输出里,输入不变。不能有时在输入,有时
: 在输出。语义上混乱。

avatar
p*t
29
没觉得有什么问题,翻了下leecode我跟你解法一样~
题目又没说不让改输入~
avatar
A*e
30
一致性是最基本的代码规范。这种写法根本通不过code review。任何充分审核过的开
源软件都不会这么写。
C也不会这么写。指针指向新空间时,旧空间就回收了。

【在 p*********g 的大作中提到】
: 你这是自己定的规矩,
: 其实压根没这么一说。
: 你能找出代码规范来, 说不能这么写吗?
: 写C的时候,这么写的多的去了。
: 当前内存够用,就用现成的,不够用就另外分配新的。

avatar
A*e
31
所以说刷题会误导人。能通过的代码未必是好代码。

【在 p**********t 的大作中提到】
: 没觉得有什么问题,翻了下leecode我跟你解法一样~
: 题目又没说不让改输入~

avatar
S*5
32
我不知道其他的写法,那这题应该怎么写?能不能麻烦你贴个code?非常感谢!

【在 A*******e 的大作中提到】
: 一致性是最基本的代码规范。这种写法根本通不过code review。任何充分审核过的开
: 源软件都不会这么写。
: C也不会这么写。指针指向新空间时,旧空间就回收了。

avatar
p*g
33
可不可以改输入,完全是需求定义的。
你说是一致性要求, 那你把你们公司一致性要求贴出来,或者把哪个开源项目的一致
性要求贴出来。

【在 A*******e 的大作中提到】
: 一致性是最基本的代码规范。这种写法根本通不过code review。任何充分审核过的开
: 源软件都不会这么写。
: C也不会这么写。指针指向新空间时,旧空间就回收了。

avatar
p*t
34
他的意思是需要一个新的数组存储结果,不能修改原数组
可是我觉得leetcode题目说的是“plus one to the number”,本来就是储存在原结果
上啊,运行两次,本来结果就应该是+2
除非题目本身就是有歧义

【在 S**********5 的大作中提到】
: 我不知道其他的写法,那这题应该怎么写?能不能麻烦你贴个code?非常感谢!
avatar
A*e
35
你首先要想清楚函数的语义是什么。
1. 返回加一后的数组,结果同时也保存在输入参数中;
2. 或者返回加一后的数组,但输入参数不受影响。
两个我认为都可以,但你要说清楚实现的是哪个。
你现在实现的函数是:
返回加一后的数组,但输入参数里的内容不确定是什么。
那么问题来了:如果之后的代码又用到这个输入参数,怎么办?做个实验就清楚了。
digits = {9,8}和{9,9},输出结果一个是9,9,一个是0,0。
Solution sol = new Solution();
int[] digits = {9, 8};
int[] result = sol.plusOne(digits);
for (int i : digits) {
System.out.print(i);
}
System.out.println();
for (int i : result) {
System.out.print(i);
}
System.out.println();
你当然也可以争论说你实现的语义是输入参数保留除进位之外的结果,但这种语义太古
怪了。

【在 S**********5 的大作中提到】
: 我不知道其他的写法,那这题应该怎么写?能不能麻烦你贴个code?非常感谢!
avatar
A*e
36
你当然可以改输入,但你改的结果要一致。这个实现里,改的结果语义是什么?自己想。
函数接口相当于一个合同。条款随你定,好坏可以商榷,但不能模糊,要前后一致。

【在 p*********g 的大作中提到】
: 可不可以改输入,完全是需求定义的。
: 你说是一致性要求, 那你把你们公司一致性要求贴出来,或者把哪个开源项目的一致
: 性要求贴出来。

avatar
A*e
37
你可以改,但请改全。99的时候,输入被改成00了,应该是100。
我上面贴的代码很明显了。之后再引用输入时,无法预知结果是什么。

【在 p**********t 的大作中提到】
: 他的意思是需要一个新的数组存储结果,不能修改原数组
: 可是我觉得leetcode题目说的是“plus one to the number”,本来就是储存在原结果
: 上啊,运行两次,本来结果就应该是+2
: 除非题目本身就是有歧义

avatar
S*5
38
可是面试官当时没说有其他要求,没提过一致性,什么提示也没给,就让我自己想。
估计还是面试运不好吧,反正越到后面就越感觉要熬过这45分钟,他根本没兴趣面我,
从一开始就很鄙视的样子。
谢谢大家的讨论,我现在明白面试官的有疑虑的地方了。

【在 p**********t 的大作中提到】
: 他的意思是需要一个新的数组存储结果,不能修改原数组
: 可是我觉得leetcode题目说的是“plus one to the number”,本来就是储存在原结果
: 上啊,运行两次,本来结果就应该是+2
: 除非题目本身就是有歧义

avatar
z*o
39
蛮高深的,
要我就一个循环 for loop + carrier 完成。
:)
avatar
S*5
40
当时他没说有什么要求,我没考虑那么多。。。
但是{9,9}是返回{1,0,0}啊

【在 A*******e 的大作中提到】
: 你首先要想清楚函数的语义是什么。
: 1. 返回加一后的数组,结果同时也保存在输入参数中;
: 2. 或者返回加一后的数组,但输入参数不受影响。
: 两个我认为都可以,但你要说清楚实现的是哪个。
: 你现在实现的函数是:
: 返回加一后的数组,但输入参数里的内容不确定是什么。
: 那么问题来了:如果之后的代码又用到这个输入参数,怎么办?做个实验就清楚了。
: digits = {9,8}和{9,9},输出结果一个是9,9,一个是0,0。
: Solution sol = new Solution();
: int[] digits = {9, 8};

avatar
A*e
41
这个我认为对新人提示一下比较好,但不提示也不算错,只要他对每个候选人都一样。
建议你不要只刷题看通过率。找小伙伴互相做code review,效果会好很多。

【在 S**********5 的大作中提到】
: 可是面试官当时没说有其他要求,没提过一致性,什么提示也没给,就让我自己想。
: 估计还是面试运不好吧,反正越到后面就越感觉要熬过这45分钟,他根本没兴趣面我,
: 从一开始就很鄙视的样子。
: 谢谢大家的讨论,我现在明白面试官的有疑虑的地方了。

avatar
z*o
42
当然可以修改输入参数, 不让改你用 const 限制起来, 否则方法接口设计有问题。
不过这写法容易泄露内存啊,要释放掉很不直观。
avatar
A*e
43
但你的输入变成{0, 0}了呀。
输入{9, 8}时,你的输入和返回是一样的,都是加一的结果。
输入{9, 9}时,你的输入和返回不一样,一个{0, 0},一个{1, 0, 0}。
假设在代码里,我传入一个参数,调用你的函数,之后这个参数就废掉了,因为我不知
道调用后参数里放的是什么。

【在 S**********5 的大作中提到】
: 当时他没说有什么要求,我没考虑那么多。。。
: 但是{9,9}是返回{1,0,0}啊

avatar
A*e
44
就是接口设计问题,语义不确定。



【在 z*******o 的大作中提到】
: 当然可以修改输入参数, 不让改你用 const 限制起来, 否则方法接口设计有问题。
: 不过这写法容易泄露内存啊,要释放掉很不直观。

avatar
A*e
45
这里讨论的不是算法本身问题,而是接口语义。

【在 z*******o 的大作中提到】
: 蛮高深的,
: 要我就一个循环 for loop + carrier 完成。
: :)

avatar
S*5
46
原来是这样啊,我不太懂,我等会去网上搜搜。非常感谢!

【在 A*******e 的大作中提到】
: 但你的输入变成{0, 0}了呀。
: 输入{9, 8}时,你的输入和返回是一样的,都是加一的结果。
: 输入{9, 9}时,你的输入和返回不一样,一个{0, 0},一个{1, 0, 0}。
: 假设在代码里,我传入一个参数,调用你的函数,之后这个参数就废掉了,因为我不知
: 道调用后参数里放的是什么。

avatar
p*g
47
我保证面试官不是因为你说的这个,
就是没看懂lz的代码。

【在 A*******e 的大作中提到】
: 你首先要想清楚函数的语义是什么。
: 1. 返回加一后的数组,结果同时也保存在输入参数中;
: 2. 或者返回加一后的数组,但输入参数不受影响。
: 两个我认为都可以,但你要说清楚实现的是哪个。
: 你现在实现的函数是:
: 返回加一后的数组,但输入参数里的内容不确定是什么。
: 那么问题来了:如果之后的代码又用到这个输入参数,怎么办?做个实验就清楚了。
: digits = {9,8}和{9,9},输出结果一个是9,9,一个是0,0。
: Solution sol = new Solution();
: int[] digits = {9, 8};

avatar
y*e
48
说实在我不觉得你说的这个问题是面试官不满的地方。面试官要求再写两种不同的写法
,应该是指的方法和思路的不同,而不是coding style的问题。
而且我觉得你先入为主了,因为lz没说出面试官期待的答案,她的代码一定有问题,或
者没到公司聘用的标准,LZ这个写法很普遍,好几个博客都是这么写的,面试肯定还是
首先解决问题,其实才是写出比较好maintain的production level code。

【在 A*******e 的大作中提到】
: 你可以改,但请改全。99的时候,输入被改成00了,应该是100。
: 我上面贴的代码很明显了。之后再引用输入时,无法预知结果是什么。

avatar
p*g
49
Leetcode 里把参数废掉的多了去了。
而且还是鼓励这么做的。

【在 A*******e 的大作中提到】
: 但你的输入变成{0, 0}了呀。
: 输入{9, 8}时,你的输入和返回是一样的,都是加一的结果。
: 输入{9, 9}时,你的输入和返回不一样,一个{0, 0},一个{1, 0, 0}。
: 假设在代码里,我传入一个参数,调用你的函数,之后这个参数就废掉了,因为我不知
: 道调用后参数里放的是什么。

avatar
A*e
50
做点大项目,花时间修几个莫名其妙的bug,你就对这种问题印象深刻了。你这个写法
挺危险的。
写函数时问问自己,输入是什么,输出是什么。你这个写法,那个参数又是输入,又是
输出。

【在 S**********5 的大作中提到】
: 原来是这样啊,我不太懂,我等会去网上搜搜。非常感谢!
avatar
A*e
51
好几个博客这么写,未必就对。我不知道那个面试官想什么。我只是想说,这个实现有
很明显的bug。这函数我没法调用。

【在 y*****e 的大作中提到】
: 说实在我不觉得你说的这个问题是面试官不满的地方。面试官要求再写两种不同的写法
: ,应该是指的方法和思路的不同,而不是coding style的问题。
: 而且我觉得你先入为主了,因为lz没说出面试官期待的答案,她的代码一定有问题,或
: 者没到公司聘用的标准,LZ这个写法很普遍,好几个博客都是这么写的,面试肯定还是
: 首先解决问题,其实才是写出比较好maintain的production level code。

avatar
j*3
52
这个题楼主写的有啥问题?我咋没看出来。。

【在 S**********5 的大作中提到】
: 上周二Amazon一面,面试官是个印度人,问了点基础然后问了两题,后来过了。
: 题目是:
: Best Time to Buy and Sell Stock
: Best Time to Buy and Sell Stock II
: 上周五Amazon的二面,面试官终于碰到中国人了,本来还挺高兴的,结果面试中他一直
: 冷笑很不屑的样子,后来出的LC的简单题,题做完后他说不是他要的解法,让再写两种
: 不同的解法,没写出来,后来45分钟就做了一题。今天HR通知挂了。好郁闷,面试运好
: 差,对于底子不好的new grad是不是不可能找到工作了。
: 题目是:Plus one
: 这是我写的,请大家指点下哪里可以提高的,另外还有什么写法。

avatar
A*e
53
你还是得不到它。你可以改参数,但请改完整。写函数是用来调用的。

【在 p*********g 的大作中提到】
: Leetcode 里把参数废掉的多了去了。
: 而且还是鼓励这么做的。

avatar
p*g
54
这么调用呀。
for (int i=0; idigits = plusOne(digits);
}
int[] result = plusOne(plusOne(digits));
这是加 2

【在 A*******e 的大作中提到】
: 好几个博客这么写,未必就对。我不知道那个面试官想什么。我只是想说,这个实现有
: 很明显的bug。这函数我没法调用。

avatar
A*e
55
公开接口要保证用任何方式调用,结果都是对的。你这里相当于把digits用新结果刷了
一遍,当然没有问题。但bug仍然存在。

【在 p*********g 的大作中提到】
: 这么调用呀。
: for (int i=0; i: digits = plusOne(digits);
: }
: int[] result = plusOne(plusOne(digits));
: 这是加 2

avatar
p*g
56
咋说呢, 這就是自以为懂, 其实是鸡毛当令箭。
面试的时候啥时说是公开接口呢?
怎么不说是web service 呢?
要是公开接口, 那遇到加一以后超出最大数组长度咋办?
你重新分配一个数组,超出java 启动时分配的最大内存咋办?
如果公开接口,多线程同时调用,能保证一致性吗?
除非需求文档说明了这个函数的使用环境,不然怎么扩大要求也无所谓了。
其实面试考这个,不就是做个小游戏吗,瞎上纲上线没意义。
真想考代码规范,直接问就好了。

【在 A*******e 的大作中提到】
: 公开接口要保证用任何方式调用,结果都是对的。你这里相当于把digits用新结果刷了
: 一遍,当然没有问题。但bug仍然存在。

avatar
A*e
57
这是最基本的接口语义问题,写函数的人应该想清楚,说清楚。做不到这一点的结果就
是留下明显的bug。你说那些才是吹毛求疵。
重要的是楼主能听进去多少。你想怎么写,随便。

【在 p*********g 的大作中提到】
: 咋说呢, 這就是自以为懂, 其实是鸡毛当令箭。
: 面试的时候啥时说是公开接口呢?
: 怎么不说是web service 呢?
: 要是公开接口, 那遇到加一以后超出最大数组长度咋办?
: 你重新分配一个数组,超出java 启动时分配的最大内存咋办?
: 如果公开接口,多线程同时调用,能保证一致性吗?
: 除非需求文档说明了这个函数的使用环境,不然怎么扩大要求也无所谓了。
: 其实面试考这个,不就是做个小游戏吗,瞎上纲上线没意义。
: 真想考代码规范,直接问就好了。

avatar
S*5
58
谢谢大家的帮助,通过大家的讨论学习了很多,感觉还是有很多不懂的地方,你们的讨
论有的我还是不太懂,我会自己去网上搜的,继续提高。
avatar
t*t
59
同意你这个.
有经验的和没经验的基本上代码上还是能看出区别, 有经验的在保证正确计算的同时,
会考虑一些别的问题.
当然就这件事本身来说, 你可以觉得面试官吹毛求疵或者对新人不nice(其实哪个面试
官黑你还不知道呢). 但是从这里面能学到什么, 就是见仁见智的事情. 非要说楼主的
代码一点错都没有(based on the assumption of destroyed parameter), 逻辑上可以
, 但是又有什么好处呢?

【在 A*******e 的大作中提到】
: 这是最基本的接口语义问题,写函数的人应该想清楚,说清楚。做不到这一点的结果就
: 是留下明显的bug。你说那些才是吹毛求疵。
: 重要的是楼主能听进去多少。你想怎么写,随便。

avatar
b*n
60
问题是不是所有面试官都把这个当小游戏。。
即使是小游戏,规则也不是你定的
所以多了解一下有工作经验的人平时写代码什么习惯不是坏事
虽然我也认为如果因为这个挂了可能要求也太严格了一点

【在 p*********g 的大作中提到】
: 咋说呢, 這就是自以为懂, 其实是鸡毛当令箭。
: 面试的时候啥时说是公开接口呢?
: 怎么不说是web service 呢?
: 要是公开接口, 那遇到加一以后超出最大数组长度咋办?
: 你重新分配一个数组,超出java 启动时分配的最大内存咋办?
: 如果公开接口,多线程同时调用,能保证一致性吗?
: 除非需求文档说明了这个函数的使用环境,不然怎么扩大要求也无所谓了。
: 其实面试考这个,不就是做个小游戏吗,瞎上纲上线没意义。
: 真想考代码规范,直接问就好了。

avatar
b*n
61
大牛你真是耐心。。


【在 A*******e 的大作中提到】
: 这是最基本的接口语义问题,写函数的人应该想清楚,说清楚。做不到这一点的结果就
: 是留下明显的bug。你说那些才是吹毛求疵。
: 重要的是楼主能听进去多少。你想怎么写,随便。

avatar
b*n
62
赞,MM加油,继续努力offer不远了

【在 S**********5 的大作中提到】
: 谢谢大家的帮助,通过大家的讨论学习了很多,感觉还是有很多不懂的地方,你们的讨
: 论有的我还是不太懂,我会自己去网上搜的,继续提高。

avatar
S*5
63
思前想后我决定投诉这个面试官,万一下次哪个MM也碰到他估计也要看他脸色,那45分
钟太难熬了,他的态度实在太让人受不了了,现在想起来我都觉得难以接受,找工作跟
要饭一样没有尊严,之前面试碰到的烙印态度也没这样的。
avatar
a*g
64
这有啥好投诉的?你面试太少了,这种情况太常见了。千万别纠结于任何一次面试,
Move on吧。

【在 S**********5 的大作中提到】
: 思前想后我决定投诉这个面试官,万一下次哪个MM也碰到他估计也要看他脸色,那45分
: 钟太难熬了,他的态度实在太让人受不了了,现在想起来我都觉得难以接受,找工作跟
: 要饭一样没有尊严,之前面试碰到的烙印态度也没这样的。

avatar
s*e
65
支持楼主投诉,大家都集中在讨论题目上,在我看来对一个新人在那么短的面试过程中
这个表现太mean了,如果觉得有不对的地方面试官为什么不直接指出?而让对方一直猜
直到把面试时间都耗完为止。国人面试官中喜欢刁难人的也有,这个就是个例子。
我也感觉是面试官水平太差没看懂她写的代码,不是上面各位讨论的这个问题,当然上
面提出的问题需要楼主学习,但是面试中深的一层恐怕这个面试官没这个水平考虑到这
层。
另外面试官的态度绝对有问题,仗着自己是面试官居高临下的态度绝对不可取!楼上几
位资深大牛看到楼主有需要学习的地方就帮忙分析,都是本着帮新人的态度。而这个面
试官除了刁难我没看到有任何帮助新人的地方,而且非常刁难,这种态度就应该投诉。
avatar
a*u
66
有道理,谢谢

【在 A*******e 的大作中提到】
: 你首先要想清楚函数的语义是什么。
: 1. 返回加一后的数组,结果同时也保存在输入参数中;
: 2. 或者返回加一后的数组,但输入参数不受影响。
: 两个我认为都可以,但你要说清楚实现的是哪个。
: 你现在实现的函数是:
: 返回加一后的数组,但输入参数里的内容不确定是什么。
: 那么问题来了:如果之后的代码又用到这个输入参数,怎么办?做个实验就清楚了。
: digits = {9,8}和{9,9},输出结果一个是9,9,一个是0,0。
: Solution sol = new Solution();
: int[] digits = {9, 8};

avatar
z*o
67
cool decision.
没有约定情况下,输入变量存储中间结果本身并没什么问题.

【在 S**********5 的大作中提到】
: 思前想后我决定投诉这个面试官,万一下次哪个MM也碰到他估计也要看他脸色,那45分
: 钟太难熬了,他的态度实在太让人受不了了,现在想起来我都觉得难以接受,找工作跟
: 要饭一样没有尊严,之前面试碰到的烙印态度也没这样的。

avatar
w*1
68
LZ运气还不错了,我马鬃二面是烙印,一个spiral matrix,再加一个设计题,说话口
音本来就很难理解了,还都是这种巨花时间的题,一面的东欧小哥倒还是很不错的
我也是new grad,第一个还差不多时间做完了,第二个设计题思路倒是对了,但根本写
不完,要写两个function,最后也是挂了。一有点bug烙印就说,I dont't think that
work...
不过本来也只是用他家来看一看面试是什么情况的,第一个面的就是他家,裸面。。。。
就算去了他家,估计一年后也要跳,他家待遇好像比其他要差蛮多,而且我问了一下烙
印工作环境的情况,说一层楼几百个cube。。。同事之间是打电话交流的。。。听了我
都不想去

【在 S**********5 的大作中提到】
: 上周二Amazon一面,面试官是个印度人,问了点基础然后问了两题,后来过了。
: 题目是:
: Best Time to Buy and Sell Stock
: Best Time to Buy and Sell Stock II
: 上周五Amazon的二面,面试官终于碰到中国人了,本来还挺高兴的,结果面试中他一直
: 冷笑很不屑的样子,后来出的LC的简单题,题做完后他说不是他要的解法,让再写两种
: 不同的解法,没写出来,后来45分钟就做了一题。今天HR通知挂了。好郁闷,面试运好
: 差,对于底子不好的new grad是不是不可能找到工作了。
: 题目是:Plus one
: 这是我写的,请大家指点下哪里可以提高的,另外还有什么写法。

avatar
t*5
69
很有可能是面试官没看懂,认为你这个不work。
我也看了很久(我本身很水而且很久没写java),因为你最后新建一个数组利用默认值
然后把[0]加一的做法我之前没想到过,所以我看了很久才明白,一开始我也以为你写的
是错的。作为面试官我认为正常情况下如果我看完这段代码没懂我会让candidate解释
清楚一下,弄清楚了之后肯定会让过,没有理由不给过。当然如果面试官没看懂的话(
很有可能)就很容易挂掉你……
另一个方面,你这个做法确实有问题,你不应该更改输入数组,如果你要更改的话更改
后的值应该是一个正确的数组而不是一个partial的数组,比如[9,9] -> [1,0,0]。但
是你的修改后的结果是[0,0],这个作为工作中的代码是非常危险的,而且极难debug。
按照你的代码,现在你修改了原数组,然后还建立了一个新的数组,这个作为
production的代码后面的人读起来容易confuse,好的代码最好是straightforward and
self-explained。这题我建议你要么修改原数组返回[1,0,0]这种,或者遍历原数组然
后把算过的值放到新数组里面。
当然上面的这一段都是基于写好的代码提出的建议。
回到面试的问题上,如果楼主是new grad,我觉得作为面试官我一定会给过,代码规范
这种东西如果是工作了很多年的还写这种代码肯定是不行的,但是楼主作为new grad我
应该作为这个点被挂掉。
再回到面试的问题上,当时面试官让你用别的方法写的时候,你应该先解释为何你的代
码是正确的,然后如果面试官坚持,就问面试官想要什么样的代码(当然你要自己提出
可行的解决方案,比如in-place & return same array 或者create & return new
array)。不知道楼主后来是怎么处理面试官的质疑的,所以我也不好说。
建议:给recruiter发邮件,说写的是对的,不知道为什么不给过,告诉recruiter如果
feedback是因为代码不work,让他们重新evaluate。
avatar
S*5
70
谢谢你详细的解释,我以后面试的时候会注意。
关于面试官交流的部分,我试图和他交流,我也问了关于其他解法有什么要求,他什么
也没说就说是我该考虑的问题,之前问他什么也是很不屑不愿意交流的样子。
我会投诉他的态度,至于能不能再给面试机会也无所谓了。

【在 t********5 的大作中提到】
: 很有可能是面试官没看懂,认为你这个不work。
: 我也看了很久(我本身很水而且很久没写java),因为你最后新建一个数组利用默认值
: 然后把[0]加一的做法我之前没想到过,所以我看了很久才明白,一开始我也以为你写的
: 是错的。作为面试官我认为正常情况下如果我看完这段代码没懂我会让candidate解释
: 清楚一下,弄清楚了之后肯定会让过,没有理由不给过。当然如果面试官没看懂的话(
: 很有可能)就很容易挂掉你……
: 另一个方面,你这个做法确实有问题,你不应该更改输入数组,如果你要更改的话更改
: 后的值应该是一个正确的数组而不是一个partial的数组,比如[9,9] -> [1,0,0]。但
: 是你的修改后的结果是[0,0],这个作为工作中的代码是非常危险的,而且极难debug。
: 按照你的代码,现在你修改了原数组,然后还建立了一个新的数组,这个作为

avatar
S*5
71
对烙印都有心里准备了,烙印本来就对中国人不友好。本来觉得遇到国人运气挺好的
肯定不会像烙印那样,结果态度比烙印还恶劣,这个面试真煎熬。

that
。。

【在 w*****1 的大作中提到】
: LZ运气还不错了,我马鬃二面是烙印,一个spiral matrix,再加一个设计题,说话口
: 音本来就很难理解了,还都是这种巨花时间的题,一面的东欧小哥倒还是很不错的
: 我也是new grad,第一个还差不多时间做完了,第二个设计题思路倒是对了,但根本写
: 不完,要写两个function,最后也是挂了。一有点bug烙印就说,I dont't think that
: work...
: 不过本来也只是用他家来看一看面试是什么情况的,第一个面的就是他家,裸面。。。。
: 就算去了他家,估计一年后也要跳,他家待遇好像比其他要差蛮多,而且我问了一下烙
: 印工作环境的情况,说一层楼几百个cube。。。同事之间是打电话交流的。。。听了我
: 都不想去

avatar
g*y
72
我也看了很久才看明白, 如果我是面试官最大的可能是根本没看出来这个是对的,就算看
出来是对的,也会猜这是刷题的结果,因为正常人第一遍做肯定不会跳过数组拷贝这一步
. loop加上carry标记然后最后数组拷贝是正常情况下首先会想到的.

写的

【在 t********5 的大作中提到】
: 很有可能是面试官没看懂,认为你这个不work。
: 我也看了很久(我本身很水而且很久没写java),因为你最后新建一个数组利用默认值
: 然后把[0]加一的做法我之前没想到过,所以我看了很久才明白,一开始我也以为你写的
: 是错的。作为面试官我认为正常情况下如果我看完这段代码没懂我会让candidate解释
: 清楚一下,弄清楚了之后肯定会让过,没有理由不给过。当然如果面试官没看懂的话(
: 很有可能)就很容易挂掉你……
: 另一个方面,你这个做法确实有问题,你不应该更改输入数组,如果你要更改的话更改
: 后的值应该是一个正确的数组而不是一个partial的数组,比如[9,9] -> [1,0,0]。但
: 是你的修改后的结果是[0,0],这个作为工作中的代码是非常危险的,而且极难debug。
: 按照你的代码,现在你修改了原数组,然后还建立了一个新的数组,这个作为

avatar
l*o
73
面试官还会管你刷不刷题?
avatar
l*v
74
我也怀疑是面试官没看懂,你这个解法其实不太直观,有点费脑。
avatar
J*o
75
看了大牛的讨论获益匪浅啊, 以后面试还是先和面试官达成一致之后再写code, 不过
这种态度也没法讨论
avatar
x*1
76
直接爆名字。谁?
avatar
e*t
77
作为一个新手的她有明显硬伤,对“Rules”了解不够。她犯的错误是铁定被拒的。
如果不改进,就算进去了也会被PIP干掉。
我倒是建议她静下心来读读
Martin Flower 的
Refactoring: Improving the Design of Existing Code
和 Robert Martin 的
Agile Principles, Patterns, and Practices

【在 A*******e 的大作中提到】
: 这个不行吧。属于致命的bug。
avatar
m*g
78
不知道这个你是怎么得出的,我run了下楼主的code,{9,9}-〉{1,0,0}

【在 A*******e 的大作中提到】
: 有问题啊。输入被改,语义不一致。
: int[] digits = {9, 8}; => {9, 9}
: int[] digits = {9, 9}; => {0, 0}

avatar
i*h
79
这个简单题的考点就是进位,楼主的写法没有错,新建一个array,后面取默认值。关
键是面试官无法沟通,否则最后3行代码一解释就能理解。面试题和product code不同
,就像实际工作中很多都不建议甚至不允许用recursive call,但是面试中有的就要求
用recursion。
这题作为面试题尽量追求in place不是什么大问题,不用这么上纲上线的。
avatar
i*h
80
仔细看了一下,他的意思是一开始就新建array,然后copy过去。
他的点在于不建议 {9, 8}->{9, 9}做 in place,存在input里, 但是{9,9} ->{1,
0,0}的时候却新建array。他应该是这个意思。

【在 m******g 的大作中提到】
: 不知道这个你是怎么得出的,我run了下楼主的code,{9,9}-〉{1,0,0}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。