Redian新闻
>
昨天正式成为animal humane society的义工
avatar
昨天正式成为animal humane society的义工# pets - 心有所宠
A*0
1
上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
-functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
电话说依然被拒。。。
我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
avatar
j*q
2
市场依旧不稳,美股再度下挫
今日美国股市开盘下跌,但在利好非农就业数据推动下转为上涨。早盘,投资者对外围
欧洲债务恶化的担忧依然挥之不去,市场的抛压依旧强大,股指再度大幅下挫。午盘,
股指反复震荡。尾盘时,跌幅有所缩小。收盘时,道指和标普跌幅超过1%,纳斯达克指
数跌幅超2%。
非农就业人数增加290K,市场预期190K,上次162K。
制造业就业人数增加44K,市场预期20K,上次17K。
私人薪酬变动+231K,市场预期+100K。
4月失业率9.9%,市场预期9.7%,上次9.7%。
3月消费者信贷+20亿美元,预期为-37亿美元。
原材料类-0.15%,能源类-1.18%,金融类-0.87%,医疗保健类-1.66%,科技类-1.96%,
公用设施类-0.69%。
原油价格下跌2.00美元,收在75.11美元/桶。
今天道琼斯指数-140.72点,收在10,379.60点, 标准普尔-17.28点,收在1,110.87点
,纳斯达克指数-54.00点,收在2,265.64点。
强势板块:无
弱势板块:建筑材料类;房屋建筑类;建设和工程类;计算机软件类;无限服务类;消
费电子类;卡
avatar
q*6
3
nnd, 话说这个义工也不容易呢,先的付20块的报名费, 然后面试,被接受后还得培训
。。。
里面的小动物真的好乖啊(除了那个咬我儿子一口的那只大黑猫),尤其是狗狗,要么
一个个的大眼睛看着你, 要么趴在笼子门上求抚摸。。。好可怜啊。而且好些里面的
狗狗,猫咪都不是那么好看的,唉,碰上外貌协会的就可怜了。 悄悄说一句我家附近
的这家里面蛮臭的。。。
我会好好的献爱心的
avatar
l*a
4
bless
上你的code看看吧
另外google真的不需要什么人,招人都是装样子
你去申FL不好吗?

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
c*0
5
Zhi1 Chi2 !
avatar
s*x
6
大赞!到时候上点图片让我们欣赏一下他们吧
avatar
d*t
7
简历不行?面试走个过场。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
j*q
8
股市大跌跌的大家都没信心了。。。。
avatar
F*4
9
赞!明天也要去做volunteer了,第一次,好激动!

★ 发自iPhone App: ChineseWeb 7.8

【在 q***6 的大作中提到】
: nnd, 话说这个义工也不容易呢,先的付20块的报名费, 然后面试,被接受后还得培训
: 。。。
: 里面的小动物真的好乖啊(除了那个咬我儿子一口的那只大黑猫),尤其是狗狗,要么
: 一个个的大眼睛看着你, 要么趴在笼子门上求抚摸。。。好可怜啊。而且好些里面的
: 狗狗,猫咪都不是那么好看的,唉,碰上外貌协会的就可怜了。 悄悄说一句我家附近
: 的这家里面蛮臭的。。。
: 我会好好的献爱心的

avatar
F*t
10
觉得sf各大startup是这么干的。。。

【在 d********t 的大作中提到】
: 简历不行?面试走个过场。
:
: non
: HR

avatar
s*g
11
就是说说,下周要是涨个1000点信心1分钟就回来,那么容易没信心就没股市了。

【在 j******q 的大作中提到】
: 股市大跌跌的大家都没信心了。。。。
avatar
r*a
12
哇呀呀呀好赞!期待照片

【在 q***6 的大作中提到】
: nnd, 话说这个义工也不容易呢,先的付20块的报名费, 然后面试,被接受后还得培训
: 。。。
: 里面的小动物真的好乖啊(除了那个咬我儿子一口的那只大黑猫),尤其是狗狗,要么
: 一个个的大眼睛看着你, 要么趴在笼子门上求抚摸。。。好可怜啊。而且好些里面的
: 狗狗,猫咪都不是那么好看的,唉,碰上外貌协会的就可怜了。 悄悄说一句我家附近
: 的这家里面蛮臭的。。。
: 我会好好的献爱心的

avatar
A*0
13
上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
还有什么地方可以再改进的了。。。
职位是Kirkland的。
import java.util.*;
public static ArrayList RemoveDup(List list){
if(list == null)
return null;
ArrayList result = new ArrayList();
HashSet set = new HashSet();
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}

【在 l*****a 的大作中提到】
: bless
: 上你的code看看吧
: 另外google真的不需要什么人,招人都是装样子
: 你去申FL不好吗?
:
: non
: HR

avatar
j*q
14
aapl是只好股票LOL 这只股票我也喜欢
avatar
z*o
15
恭喜!
avatar
A*0
16
简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一
年了

【在 d********t 的大作中提到】
: 简历不行?面试走个过场。
:
: non
: HR

avatar
n*c
17
Good job!
avatar
z*e
18
恭喜恭喜!enjoy~
avatar
l*a
19
there are a few issues

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
o*d
20
all in的NBG被套了, re
avatar
P*B
21
赞有爱心!
每个狗都有一个故事吧?
avatar
A*0
22
请赐教,真的很想知道如何改正

【在 l*****a 的大作中提到】
: there are a few issues
avatar
s*m
23
怕啥
这个又不会外婆
跌也跌不了多少了

【在 o******d 的大作中提到】
: all in的NBG被套了, re
avatar
m*g
24
赞~
avatar
y*0
25
的确是有几个问题。

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
a*9
26
强贴留名
avatar
b*m
27
好吧,我上来检讨一下。本来公司有volunteer day,有很多志愿者小组,可以随便挑的
。结果我手稍微慢了一点,然后那个到shelter做志愿者的小组就满了。。。害得我只
能到别的组选择捡垃圾。下次有动物shelter的话,我一定第一个报名。
avatar
l*a
28
1) obviously u are confused about class and interface
when should u use List, when should u use ArrayList
when should u use Set and when should u use HashSet
2) if u r using set, you can return new ArrayList(set) directly
no need to use result
import java.util.*;
public static ArrayList RemoveDup(List list){
if(list == null)
return null;
ArrayList result = new ArrayList();
HashSet set = new HashSet();
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
a*9
29
再顶
avatar
h*e
30
还有更简的~~~方法。
avatar
a*9
31
三顶, 行乐, 兄弟回家吃饭饭了
avatar
l*a
32
for(int i=0;iString str = list.get(i);
this is ok,but maybe it is better to use
for(String str:list)

【在 l*****a 的大作中提到】
: 1) obviously u are confused about class and interface
: when should u use List, when should u use ArrayList
: when should u use Set and when should u use HashSet
: 2) if u r using set, you can return new ArrayList(set) directly
: no need to use result
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();

avatar
l*a
33
请赐教.

【在 h*******e 的大作中提到】
: 还有更简的~~~方法。
avatar
A*0
34
这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊

【在 l*****a 的大作中提到】
: 请赐教.
avatar
h*e
35
好吧。。。没有了,看错了以为类似 leetcode rmv duplicate 呢。如果全局
duplicate那就是hash要么 如果是adjacent duplicate 就是curI 1开始 size 结束,
curI-1 curI, newI三个指针就行吧。

【在 l*****a 的大作中提到】
: 请赐教.
avatar
P*r
36
俺昨天写了一个x^y
然后还讲了N个数取topK
杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光
avatar
l*4
37
ArrayList result = new ArrayList();
HashSet set = new HashSet();
这两个应该是:
List result = new ArrayList();
Set set = new HashSet();
这样比较好吧,用多态

【在 A****0 的大作中提到】
: 这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊
avatar
A*0
38
这个题最近也常见啊 logN

【在 P**********r 的大作中提到】
: 俺昨天写了一个x^y
: 然后还讲了N个数取topK
: 杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光

avatar
A*0
39
难道这就是G拒人的理由啊。。。

【在 l***4 的大作中提到】
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: 这两个应该是:
: List result = new ArrayList();
: Set set = new HashSet();
: 这样比较好吧,用多态

avatar
l*4
40
也可能根本不缺人。

【在 A****0 的大作中提到】
: 难道这就是G拒人的理由啊。。。
avatar
A*0
41
十分感谢!
可问题是,function的signature是面试官给的啊。。我只能如此写下去。
可能真的要用return new ArrayList(set);?

【在 l*****a 的大作中提到】
: 1) obviously u are confused about class and interface
: when should u use List, when should u use ArrayList
: when should u use Set and when should u use HashSet
: 2) if u r using set, you can return new ArrayList(set) directly
: no need to use result
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();

avatar
h*o
42
也可能你没说不用额外空间的做法??
avatar
a*u
43
SET并不是写Test case的,你举那么多例子很可能浪费时间了。
avatar
A*0
44
我讲了三种方法:
1) brute force,需要O(N^2)时间和O(1)空间
2) sorting然后remove dup,需要O(nlogn)时间和O(1)空间,但他后来说要保证list的
顺序与原list相同,所以这个方法不行
3) 额外空间,需要O(N)时间和O(N)时间
都说到了的

【在 h*********o 的大作中提到】
: 也可能你没说不用额外空间的做法??
avatar
p*e
45
看看人家讨论吧
http://stackoverflow.com/questions/14040331/remove-duplicate-st
就是
set.addall(string);
return list(set);
你的解法是contains call了两次

【在 A****0 的大作中提到】
: 十分感谢!
: 可问题是,function的signature是面试官给的啊。。我只能如此写下去。
: 可能真的要用return new ArrayList(set);?

avatar
A*0
46
是面试官让我写test case的,
面试官:请写一些test case
我:blackbox or whitebox?
面试官:blackbox
我:functional or non-functional
面试官:functional
然后就开始写,写了20个test case后他说好了,我们已经有足够的test case了,时间
也差不多了

【在 a******u 的大作中提到】
: SET并不是写Test case的,你举那么多例子很可能浪费时间了。
avatar
f*o
47
我也发现了现在 google 是这么个风格,用巨简单的题来考你。一样能在鸡蛋里挑着骨
头。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
A*0
48
这个真的是我的误区,感谢!
看来用LinkedHashSet可以maintain order

【在 p****e 的大作中提到】
: 看看人家讨论吧
: http://stackoverflow.com/questions/14040331/remove-duplicate-st
: 就是
: set.addall(string);
: return list(set);
: 你的解法是contains call了两次

avatar
m*n
49
The interviewer might be picky with a simple question like this.
Your code has a few style issues that make you look amateurish in
picky eyes: 8-)
You may want to re-read Effective Java and search for Java
coding style on the web.
import java.util.*; // Wildcard import not good.
public static ArrayList RemoveDup(List list){
// RemoveDup: method name should start with lower case char
// (List list): either change this to ArrayList or change
// the for-loop with list.get(i) to for-each. Your signature
// does not say list must be ArrayList, so someone can pass in
// a long linked list and break your code at list.get(i)

if(list == null)
return null; // Convention is to return empty container.
ArrayList result = new ArrayList(); // If no order-
preserving request, this list is not necessary.
HashSet set = new HashSet();
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
// body of loop can be changed to:
// if (set.add(str)) result.add(str);
}
return result;
}

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
A*0
50
万分感谢!
其实function Signature是他写的
有order preserving的要求

【在 m*****n 的大作中提到】
: The interviewer might be picky with a simple question like this.
: Your code has a few style issues that make you look amateurish in
: picky eyes: 8-)
: You may want to re-read Effective Java and search for Java
: coding style on the web.
: import java.util.*; // Wildcard import not good.
: public static ArrayList RemoveDup(List list){
: // RemoveDup: method name should start with lower case char
: // (List list): either change this to ArrayList or change
: // the for-loop with list.get(i) to for-each. Your signature

avatar
s*r
51
这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有,
现在都Java8 了好伐, 至少也得看看java 7的新的东东吧,
HashSet set = new HashSet(); // should be coded as
Set set = new HashSet<>();
还有其他的问题,大家也说了。一起加油吧!
avatar
n*n
52
ding
avatar
y*a
53
public static List RemoveDup(List list){
return new ArrayList(new LinkedHashSet(list));
}
avatar
y*n
54
这个和前几天那个清华的贴那个更不合理。。
avatar
y*n
55
微软也都写Java吗,楼主可能对Java的API没有那么熟。

【在 A****0 的大作中提到】
: 简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一
: 年了

avatar
m*v
56
one question is not enough man
avatar
l*c
57
这个是哪个帖子?
还没看到过。

【在 y***n 的大作中提到】
: 这个和前几天那个清华的贴那个更不合理。。
avatar
A*0
58
平时用的是C#,为了G拿Java苦练刷题

【在 y***n 的大作中提到】
: 微软也都写Java吗,楼主可能对Java的API没有那么熟。
avatar
y*n
59
是不是c++比较中性话一点。。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
A*0
60
不觉得,C++的memory leak太难办了,没GC不好用。

【在 y***n 的大作中提到】
: 是不是c++比较中性话一点。。
avatar
y*n
61
仅仅针对刷题。

【在 A****0 的大作中提到】
: 不觉得,C++的memory leak太难办了,没GC不好用。
avatar
A*0
62
那感觉还好,不用考虑那么多polymorphism。

【在 y***n 的大作中提到】
: 仅仅针对刷题。
avatar
A*i
63
这跟只会刷题没有任何关系。
这人就是nitpick,至于多态你真是想多了。
人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。



【在 s********r 的大作中提到】
: 这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有,
: 现在都Java8 了好伐, 至少也得看看java 7的新的东东吧,
: HashSet set = new HashSet(); // should be coded as
: Set set = new HashSet<>();
: 还有其他的问题,大家也说了。一起加油吧!

avatar
y*n
64
Re 这个,终于找到一个说出我不敢说出来的人了。。

【在 A*****i 的大作中提到】
: 这跟只会刷题没有任何关系。
: 这人就是nitpick,至于多态你真是想多了。
: 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
:
: ,

avatar
l*a
65
他说得没错阿
OO的原则就是programming to interface

【在 A*****i 的大作中提到】
: 这跟只会刷题没有任何关系。
: 这人就是nitpick,至于多态你真是想多了。
: 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
:
: ,

avatar
g*e
66
LZ那段代码真做CR会被挑一堆毛病,没通过电面不算冤

【在 l*****a 的大作中提到】
: 他说得没错阿
: OO的原则就是programming to interface

avatar
c*f
67
这code过不了CR
interface
for loop用index了
java 1.7用 <>了
avatar
c*f
68
我以前被CR,就被挑过这些毛病
avatar
A*0
69
的确,看来刷题练习时要用Checkstyle

【在 c******f 的大作中提到】
: 这code过不了CR
: interface
: for loop用index了
: java 1.7用 <>了

avatar
A*i
70
你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
的。
就第一句判断object是不是null的,我们production里从来不会那么做。
因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

【在 l*****a 的大作中提到】
: 他说得没错阿
: OO的原则就是programming to interface

avatar
y*0
71
你可能碰到了哪个兄弟的绿卡广告。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
A*0
72
感觉prod code里如果method是public的,也要做null check(因为你不知道谁会叫这
个method)
当然private的就不用了。

【在 A*****i 的大作中提到】
: 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
: 的。
: 就第一句判断object是不是null的,我们production里从来不会那么做。
: 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
: 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
: convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

avatar
D*g
73

I had the same question from Google yesterday interviewing for TPM position.
There is a problem using for loop instead of while. In my case, it clearly
asks for the List as the input parameter. Thus, the worst using for loop
will be n^2 instead of n. We had some good discussion, and with the hint
from the interviewer, it makes sense to use iterator. I finished the problem
in about 30 minutes and then move on the next level of this question, which
removes the duplicates if the element in the list occurs n times, n as the
second input in the function.

【在 y******0 的大作中提到】
: 的确是有几个问题。
avatar
h*a
74
既然是面SET悲剧,更可能是test case的问题吧

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
h*a
75
不要忽视这种小地方啊。这种多态的code如果没用最base的type在FLG这样的公司里是
肯定过不了code review的。
其实这种code现在都应该用Guava.不会Guava说不定会被Google认为是一个weakness.

【在 A*****i 的大作中提到】
: 这跟只会刷题没有任何关系。
: 这人就是nitpick,至于多态你真是想多了。
: 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
:
: ,

avatar
h*a
76
你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
数的有效性的。所以做参数的check是一个面试考察的基本点。
至于真正的production code,比较好的写法都是用Google library的Preconditions,
要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
熟练的。

【在 A*****i 的大作中提到】
: 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
: 的。
: 就第一句判断object是不是null的,我们production里从来不会那么做。
: 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
: 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
: convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

avatar
A*i
77
我只说我们的prod code,我们是写node的
G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了
考察convention不如出个改错题不是更直观?

【在 h*****a 的大作中提到】
: 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
: 数的有效性的。所以做参数的check是一个面试考察的基本点。
: 至于真正的production code,比较好的写法都是用Google library的Preconditions,
: 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
: 熟练的。

avatar
w*7
78
很有可能你没有specific题目的情况~~比如,有没有限制多余的存储空间,大多数有可
能希望只允许个别存储变量,不允许额外的O(n)的存储,那么这样的话就不能用
Hashmap或hashset了。还有他是array还是arraylist,因为array牵涉到移动位置的问
题会相对arraylist要考虑的更多。还有你有没有和他讨论有没有其他的解决方法,这
题应该有很多方法的。最最重要的是,你是不是一看到题就开始编了,一般至少要讨论
一下,几种方法,然后你挑一种方法,解释你为什么用这个方法,然后反问面试官我按
这个算法准备开始编程了,你有没有什么question or suggestion?一般这时如果你的
想法不错他就会说go ahead, 如果有问题面试官大多都会引导说,你的time
compexity是多少, 有没有更好的方法之类的~~~我感觉这题他很有可能问相对难一些
的做法,比如只允许用少量变量,不能额外的O(n)存储,然后是存有string的array
(不是arraylist),就相对会难一些些~~

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
e*g
79
就是不想招人,但是HR得找点事做。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
h*e
80
很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
这个面试要求这些,小公司代码标准比较loose的怎么办哦。

【在 h*****a 的大作中提到】
: 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
: 数的有效性的。所以做参数的check是一个面试考察的基本点。
: 至于真正的production code,比较好的写法都是用Google library的Preconditions,
: 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
: 熟练的。

avatar
A*i
81
字符限制很多公司都有我们也做限制,这些东西都是lint干的

【在 h*******e 的大作中提到】
: 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
: 这个面试要求这些,小公司代码标准比较loose的怎么办哦。

avatar
h*a
82
G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public
API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输
出,runtime exception是肯定不算正确输出的。
当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。

【在 A*****i 的大作中提到】
: 我只说我们的prod code,我们是写node的
: G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了
: 考察convention不如出个改错题不是更直观?

avatar
h*a
83
字符限制和bug不一样,一般不是面试考察的。
小公司确实可能不重视这种coding style上比较细节的东西。甚至可能因为你写的太学
院风格而锯掉。所以具体情况要具体分析。

【在 h*******e 的大作中提到】
: 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
: 这个面试要求这些,小公司代码标准比较loose的怎么办哦。

avatar
l*4
84
大牛来啦

好。

【在 h*****a 的大作中提到】
: G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public
: API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输
: 出,runtime exception是肯定不算正确输出的。
: 当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。

avatar
A*0
85
没错,我开始跟他讨论了三种方法:
1) 最差解法:O(N^2),O(1)
2) 排序后再remove dup:O(nlogn), O(1)
3) Hash:O(n), O(n)
他说第二种不能preserve order,所以让我用第三种做
而且我写完后他还说“It looks good to me.”

array

【在 w*********7 的大作中提到】
: 很有可能你没有specific题目的情况~~比如,有没有限制多余的存储空间,大多数有可
: 能希望只允许个别存储变量,不允许额外的O(n)的存储,那么这样的话就不能用
: Hashmap或hashset了。还有他是array还是arraylist,因为array牵涉到移动位置的问
: 题会相对arraylist要考虑的更多。还有你有没有和他讨论有没有其他的解决方法,这
: 题应该有很多方法的。最最重要的是,你是不是一看到题就开始编了,一般至少要讨论
: 一下,几种方法,然后你挑一种方法,解释你为什么用这个方法,然后反问面试官我按
: 这个算法准备开始编程了,你有没有什么question or suggestion?一般这时如果你的
: 想法不错他就会说go ahead, 如果有问题面试官大多都会引导说,你的time
: compexity是多少, 有没有更好的方法之类的~~~我感觉这题他很有可能问相对难一些
: 的做法,比如只允许用少量变量,不能额外的O(n)存储,然后是存有string的array

avatar
r*h
86
你给HR说面试C#就行了,我当时就是全用C#写的。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
r*e
87
我再补个刀,前面如果是null的话
可以这样
return Collections.emptyList();
avatar
c*f
88
我接着楼上补一下,
如果一定要return null,要加个@CheckForNull
avatar
b*7
89
我觉得最大的可能是出这道题之前面试官可能对你的期望值已经很低了,所以出了个简
单题,容不得出一点问题。之前看到过一个帖子分析过,当你碰到简单题时你悲剧的可
能性估计就比较大了
avatar
g*g
90
if(list == null) {
throw new IllegalArgumentException();
}
return Lists.newArrayList(Sets.newLinkedHashSet(list));
狗的人要是敢说不对,让他们内部打一架再来。
avatar
y*u
91
狗的人很多不用guava啊

【在 g*****g 的大作中提到】
: if(list == null) {
: throw new IllegalArgumentException();
: }
: return Lists.newArrayList(Sets.newLinkedHashSet(list));
: 狗的人要是敢说不对,让他们内部打一架再来。

avatar
g*g
92
用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。

【在 y**********u 的大作中提到】
: 狗的人很多不用guava啊
avatar
z*e
93
还有一个问题
不需要判断set.contains
无脑往set里面塞就好了
set自己会去重
这题有一个陷阱就是如果要求对原list做处理的话
挨个remove的话,用强循环会出问题
一个常见的解决方案就是从后玩前iterate
或者每次都remove(0)

【在 l*****a 的大作中提到】
: 1) obviously u are confused about class and interface
: when should u use List, when should u use ArrayList
: when should u use Set and when should u use HashSet
: 2) if u r using set, you can return new ArrayList(set) directly
: no need to use result
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();

avatar
z*e
94
import java.util.*;
public static List RemoveDup(List list){
if(list == null)
return null;
Set set = new HashSet();
set.addAll(list);
list.clear();
list.addAll(set);
return list;
}
avatar
z*e
95
android上那样搞就不好了
apk size会增加

【在 g*****g 的大作中提到】
: 用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。
avatar
d*n
96
总算露馅了。这写得分明就很c++好吧。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
d*n
97
总算露馅了。这写得分明就很c++好吧。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
y*n
98
用C#,是不是用 var 就可以了,Java好像有没有类似的东西。
等你把你C#坑空出来,让个我好不好。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
d*y
99
因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的,
因此上很多电面开始时都是问一个warm up问题,比较简单,考察基本功,好的面试者
应该十几分钟搞定进入下一题。这样的题目对比较强的人是个热身而且能缓解紧张情绪
,对弱的人来说,讨论一下怎么做时间很快过去了也不至于太尴尬。
你的情况,可能是interviewer没有掌握好时间,也可能你自己在这一题目花时间太久,

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
y*n
100
这个很有道理。。

久,

【在 d*****y 的大作中提到】
: 因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的,
: 因此上很多电面开始时都是问一个warm up问题,比较简单,考察基本功,好的面试者
: 应该十几分钟搞定进入下一题。这样的题目对比较强的人是个热身而且能缓解紧张情绪
: ,对弱的人来说,讨论一下怎么做时间很快过去了也不至于太尴尬。
: 你的情况,可能是interviewer没有掌握好时间,也可能你自己在这一题目花时间太久,
:
: non
: HR

avatar
w*s
101
看来据你是对了
list.get(i)速度很慢的,因为要一个个遍历。
用iterator。

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
l*i
102
细节是很重要,不过我还是觉得,就是lz遇到的面试官想据人。
avatar
c*3
103
这题应该不是考查LinkedHashSet或GUAVA。
LZ在code规范细节上还要改进。很多面试官有洁癖。

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
J*o
104
抛砖引玉一下, 判断参数的时候有没有必要判断list的size?
if(list == null || list.size() < 2){
return list;
}
avatar
S*s
105
加油

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
p*x
106
这code function 没问题,但是有以下几个方面欠考虑,从production code 的情况考
虑,google 可能觉得楼主还是缺乏经验。
public static ArrayList RemoveDup(List list){
if(list == null)
return null; //Not a major issue. Usually good practice is to
return an empty collection instead return null. Return null will make caller
to enforce null checking and make code ugly.
ArrayList result = new ArrayList();
HashSet set = new HashSet();
//Here is the major issue. Since the input list is genral list, you do
not know the exact implemetion, it can be linkedlist, arraylist, etc.
Different list implementation has different time complexity to do indexing.
For LinkedList, each time of indexing taking O(n), which will make the
overall time complexity for this for loop become O(N^2). The better practice
is to use iterator to scan the list.
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}
At last, there is another way to avoid open an extra ArrayList to return.
You can do it in place.
avatar
c*n
107
list.get(i)就是一个可以毙了你的
人如果给你一linkedlist, 你这get不傻眼了
avatar
d*n
108
你们允许throw?

【在 g*****g 的大作中提到】
: if(list == null) {
: throw new IllegalArgumentException();
: }
: return Lists.newArrayList(Sets.newLinkedHashSet(list));
: 狗的人要是敢说不对,让他们内部打一架再来。

avatar
l*a
109
really?
go back to search related document,please

【在 c***n 的大作中提到】
: list.get(i)就是一个可以毙了你的
: 人如果给你一linkedlist, 你这get不傻眼了

avatar
A*0
110
的确应该用iterator,感谢
面试官的要求是不能改变原list,要返回新list且不能改变原有顺序。

caller
do

【在 p****x 的大作中提到】
: 这code function 没问题,但是有以下几个方面欠考虑,从production code 的情况考
: 虑,google 可能觉得楼主还是缺乏经验。
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null; //Not a major issue. Usually good practice is to
: return an empty collection instead return null. Return null will make caller
: to enforce null checking and make code ugly.
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: //Here is the major issue. Since the input list is genral list, you do

avatar
G*f
111
it's a simple question and it took you 45 minutes? your coding speed is very
likely the real reason. unless you claim yourself as a Java expert in
resume, none of the guava/style/interface etc matters that much, they are
not looking for Java expert. Google likes smart person, if you are too slow,
the interviewer may think you are not smart enough.

【在 A****0 的大作中提到】
: 的确应该用iterator,感谢
: 面试官的要求是不能改变原list,要返回新list且不能改变原有顺序。
:
: caller
: do

avatar
y*n
112
呵呵, Google likes smart person, which company doesn't ?

very
slow,

【在 G********f 的大作中提到】
: it's a simple question and it took you 45 minutes? your coding speed is very
: likely the real reason. unless you claim yourself as a Java expert in
: resume, none of the guava/style/interface etc matters that much, they are
: not looking for Java expert. Google likes smart person, if you are too slow,
: the interviewer may think you are not smart enough.

avatar
z*e
113
强循环本质就是iterator
for(String s:list)
用弱循环的话
可以考虑list.remove(0)的方式来搞
while(list.size()>0){
String s = list.remove(0);
...
}
然后用linkedlist就不会更改其顺序了
而且add的效率可达o(1)
avatar
z*e
114
有catch就好了
查log我还更喜欢看exception
信息多,而不是debug info/warning

【在 d****n 的大作中提到】
: 你们允许throw?
avatar
c*n
115
靠, 你时间都花在灌水上了, 首先, 你这种去看xx是一点营养都没的回答, 要是真
对我也认了,
问题是错的。 所以请再看看你的document,please。
其他同学请看看源码吧。
http://grepcode.com/file_/repository.grepcode.com/java/root/jdk
/**
* Returns the (non-null) Node at the specified element index.
*/
Node node(int index) {
// assert isElementIndex(index);
if (index < (size >> 1)) {
Node x = first;
for (int i = 0; i < index; i++)
x = x.next;
return x;
} else {
Node x = last;
for (int i = size - 1; i > index; i--)
x = x.prev;
return x;
}
}
看见for了吗?

【在 l*****a 的大作中提到】
: really?
: go back to search related document,please

avatar
l*a
116
谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
不过请把下面这段code扔到你的IDE里面看看能不能compile and run:
List l=new LinkedList();
for(int i=0;i<10;i++) {
l.add(i);
}

for(int i=0;iSystem.out.println(l.get(i));
}
然后再看看LinkedList是否支持get method,
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
最后再次感谢对我的批评指点,谢谢!

【在 c***n 的大作中提到】
: 靠, 你时间都花在灌水上了, 首先, 你这种去看xx是一点营养都没的回答, 要是真
: 对我也认了,
: 问题是错的。 所以请再看看你的document,please。
: 其他同学请看看源码吧。
: http://grepcode.com/file_/repository.grepcode.com/java/root/jdk
: /**
: * Returns the (non-null) Node at the specified element index.
: */
: Node node(int index) {
: // assert isElementIndex(index);

avatar
n*d
117
看到最后才看到有人说起get的事儿,我java只学过一学期还以为自己记错了呢。。
String str = list.get(i);这个遍历完应该是n2不是O(n)吧
avatar
c*n
118
有空再跑你的code, 不过就算你的link也说的清清楚楚
“Operations that index into the list will traverse the list from the
beginning or the end, whichever is closer to the specified index.”
我就不明白get(i) 有什么问题。

【在 l*****a 的大作中提到】
: 谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
: 不过请把下面这段code扔到你的IDE里面看看能不能compile and run:
: List l=new LinkedList();
: for(int i=0;i<10;i++) {
: l.add(i);
: }
:
: for(int i=0;i: System.out.println(l.get(i));
: }

avatar
c*n
119
除了加个import, 看不出什么问题啊.
http://www.compileonline.com/compile_java_online.php
import java.util.*;
public class HelloWorld{
public static void main(String []args){
List l=new LinkedList();
for(int i=0;i<10;i++) {
l.add(i);
}

for(int i=0;iSystem.out.println(l.get(i));
}
}
}
Result:
Compiling the source code....
$javac HelloWorld.java 2>&1
Executing the program....
$java -Xmx128M -Xms16M HelloWorld
0
1
2
3
4
5
6
7
8
9

【在 l*****a 的大作中提到】
: 谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
: 不过请把下面这段code扔到你的IDE里面看看能不能compile and run:
: List l=new LinkedList();
: for(int i=0;i<10;i++) {
: l.add(i);
: }
:
: for(int i=0;i: System.out.println(l.get(i));
: }

avatar
m*k
120
yes,
this looks more professional

【在 l***4 的大作中提到】
: 大牛来啦
:
: 好。

avatar
m*k
121
因为在prod code里面任何一个函数都是默认保证参数是有效的
this is dangerous,
how can you guarantee each caller knows this and always keeps that in mind?

【在 A*****i 的大作中提到】
: 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
: 的。
: 就第一句判断object是不是null的,我们production里从来不会那么做。
: 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
: 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
: convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

avatar
s*i
122
这个要上升到哲学问题了啊。

【在 m*****k 的大作中提到】
: 因为在prod code里面任何一个函数都是默认保证参数是有效的
: this is dangerous,
: how can you guarantee each caller knows this and always keeps that in mind?

avatar
m*k
123
not for arrayList

【在 w********s 的大作中提到】
: 看来据你是对了
: list.get(i)速度很慢的,因为要一个个遍历。
: 用iterator。

avatar
A*i
124
lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里?
这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?

【在 m*****k 的大作中提到】
: 因为在prod code里面任何一个函数都是默认保证参数是有效的
: this is dangerous,
: how can you guarantee each caller knows this and always keeps that in mind?

avatar
m*k
125
稀奇古怪的问题?
自以为是?
null check is a common practice,
再说我也不是唯一一个觉得应该null check的,
兄弟,就题论题,
if I offended you, I apologize.

【在 A*****i 的大作中提到】
: lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里?
: 这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?

avatar
A*i
126
我可没有就题论题,每个公司prod code的内部convention是不一样的。
我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的
面试者那就是故意找茬。
一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个
的。

【在 m*****k 的大作中提到】
: 稀奇古怪的问题?
: 自以为是?
: null check is a common practice,
: 再说我也不是唯一一个觉得应该null check的,
: 兄弟,就题论题,
: if I offended you, I apologize.

avatar
h*a
127
没啥故意找茬吧。你去面G就要follow人家的规矩,至于是不是合理不在讨论之内,因
为这不能帮你拿到offer.你可以说你不喜欢G所以不去G面,或者你很牛早就有了更好的
选择,totally fine。但这个帖子的lz面G fail了过来问一下想找出原因,大家给的很
多原因都是reasonable的。也许这个同学或者旁观的同学看了之后能有所启发,下次面
G或者相似的公司就能避免类似的错误拿到offer.
现在面试落入了做题的pattern,好坏不能一概而论。但如果在事业起步阶段因为做题
拿到一个不错的offer可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同
高考一样。

【在 A*****i 的大作中提到】
: 我可没有就题论题,每个公司prod code的内部convention是不一样的。
: 我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的
: 面试者那就是故意找茬。
: 一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个
: 的。

avatar
y*u
128
感觉现在complain面试官太多了
其实能做题也不一定是坏事,想想09年春天的时候,版上的主题是怎么背下effective
C++/more effective C++去面bloomberg

如同
家的
个个

【在 h*****a 的大作中提到】
: 没啥故意找茬吧。你去面G就要follow人家的规矩,至于是不是合理不在讨论之内,因
: 为这不能帮你拿到offer.你可以说你不喜欢G所以不去G面,或者你很牛早就有了更好的
: 选择,totally fine。但这个帖子的lz面G fail了过来问一下想找出原因,大家给的很
: 多原因都是reasonable的。也许这个同学或者旁观的同学看了之后能有所启发,下次面
: G或者相似的公司就能避免类似的错误拿到offer.
: 现在面试落入了做题的pattern,好坏不能一概而论。但如果在事业起步阶段因为做题
: 拿到一个不错的offer可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同
: 高考一样。

avatar
A*i
129
背书做题都比和面试人周旋要容易的多。
因为答案是固定的,或者相对固定的。
现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了

effective

【在 y**********u 的大作中提到】
: 感觉现在complain面试官太多了
: 其实能做题也不一定是坏事,想想09年春天的时候,版上的主题是怎么背下effective
: C++/more effective C++去面bloomberg
:
: 如同
: 家的
: 个个

avatar
y*u
130
感觉现在机会还是很多啊,招人的公司不少
当然挑的面试官谁都经常能遇到

【在 A*****i 的大作中提到】
: 背书做题都比和面试人周旋要容易的多。
: 因为答案是固定的,或者相对固定的。
: 现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了
:
: effective

avatar
k*6
131
我只会python,最近在学java,看到这code的第一反应就是那个判断好多余。。。翻了
4页才有人提,我还以为java真得这么写呢。。。

【在 z****e 的大作中提到】
: 还有一个问题
: 不需要判断set.contains
: 无脑往set里面塞就好了
: set自己会去重
: 这题有一个陷阱就是如果要求对原list做处理的话
: 挨个remove的话,用强循环会出问题
: 一个常见的解决方案就是从后玩前iterate
: 或者每次都remove(0)

avatar
A*0
132
上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
-functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
电话说依然被拒。。。
我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
avatar
l*a
133
bless
上你的code看看吧
另外google真的不需要什么人,招人都是装样子
你去申FL不好吗?

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
d*t
134
简历不行?面试走个过场。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
F*t
135
觉得sf各大startup是这么干的。。。

【在 d********t 的大作中提到】
: 简历不行?面试走个过场。
:
: non
: HR

avatar
A*0
136
上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
还有什么地方可以再改进的了。。。
职位是Kirkland的。
import java.util.*;
public static ArrayList RemoveDup(List list){
if(list == null)
return null;
ArrayList result = new ArrayList();
HashSet set = new HashSet();
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}

【在 l*****a 的大作中提到】
: bless
: 上你的code看看吧
: 另外google真的不需要什么人,招人都是装样子
: 你去申FL不好吗?
:
: non
: HR

avatar
A*0
137
简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一
年了

【在 d********t 的大作中提到】
: 简历不行?面试走个过场。
:
: non
: HR

avatar
l*a
138
there are a few issues

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
A*0
139
请赐教,真的很想知道如何改正

【在 l*****a 的大作中提到】
: there are a few issues
avatar
y*0
140
的确是有几个问题。

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
l*a
141
1) obviously u are confused about class and interface
when should u use List, when should u use ArrayList
when should u use Set and when should u use HashSet
2) if u r using set, you can return new ArrayList(set) directly
no need to use result
import java.util.*;
public static ArrayList RemoveDup(List list){
if(list == null)
return null;
ArrayList result = new ArrayList();
HashSet set = new HashSet();
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
h*e
142
还有更简的~~~方法。
avatar
l*a
143
for(int i=0;iString str = list.get(i);
this is ok,but maybe it is better to use
for(String str:list)

【在 l*****a 的大作中提到】
: 1) obviously u are confused about class and interface
: when should u use List, when should u use ArrayList
: when should u use Set and when should u use HashSet
: 2) if u r using set, you can return new ArrayList(set) directly
: no need to use result
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();

avatar
l*a
144
请赐教.

【在 h*******e 的大作中提到】
: 还有更简的~~~方法。
avatar
A*0
145
这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊

【在 l*****a 的大作中提到】
: 请赐教.
avatar
h*e
146
好吧。。。没有了,看错了以为类似 leetcode rmv duplicate 呢。如果全局
duplicate那就是hash要么 如果是adjacent duplicate 就是curI 1开始 size 结束,
curI-1 curI, newI三个指针就行吧。

【在 l*****a 的大作中提到】
: 请赐教.
avatar
P*r
147
俺昨天写了一个x^y
然后还讲了N个数取topK
杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光
avatar
l*4
148
ArrayList result = new ArrayList();
HashSet set = new HashSet();
这两个应该是:
List result = new ArrayList();
Set set = new HashSet();
这样比较好吧,用多态

【在 A****0 的大作中提到】
: 这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊
avatar
A*0
149
这个题最近也常见啊 logN

【在 P**********r 的大作中提到】
: 俺昨天写了一个x^y
: 然后还讲了N个数取topK
: 杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光

avatar
A*0
150
难道这就是G拒人的理由啊。。。

【在 l***4 的大作中提到】
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: 这两个应该是:
: List result = new ArrayList();
: Set set = new HashSet();
: 这样比较好吧,用多态

avatar
l*4
151
也可能根本不缺人。

【在 A****0 的大作中提到】
: 难道这就是G拒人的理由啊。。。
avatar
A*0
152
十分感谢!
可问题是,function的signature是面试官给的啊。。我只能如此写下去。
可能真的要用return new ArrayList(set);?

【在 l*****a 的大作中提到】
: 1) obviously u are confused about class and interface
: when should u use List, when should u use ArrayList
: when should u use Set and when should u use HashSet
: 2) if u r using set, you can return new ArrayList(set) directly
: no need to use result
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();

avatar
h*o
153
也可能你没说不用额外空间的做法??
avatar
a*u
154
SET并不是写Test case的,你举那么多例子很可能浪费时间了。
avatar
A*0
155
我讲了三种方法:
1) brute force,需要O(N^2)时间和O(1)空间
2) sorting然后remove dup,需要O(nlogn)时间和O(1)空间,但他后来说要保证list的
顺序与原list相同,所以这个方法不行
3) 额外空间,需要O(N)时间和O(N)时间
都说到了的

【在 h*********o 的大作中提到】
: 也可能你没说不用额外空间的做法??
avatar
p*e
156
看看人家讨论吧
http://stackoverflow.com/questions/14040331/remove-duplicate-st
就是
set.addall(string);
return list(set);
你的解法是contains call了两次

【在 A****0 的大作中提到】
: 十分感谢!
: 可问题是,function的signature是面试官给的啊。。我只能如此写下去。
: 可能真的要用return new ArrayList(set);?

avatar
A*0
157
是面试官让我写test case的,
面试官:请写一些test case
我:blackbox or whitebox?
面试官:blackbox
我:functional or non-functional
面试官:functional
然后就开始写,写了20个test case后他说好了,我们已经有足够的test case了,时间
也差不多了

【在 a******u 的大作中提到】
: SET并不是写Test case的,你举那么多例子很可能浪费时间了。
avatar
f*o
158
我也发现了现在 google 是这么个风格,用巨简单的题来考你。一样能在鸡蛋里挑着骨
头。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
A*0
159
这个真的是我的误区,感谢!
看来用LinkedHashSet可以maintain order

【在 p****e 的大作中提到】
: 看看人家讨论吧
: http://stackoverflow.com/questions/14040331/remove-duplicate-st
: 就是
: set.addall(string);
: return list(set);
: 你的解法是contains call了两次

avatar
m*n
160
The interviewer might be picky with a simple question like this.
Your code has a few style issues that make you look amateurish in
picky eyes: 8-)
You may want to re-read Effective Java and search for Java
coding style on the web.
import java.util.*; // Wildcard import not good.
public static ArrayList RemoveDup(List list){
// RemoveDup: method name should start with lower case char
// (List list): either change this to ArrayList or change
// the for-loop with list.get(i) to for-each. Your signature
// does not say list must be ArrayList, so someone can pass in
// a long linked list and break your code at list.get(i)

if(list == null)
return null; // Convention is to return empty container.
ArrayList result = new ArrayList(); // If no order-
preserving request, this list is not necessary.
HashSet set = new HashSet();
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
// body of loop can be changed to:
// if (set.add(str)) result.add(str);
}
return result;
}

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
A*0
161
万分感谢!
其实function Signature是他写的
有order preserving的要求

【在 m*****n 的大作中提到】
: The interviewer might be picky with a simple question like this.
: Your code has a few style issues that make you look amateurish in
: picky eyes: 8-)
: You may want to re-read Effective Java and search for Java
: coding style on the web.
: import java.util.*; // Wildcard import not good.
: public static ArrayList RemoveDup(List list){
: // RemoveDup: method name should start with lower case char
: // (List list): either change this to ArrayList or change
: // the for-loop with list.get(i) to for-each. Your signature

avatar
s*r
162
这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有,
现在都Java8 了好伐, 至少也得看看java 7的新的东东吧,
HashSet set = new HashSet(); // should be coded as
Set set = new HashSet<>();
还有其他的问题,大家也说了。一起加油吧!
avatar
n*n
163
ding
avatar
y*a
164
public static List RemoveDup(List list){
return new ArrayList(new LinkedHashSet(list));
}
avatar
y*n
165
这个和前几天那个清华的贴那个更不合理。。
avatar
y*n
166
微软也都写Java吗,楼主可能对Java的API没有那么熟。

【在 A****0 的大作中提到】
: 简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一
: 年了

avatar
m*v
167
one question is not enough man
avatar
l*c
168
这个是哪个帖子?
还没看到过。

【在 y***n 的大作中提到】
: 这个和前几天那个清华的贴那个更不合理。。
avatar
A*0
169
平时用的是C#,为了G拿Java苦练刷题

【在 y***n 的大作中提到】
: 微软也都写Java吗,楼主可能对Java的API没有那么熟。
avatar
y*n
170
是不是c++比较中性话一点。。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
A*0
171
不觉得,C++的memory leak太难办了,没GC不好用。

【在 y***n 的大作中提到】
: 是不是c++比较中性话一点。。
avatar
y*n
172
仅仅针对刷题。

【在 A****0 的大作中提到】
: 不觉得,C++的memory leak太难办了,没GC不好用。
avatar
A*0
173
那感觉还好,不用考虑那么多polymorphism。

【在 y***n 的大作中提到】
: 仅仅针对刷题。
avatar
A*i
174
这跟只会刷题没有任何关系。
这人就是nitpick,至于多态你真是想多了。
人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。



【在 s********r 的大作中提到】
: 这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有,
: 现在都Java8 了好伐, 至少也得看看java 7的新的东东吧,
: HashSet set = new HashSet(); // should be coded as
: Set set = new HashSet<>();
: 还有其他的问题,大家也说了。一起加油吧!

avatar
y*n
175
Re 这个,终于找到一个说出我不敢说出来的人了。。

【在 A*****i 的大作中提到】
: 这跟只会刷题没有任何关系。
: 这人就是nitpick,至于多态你真是想多了。
: 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
:
: ,

avatar
l*a
176
他说得没错阿
OO的原则就是programming to interface

【在 A*****i 的大作中提到】
: 这跟只会刷题没有任何关系。
: 这人就是nitpick,至于多态你真是想多了。
: 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
:
: ,

avatar
g*e
177
LZ那段代码真做CR会被挑一堆毛病,没通过电面不算冤

【在 l*****a 的大作中提到】
: 他说得没错阿
: OO的原则就是programming to interface

avatar
c*f
178
这code过不了CR
interface
for loop用index了
java 1.7用 <>了
avatar
c*f
179
我以前被CR,就被挑过这些毛病
avatar
A*0
180
的确,看来刷题练习时要用Checkstyle

【在 c******f 的大作中提到】
: 这code过不了CR
: interface
: for loop用index了
: java 1.7用 <>了

avatar
A*i
181
你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
的。
就第一句判断object是不是null的,我们production里从来不会那么做。
因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

【在 l*****a 的大作中提到】
: 他说得没错阿
: OO的原则就是programming to interface

avatar
y*0
182
你可能碰到了哪个兄弟的绿卡广告。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
A*0
183
感觉prod code里如果method是public的,也要做null check(因为你不知道谁会叫这
个method)
当然private的就不用了。

【在 A*****i 的大作中提到】
: 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
: 的。
: 就第一句判断object是不是null的,我们production里从来不会那么做。
: 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
: 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
: convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

avatar
D*g
184

I had the same question from Google yesterday interviewing for TPM position.
There is a problem using for loop instead of while. In my case, it clearly
asks for the List as the input parameter. Thus, the worst using for loop
will be n^2 instead of n. We had some good discussion, and with the hint
from the interviewer, it makes sense to use iterator. I finished the problem
in about 30 minutes and then move on the next level of this question, which
removes the duplicates if the element in the list occurs n times, n as the
second input in the function.

【在 y******0 的大作中提到】
: 的确是有几个问题。
avatar
h*a
185
既然是面SET悲剧,更可能是test case的问题吧

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
h*a
186
不要忽视这种小地方啊。这种多态的code如果没用最base的type在FLG这样的公司里是
肯定过不了code review的。
其实这种code现在都应该用Guava.不会Guava说不定会被Google认为是一个weakness.

【在 A*****i 的大作中提到】
: 这跟只会刷题没有任何关系。
: 这人就是nitpick,至于多态你真是想多了。
: 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
:
: ,

avatar
h*a
187
你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
数的有效性的。所以做参数的check是一个面试考察的基本点。
至于真正的production code,比较好的写法都是用Google library的Preconditions,
要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
熟练的。

【在 A*****i 的大作中提到】
: 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
: 的。
: 就第一句判断object是不是null的,我们production里从来不会那么做。
: 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
: 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
: convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

avatar
A*i
188
我只说我们的prod code,我们是写node的
G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了
考察convention不如出个改错题不是更直观?

【在 h*****a 的大作中提到】
: 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
: 数的有效性的。所以做参数的check是一个面试考察的基本点。
: 至于真正的production code,比较好的写法都是用Google library的Preconditions,
: 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
: 熟练的。

avatar
w*7
189
很有可能你没有specific题目的情况~~比如,有没有限制多余的存储空间,大多数有可
能希望只允许个别存储变量,不允许额外的O(n)的存储,那么这样的话就不能用
Hashmap或hashset了。还有他是array还是arraylist,因为array牵涉到移动位置的问
题会相对arraylist要考虑的更多。还有你有没有和他讨论有没有其他的解决方法,这
题应该有很多方法的。最最重要的是,你是不是一看到题就开始编了,一般至少要讨论
一下,几种方法,然后你挑一种方法,解释你为什么用这个方法,然后反问面试官我按
这个算法准备开始编程了,你有没有什么question or suggestion?一般这时如果你的
想法不错他就会说go ahead, 如果有问题面试官大多都会引导说,你的time
compexity是多少, 有没有更好的方法之类的~~~我感觉这题他很有可能问相对难一些
的做法,比如只允许用少量变量,不能额外的O(n)存储,然后是存有string的array
(不是arraylist),就相对会难一些些~~

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
e*g
190
就是不想招人,但是HR得找点事做。

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
h*e
191
很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
这个面试要求这些,小公司代码标准比较loose的怎么办哦。

【在 h*****a 的大作中提到】
: 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
: 数的有效性的。所以做参数的check是一个面试考察的基本点。
: 至于真正的production code,比较好的写法都是用Google library的Preconditions,
: 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
: 熟练的。

avatar
A*i
192
字符限制很多公司都有我们也做限制,这些东西都是lint干的

【在 h*******e 的大作中提到】
: 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
: 这个面试要求这些,小公司代码标准比较loose的怎么办哦。

avatar
h*a
193
G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public
API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输
出,runtime exception是肯定不算正确输出的。
当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。

【在 A*****i 的大作中提到】
: 我只说我们的prod code,我们是写node的
: G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了
: 考察convention不如出个改错题不是更直观?

avatar
h*a
194
字符限制和bug不一样,一般不是面试考察的。
小公司确实可能不重视这种coding style上比较细节的东西。甚至可能因为你写的太学
院风格而锯掉。所以具体情况要具体分析。

【在 h*******e 的大作中提到】
: 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
: 这个面试要求这些,小公司代码标准比较loose的怎么办哦。

avatar
l*4
195
大牛来啦

好。

【在 h*****a 的大作中提到】
: G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public
: API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输
: 出,runtime exception是肯定不算正确输出的。
: 当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。

avatar
A*0
196
没错,我开始跟他讨论了三种方法:
1) 最差解法:O(N^2),O(1)
2) 排序后再remove dup:O(nlogn), O(1)
3) Hash:O(n), O(n)
他说第二种不能preserve order,所以让我用第三种做
而且我写完后他还说“It looks good to me.”

array

【在 w*********7 的大作中提到】
: 很有可能你没有specific题目的情况~~比如,有没有限制多余的存储空间,大多数有可
: 能希望只允许个别存储变量,不允许额外的O(n)的存储,那么这样的话就不能用
: Hashmap或hashset了。还有他是array还是arraylist,因为array牵涉到移动位置的问
: 题会相对arraylist要考虑的更多。还有你有没有和他讨论有没有其他的解决方法,这
: 题应该有很多方法的。最最重要的是,你是不是一看到题就开始编了,一般至少要讨论
: 一下,几种方法,然后你挑一种方法,解释你为什么用这个方法,然后反问面试官我按
: 这个算法准备开始编程了,你有没有什么question or suggestion?一般这时如果你的
: 想法不错他就会说go ahead, 如果有问题面试官大多都会引导说,你的time
: compexity是多少, 有没有更好的方法之类的~~~我感觉这题他很有可能问相对难一些
: 的做法,比如只允许用少量变量,不能额外的O(n)存储,然后是存有string的array

avatar
r*h
197
你给HR说面试C#就行了,我当时就是全用C#写的。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
r*e
198
我再补个刀,前面如果是null的话
可以这样
return Collections.emptyList();
avatar
c*f
199
我接着楼上补一下,
如果一定要return null,要加个@CheckForNull
avatar
b*7
200
我觉得最大的可能是出这道题之前面试官可能对你的期望值已经很低了,所以出了个简
单题,容不得出一点问题。之前看到过一个帖子分析过,当你碰到简单题时你悲剧的可
能性估计就比较大了
avatar
g*g
201
if(list == null) {
throw new IllegalArgumentException();
}
return Lists.newArrayList(Sets.newLinkedHashSet(list));
狗的人要是敢说不对,让他们内部打一架再来。
avatar
y*u
202
狗的人很多不用guava啊

【在 g*****g 的大作中提到】
: if(list == null) {
: throw new IllegalArgumentException();
: }
: return Lists.newArrayList(Sets.newLinkedHashSet(list));
: 狗的人要是敢说不对,让他们内部打一架再来。

avatar
g*g
203
用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。

【在 y**********u 的大作中提到】
: 狗的人很多不用guava啊
avatar
z*e
204
还有一个问题
不需要判断set.contains
无脑往set里面塞就好了
set自己会去重
这题有一个陷阱就是如果要求对原list做处理的话
挨个remove的话,用强循环会出问题
一个常见的解决方案就是从后玩前iterate
或者每次都remove(0)

【在 l*****a 的大作中提到】
: 1) obviously u are confused about class and interface
: when should u use List, when should u use ArrayList
: when should u use Set and when should u use HashSet
: 2) if u r using set, you can return new ArrayList(set) directly
: no need to use result
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();

avatar
z*e
205
import java.util.*;
public static List RemoveDup(List list){
if(list == null)
return null;
Set set = new HashSet();
set.addAll(list);
list.clear();
list.addAll(set);
return list;
}
avatar
z*e
206
android上那样搞就不好了
apk size会增加

【在 g*****g 的大作中提到】
: 用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。
avatar
d*n
207
总算露馅了。这写得分明就很c++好吧。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
d*n
208
总算露馅了。这写得分明就很c++好吧。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
y*n
209
用C#,是不是用 var 就可以了,Java好像有没有类似的东西。
等你把你C#坑空出来,让个我好不好。

【在 A****0 的大作中提到】
: 平时用的是C#,为了G拿Java苦练刷题
avatar
d*y
210
因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的,
因此上很多电面开始时都是问一个warm up问题,比较简单,考察基本功,好的面试者
应该十几分钟搞定进入下一题。这样的题目对比较强的人是个热身而且能缓解紧张情绪
,对弱的人来说,讨论一下怎么做时间很快过去了也不至于太尴尬。
你的情况,可能是interviewer没有掌握好时间,也可能你自己在这一题目花时间太久,

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
y*n
211
这个很有道理。。

久,

【在 d*****y 的大作中提到】
: 因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的,
: 因此上很多电面开始时都是问一个warm up问题,比较简单,考察基本功,好的面试者
: 应该十几分钟搞定进入下一题。这样的题目对比较强的人是个热身而且能缓解紧张情绪
: ,对弱的人来说,讨论一下怎么做时间很快过去了也不至于太尴尬。
: 你的情况,可能是interviewer没有掌握好时间,也可能你自己在这一题目花时间太久,
:
: non
: HR

avatar
w*s
212
看来据你是对了
list.get(i)速度很慢的,因为要一个个遍历。
用iterator。

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
l*i
213
细节是很重要,不过我还是觉得,就是lz遇到的面试官想据人。
avatar
c*3
214
这题应该不是考查LinkedHashSet或GUAVA。
LZ在code规范细节上还要改进。很多面试官有洁癖。

【在 A****0 的大作中提到】
: 上code,昨天刚面的,题目是ArrayList删duplicate且返回一个新的list,实在不知道
: 还有什么地方可以再改进的了。。。
: 职位是Kirkland的。
: import java.util.*;
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null;
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: for(int i=0;i
avatar
J*o
215
抛砖引玉一下, 判断参数的时候有没有必要判断list的size?
if(list == null || list.size() < 2){
return list;
}
avatar
S*s
216
加油

non
HR

【在 A****0 的大作中提到】
: 上周SWE电面,问了个超级简单的题目,我很快列举出各种corner case和三种复杂度的
: 解法,并把最优解写出(面试后在IDE下编译通过、运行各种test case通过)。第二天
: HR电话回来说hire committee觉得我coding能力不强,改成SET的track。
: 昨天SET电面,问了个更令人发指的简单题——给一个string的ArrayList,把其中的
: duplicate给删掉。。这回我写完程序后还列举了20个functional test cases和5个non
: -functional test cases(面试后在IDE下编译通过,20个test cases)。今天接到HR
: 电话说依然被拒。。。
: 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。

avatar
p*x
217
这code function 没问题,但是有以下几个方面欠考虑,从production code 的情况考
虑,google 可能觉得楼主还是缺乏经验。
public static ArrayList RemoveDup(List list){
if(list == null)
return null; //Not a major issue. Usually good practice is to
return an empty collection instead return null. Return null will make caller
to enforce null checking and make code ugly.
ArrayList result = new ArrayList();
HashSet set = new HashSet();
//Here is the major issue. Since the input list is genral list, you do
not know the exact implemetion, it can be linkedlist, arraylist, etc.
Different list implementation has different time complexity to do indexing.
For LinkedList, each time of indexing taking O(n), which will make the
overall time complexity for this for loop become O(N^2). The better practice
is to use iterator to scan the list.
for(int i=0;iString str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}
At last, there is another way to avoid open an extra ArrayList to return.
You can do it in place.
avatar
c*n
218
list.get(i)就是一个可以毙了你的
人如果给你一linkedlist, 你这get不傻眼了
avatar
d*n
219
你们允许throw?

【在 g*****g 的大作中提到】
: if(list == null) {
: throw new IllegalArgumentException();
: }
: return Lists.newArrayList(Sets.newLinkedHashSet(list));
: 狗的人要是敢说不对,让他们内部打一架再来。

avatar
l*a
220
really?
go back to search related document,please

【在 c***n 的大作中提到】
: list.get(i)就是一个可以毙了你的
: 人如果给你一linkedlist, 你这get不傻眼了

avatar
A*0
221
的确应该用iterator,感谢
面试官的要求是不能改变原list,要返回新list且不能改变原有顺序。

caller
do

【在 p****x 的大作中提到】
: 这code function 没问题,但是有以下几个方面欠考虑,从production code 的情况考
: 虑,google 可能觉得楼主还是缺乏经验。
: public static ArrayList RemoveDup(List list){
: if(list == null)
: return null; //Not a major issue. Usually good practice is to
: return an empty collection instead return null. Return null will make caller
: to enforce null checking and make code ugly.
: ArrayList result = new ArrayList();
: HashSet set = new HashSet();
: //Here is the major issue. Since the input list is genral list, you do

avatar
G*f
222
it's a simple question and it took you 45 minutes? your coding speed is very
likely the real reason. unless you claim yourself as a Java expert in
resume, none of the guava/style/interface etc matters that much, they are
not looking for Java expert. Google likes smart person, if you are too slow,
the interviewer may think you are not smart enough.

【在 A****0 的大作中提到】
: 的确应该用iterator,感谢
: 面试官的要求是不能改变原list,要返回新list且不能改变原有顺序。
:
: caller
: do

avatar
y*n
223
呵呵, Google likes smart person, which company doesn't ?

very
slow,

【在 G********f 的大作中提到】
: it's a simple question and it took you 45 minutes? your coding speed is very
: likely the real reason. unless you claim yourself as a Java expert in
: resume, none of the guava/style/interface etc matters that much, they are
: not looking for Java expert. Google likes smart person, if you are too slow,
: the interviewer may think you are not smart enough.

avatar
z*e
224
强循环本质就是iterator
for(String s:list)
用弱循环的话
可以考虑list.remove(0)的方式来搞
while(list.size()>0){
String s = list.remove(0);
...
}
然后用linkedlist就不会更改其顺序了
而且add的效率可达o(1)
avatar
z*e
225
有catch就好了
查log我还更喜欢看exception
信息多,而不是debug info/warning

【在 d****n 的大作中提到】
: 你们允许throw?
avatar
c*n
226
靠, 你时间都花在灌水上了, 首先, 你这种去看xx是一点营养都没的回答, 要是真
对我也认了,
问题是错的。 所以请再看看你的document,please。
其他同学请看看源码吧。
http://grepcode.com/file_/repository.grepcode.com/java/root/jdk
/**
* Returns the (non-null) Node at the specified element index.
*/
Node node(int index) {
// assert isElementIndex(index);
if (index < (size >> 1)) {
Node x = first;
for (int i = 0; i < index; i++)
x = x.next;
return x;
} else {
Node x = last;
for (int i = size - 1; i > index; i--)
x = x.prev;
return x;
}
}
看见for了吗?

【在 l*****a 的大作中提到】
: really?
: go back to search related document,please

avatar
l*a
227
谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
不过请把下面这段code扔到你的IDE里面看看能不能compile and run:
List l=new LinkedList();
for(int i=0;i<10;i++) {
l.add(i);
}

for(int i=0;iSystem.out.println(l.get(i));
}
然后再看看LinkedList是否支持get method,
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.h
最后再次感谢对我的批评指点,谢谢!

【在 c***n 的大作中提到】
: 靠, 你时间都花在灌水上了, 首先, 你这种去看xx是一点营养都没的回答, 要是真
: 对我也认了,
: 问题是错的。 所以请再看看你的document,please。
: 其他同学请看看源码吧。
: http://grepcode.com/file_/repository.grepcode.com/java/root/jdk
: /**
: * Returns the (non-null) Node at the specified element index.
: */
: Node node(int index) {
: // assert isElementIndex(index);

avatar
n*d
228
看到最后才看到有人说起get的事儿,我java只学过一学期还以为自己记错了呢。。
String str = list.get(i);这个遍历完应该是n2不是O(n)吧
avatar
c*n
229
有空再跑你的code, 不过就算你的link也说的清清楚楚
“Operations that index into the list will traverse the list from the
beginning or the end, whichever is closer to the specified index.”
我就不明白get(i) 有什么问题。

【在 l*****a 的大作中提到】
: 谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
: 不过请把下面这段code扔到你的IDE里面看看能不能compile and run:
: List l=new LinkedList();
: for(int i=0;i<10;i++) {
: l.add(i);
: }
:
: for(int i=0;i: System.out.println(l.get(i));
: }

avatar
c*n
230
这个确实能compile, 但是linkedlist.get(i) 是 o(n), 没有人会对List<>
傻乎乎的用 get()。

【在 l*****a 的大作中提到】
: 谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
: 不过请把下面这段code扔到你的IDE里面看看能不能compile and run:
: List l=new LinkedList();
: for(int i=0;i<10;i++) {
: l.add(i);
: }
:
: for(int i=0;i: System.out.println(l.get(i));
: }

avatar
m*k
231
yes,
this looks more professional

【在 l***4 的大作中提到】
: 大牛来啦
:
: 好。

avatar
m*k
232
因为在prod code里面任何一个函数都是默认保证参数是有效的
this is dangerous,
how can you guarantee each caller knows this and always keeps that in mind?

【在 A*****i 的大作中提到】
: 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
: 的。
: 就第一句判断object是不是null的,我们production里从来不会那么做。
: 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
: 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
: convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。

avatar
s*i
233
这个要上升到哲学问题了啊。

【在 m*****k 的大作中提到】
: 因为在prod code里面任何一个函数都是默认保证参数是有效的
: this is dangerous,
: how can you guarantee each caller knows this and always keeps that in mind?

avatar
m*k
234
not for arrayList

【在 w********s 的大作中提到】
: 看来据你是对了
: list.get(i)速度很慢的,因为要一个个遍历。
: 用iterator。

avatar
A*i
235
lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里?
这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?

【在 m*****k 的大作中提到】
: 因为在prod code里面任何一个函数都是默认保证参数是有效的
: this is dangerous,
: how can you guarantee each caller knows this and always keeps that in mind?

avatar
m*k
236
稀奇古怪的问题?
自以为是?
null check is a common practice,
再说我也不是唯一一个觉得应该null check的,
兄弟,就题论题,
if I offended you, I apologize.

【在 A*****i 的大作中提到】
: lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里?
: 这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?

avatar
A*i
237
我可没有就题论题,每个公司prod code的内部convention是不一样的。
我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的
面试者那就是故意找茬。
一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个
的。

【在 m*****k 的大作中提到】
: 稀奇古怪的问题?
: 自以为是?
: null check is a common practice,
: 再说我也不是唯一一个觉得应该null check的,
: 兄弟,就题论题,
: if I offended you, I apologize.

avatar
h*a
238
没啥故意找茬吧。你去面G就要follow人家的规矩,至于是不是合理不在讨论之内,因
为这不能帮你拿到offer.你可以说你不喜欢G所以不去G面,或者你很牛早就有了更好的
选择,totally fine。但这个帖子的lz面G fail了过来问一下想找出原因,大家给的很
多原因都是reasonable的。也许这个同学或者旁观的同学看了之后能有所启发,下次面
G或者相似的公司就能避免类似的错误拿到offer.
现在面试落入了做题的pattern,好坏不能一概而论。但如果在事业起步阶段因为做题
拿到一个不错的offer可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同
高考一样。

【在 A*****i 的大作中提到】
: 我可没有就题论题,每个公司prod code的内部convention是不一样的。
: 我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的
: 面试者那就是故意找茬。
: 一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个
: 的。

avatar
y*u
239
感觉现在complain面试官太多了
其实能做题也不一定是坏事,想想09年春天的时候,版上的主题是怎么背下effective
C++/more effective C++去面bloomberg

如同
家的
个个

【在 h*****a 的大作中提到】
: 没啥故意找茬吧。你去面G就要follow人家的规矩,至于是不是合理不在讨论之内,因
: 为这不能帮你拿到offer.你可以说你不喜欢G所以不去G面,或者你很牛早就有了更好的
: 选择,totally fine。但这个帖子的lz面G fail了过来问一下想找出原因,大家给的很
: 多原因都是reasonable的。也许这个同学或者旁观的同学看了之后能有所启发,下次面
: G或者相似的公司就能避免类似的错误拿到offer.
: 现在面试落入了做题的pattern,好坏不能一概而论。但如果在事业起步阶段因为做题
: 拿到一个不错的offer可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同
: 高考一样。

avatar
A*i
240
背书做题都比和面试人周旋要容易的多。
因为答案是固定的,或者相对固定的。
现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了

effective

【在 y**********u 的大作中提到】
: 感觉现在complain面试官太多了
: 其实能做题也不一定是坏事,想想09年春天的时候,版上的主题是怎么背下effective
: C++/more effective C++去面bloomberg
:
: 如同
: 家的
: 个个

avatar
y*u
241
感觉现在机会还是很多啊,招人的公司不少
当然挑的面试官谁都经常能遇到

【在 A*****i 的大作中提到】
: 背书做题都比和面试人周旋要容易的多。
: 因为答案是固定的,或者相对固定的。
: 现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了
:
: effective

avatar
k*6
242
我只会python,最近在学java,看到这code的第一反应就是那个判断好多余。。。翻了
4页才有人提,我还以为java真得这么写呢。。。

【在 z****e 的大作中提到】
: 还有一个问题
: 不需要判断set.contains
: 无脑往set里面塞就好了
: set自己会去重
: 这题有一个陷阱就是如果要求对原list做处理的话
: 挨个remove的话,用强循环会出问题
: 一个常见的解决方案就是从后玩前iterate
: 或者每次都remove(0)

avatar
x*j
243
不判断的话,原来的顺序是不是不能保留了?

【在 k*******6 的大作中提到】
: 我只会python,最近在学java,看到这code的第一反应就是那个判断好多余。。。翻了
: 4页才有人提,我还以为java真得这么写呢。。。

avatar
j*o
244
我同意前面一个id的猜测:楼主做题太慢了
你自己也说题很简单,哪能需要45min呢
人家可能只是warm up....结果你把时间全花了。。。
avatar
c*5
245
这题肯定不是这样啊 毕竟是google面试, 肯定要用快慢指针linear那个解法, 最后返
回整个array的subarray?? leetcode那是返回长度
avatar
c*5
246
最终return
result.subList(0, leftPointer+1) ?????
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。