A****0 发帖数: 1073 | 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
电话说依然被拒。。。
我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。 |
l*****a 发帖数: 14598 | 2 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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
d********t 发帖数: 9628 | 3 简历不行?面试走个过场。
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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
F**********t 发帖数: 80 | 4 觉得sf各大startup是这么干的。。。
【在 d********t 的大作中提到】 : 简历不行?面试走个过场。 : : non : HR
|
A****0 发帖数: 1073 | 5 上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
String str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}
【在 l*****a 的大作中提到】 : bless : 上你的code看看吧 : 另外google真的不需要什么人,招人都是装样子 : 你去申FL不好吗? : : non : HR
|
A****0 发帖数: 1073 | 6 简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一
年了
【在 d********t 的大作中提到】 : 简历不行?面试走个过场。 : : non : HR
|
l*****a 发帖数: 14598 | 7 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
|
A****0 发帖数: 1073 | 8 请赐教,真的很想知道如何改正
【在 l*****a 的大作中提到】 : there are a few issues
|
y******0 发帖数: 93 | 9 的确是有几个问题。
【在 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
|
l*****a 发帖数: 14598 | 10 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;i
String 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
|
|
|
h*******e 发帖数: 1377 | |
l*****a 发帖数: 14598 | 12 for(int i=0;i
String 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();
|
l*****a 发帖数: 14598 | 13 请赐教.
【在 h*******e 的大作中提到】 : 还有更简的~~~方法。
|
A****0 发帖数: 1073 | 14 这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊
【在 l*****a 的大作中提到】 : 请赐教.
|
h*******e 发帖数: 1377 | 15 好吧。。。没有了,看错了以为类似 leetcode rmv duplicate 呢。如果全局
duplicate那就是hash要么 如果是adjacent duplicate 就是curI 1开始 size 结束,
curI-1 curI, newI三个指针就行吧。
【在 l*****a 的大作中提到】 : 请赐教.
|
P**********r 发帖数: 755 | 16 俺昨天写了一个x^y
然后还讲了N个数取topK
杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光 |
l***4 发帖数: 1788 | 17 ArrayList result = new ArrayList();
HashSet set = new HashSet();
这两个应该是:
List result = new ArrayList();
Set set = new HashSet();
这样比较好吧,用多态
【在 A****0 的大作中提到】 : 这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊
|
A****0 发帖数: 1073 | 18 这个题最近也常见啊 logN
【在 P**********r 的大作中提到】 : 俺昨天写了一个x^y : 然后还讲了N个数取topK : 杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光
|
A****0 发帖数: 1073 | 19 难道这就是G拒人的理由啊。。。
【在 l***4 的大作中提到】 : ArrayList result = new ArrayList(); : HashSet set = new HashSet(); : 这两个应该是: : List result = new ArrayList(); : Set set = new HashSet(); : 这样比较好吧,用多态
|
l***4 发帖数: 1788 | 20 也可能根本不缺人。
【在 A****0 的大作中提到】 : 难道这就是G拒人的理由啊。。。
|
|
|
A****0 发帖数: 1073 | 21 十分感谢!
可问题是,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();
|
h*********o 发帖数: 230 | |
a******u 发帖数: 14 | 23 SET并不是写Test case的,你举那么多例子很可能浪费时间了。 |
A****0 发帖数: 1073 | 24 我讲了三种方法:
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 的大作中提到】 : 也可能你没说不用额外空间的做法??
|
p****e 发帖数: 3548 | 25 看看人家讨论吧
http://stackoverflow.com/questions/14040331/remove-duplicate-st
就是
set.addall(string);
return list(set);
你的解法是contains call了两次
【在 A****0 的大作中提到】 : 十分感谢! : 可问题是,function的signature是面试官给的啊。。我只能如此写下去。 : 可能真的要用return new ArrayList(set);?
|
A****0 发帖数: 1073 | 26 是面试官让我写test case的,
面试官:请写一些test case
我:blackbox or whitebox?
面试官:blackbox
我:functional or non-functional
面试官:functional
然后就开始写,写了20个test case后他说好了,我们已经有足够的test case了,时间
也差不多了
【在 a******u 的大作中提到】 : SET并不是写Test case的,你举那么多例子很可能浪费时间了。
|
f******o 发帖数: 1505 | 27 我也发现了现在 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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
A****0 发帖数: 1073 | 28 这个真的是我的误区,感谢!
看来用LinkedHashSet可以maintain order
【在 p****e 的大作中提到】 : 看看人家讨论吧 : http://stackoverflow.com/questions/14040331/remove-duplicate-st : 就是 : set.addall(string); : return list(set); : 你的解法是contains call了两次
|
m*****n 发帖数: 204 | 29 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;i
String 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
|
A****0 发帖数: 1073 | 30 万分感谢!
其实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
|
|
|
s********r 发帖数: 176 | 31 这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有,
现在都Java8 了好伐, 至少也得看看java 7的新的东东吧,
HashSet set = new HashSet(); // should be coded as
Set set = new HashSet<>();
还有其他的问题,大家也说了。一起加油吧! |
n*****n 发帖数: 5277 | |
y**********a 发帖数: 824 | 33 public static List RemoveDup(List list){
return new ArrayList(new LinkedHashSet(list));
} |
y***n 发帖数: 1594 | |
y***n 发帖数: 1594 | 35 微软也都写Java吗,楼主可能对Java的API没有那么熟。
【在 A****0 的大作中提到】 : 简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一 : 年了
|
m****v 发帖数: 88 | 36 one question is not enough man |
l***c 发帖数: 55 | 37 这个是哪个帖子?
还没看到过。
【在 y***n 的大作中提到】 : 这个和前几天那个清华的贴那个更不合理。。
|
A****0 发帖数: 1073 | 38 平时用的是C#,为了G拿Java苦练刷题
【在 y***n 的大作中提到】 : 微软也都写Java吗,楼主可能对Java的API没有那么熟。
|
y***n 发帖数: 1594 | 39 是不是c++比较中性话一点。。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
A****0 发帖数: 1073 | 40 不觉得,C++的memory leak太难办了,没GC不好用。
【在 y***n 的大作中提到】 : 是不是c++比较中性话一点。。
|
|
|
y***n 发帖数: 1594 | 41 仅仅针对刷题。
【在 A****0 的大作中提到】 : 不觉得,C++的memory leak太难办了,没GC不好用。
|
A****0 发帖数: 1073 | 42 那感觉还好,不用考虑那么多polymorphism。
【在 y***n 的大作中提到】 : 仅仅针对刷题。
|
A*****i 发帖数: 3587 | 43 这跟只会刷题没有任何关系。
这人就是nitpick,至于多态你真是想多了。
人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
,
【在 s********r 的大作中提到】 : 这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有, : 现在都Java8 了好伐, 至少也得看看java 7的新的东东吧, : HashSet set = new HashSet(); // should be coded as : Set set = new HashSet<>(); : 还有其他的问题,大家也说了。一起加油吧!
|
y***n 发帖数: 1594 | 44 Re 这个,终于找到一个说出我不敢说出来的人了。。
【在 A*****i 的大作中提到】 : 这跟只会刷题没有任何关系。 : 这人就是nitpick,至于多态你真是想多了。 : 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。 : : ,
|
l*****a 发帖数: 14598 | 45 他说得没错阿
OO的原则就是programming to interface
【在 A*****i 的大作中提到】 : 这跟只会刷题没有任何关系。 : 这人就是nitpick,至于多态你真是想多了。 : 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。 : : ,
|
g**e 发帖数: 6127 | 46 LZ那段代码真做CR会被挑一堆毛病,没通过电面不算冤
【在 l*****a 的大作中提到】 : 他说得没错阿 : OO的原则就是programming to interface
|
c******f 发帖数: 243 | 47 这code过不了CR
interface
for loop用index了
java 1.7用 <>了 |
c******f 发帖数: 243 | |
A****0 发帖数: 1073 | 49 的确,看来刷题练习时要用Checkstyle
【在 c******f 的大作中提到】 : 这code过不了CR : interface : for loop用index了 : java 1.7用 <>了
|
A*****i 发帖数: 3587 | 50 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
的。
就第一句判断object是不是null的,我们production里从来不会那么做。
因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
【在 l*****a 的大作中提到】 : 他说得没错阿 : OO的原则就是programming to interface
|
|
|
y******0 发帖数: 93 | 51 你可能碰到了哪个兄弟的绿卡广告。
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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
A****0 发帖数: 1073 | 52 感觉prod code里如果method是public的,也要做null check(因为你不知道谁会叫这
个method)
当然private的就不用了。
【在 A*****i 的大作中提到】 : 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人 : 的。 : 就第一句判断object是不是null的,我们production里从来不会那么做。 : 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用 : 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些 : convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
|
D****g 发帖数: 6 | 53
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 的大作中提到】 : 的确是有几个问题。
|
h*****a 发帖数: 1718 | 54 既然是面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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
h*****a 发帖数: 1718 | 55 不要忽视这种小地方啊。这种多态的code如果没用最base的type在FLG这样的公司里是
肯定过不了code review的。
其实这种code现在都应该用Guava.不会Guava说不定会被Google认为是一个weakness.
【在 A*****i 的大作中提到】 : 这跟只会刷题没有任何关系。 : 这人就是nitpick,至于多态你真是想多了。 : 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。 : : ,
|
h*****a 发帖数: 1718 | 56 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
数的有效性的。所以做参数的check是一个面试考察的基本点。
至于真正的production code,比较好的写法都是用Google library的Preconditions,
要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
熟练的。
【在 A*****i 的大作中提到】 : 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人 : 的。 : 就第一句判断object是不是null的,我们production里从来不会那么做。 : 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用 : 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些 : convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
|
A*****i 发帖数: 3587 | 57 我只说我们的prod code,我们是写node的
G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了
考察convention不如出个改错题不是更直观?
【在 h*****a 的大作中提到】 : 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参 : 数的有效性的。所以做参数的check是一个面试考察的基本点。 : 至于真正的production code,比较好的写法都是用Google library的Preconditions, : 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较 : 熟练的。
|
w*********7 发帖数: 19 | 58 很有可能你没有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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
e***g 发帖数: 1696 | 59 就是不想招人,但是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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
h*******e 发帖数: 1377 | 60 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
这个面试要求这些,小公司代码标准比较loose的怎么办哦。
【在 h*****a 的大作中提到】 : 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参 : 数的有效性的。所以做参数的check是一个面试考察的基本点。 : 至于真正的production code,比较好的写法都是用Google library的Preconditions, : 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较 : 熟练的。
|
|
|
A*****i 发帖数: 3587 | 61 字符限制很多公司都有我们也做限制,这些东西都是lint干的
【在 h*******e 的大作中提到】 : 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~ : 这个面试要求这些,小公司代码标准比较loose的怎么办哦。
|
h*****a 发帖数: 1718 | 62 G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public
API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输
出,runtime exception是肯定不算正确输出的。
当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。
【在 A*****i 的大作中提到】 : 我只说我们的prod code,我们是写node的 : G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了 : 考察convention不如出个改错题不是更直观?
|
h*****a 发帖数: 1718 | 63 字符限制和bug不一样,一般不是面试考察的。
小公司确实可能不重视这种coding style上比较细节的东西。甚至可能因为你写的太学
院风格而锯掉。所以具体情况要具体分析。
【在 h*******e 的大作中提到】 : 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~ : 这个面试要求这些,小公司代码标准比较loose的怎么办哦。
|
l***4 发帖数: 1788 | 64 大牛来啦
好。
【在 h*****a 的大作中提到】 : G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public : API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输 : 出,runtime exception是肯定不算正确输出的。 : 当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。
|
A****0 发帖数: 1073 | 65 没错,我开始跟他讨论了三种方法:
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
|
r*******h 发帖数: 139 | 66 你给HR说面试C#就行了,我当时就是全用C#写的。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
r*******e 发帖数: 971 | 67 我再补个刀,前面如果是null的话
可以这样
return Collections.emptyList(); |
c******f 发帖数: 243 | 68 我接着楼上补一下,
如果一定要return null,要加个@CheckForNull |
b******7 发帖数: 92 | 69 我觉得最大的可能是出这道题之前面试官可能对你的期望值已经很低了,所以出了个简
单题,容不得出一点问题。之前看到过一个帖子分析过,当你碰到简单题时你悲剧的可
能性估计就比较大了 |
g*****g 发帖数: 34805 | 70 if(list == null) {
throw new IllegalArgumentException();
}
return Lists.newArrayList(Sets.newLinkedHashSet(list));
狗的人要是敢说不对,让他们内部打一架再来。 |
|
|
y**********u 发帖数: 6366 | 71 狗的人很多不用guava啊
【在 g*****g 的大作中提到】 : if(list == null) { : throw new IllegalArgumentException(); : } : return Lists.newArrayList(Sets.newLinkedHashSet(list)); : 狗的人要是敢说不对,让他们内部打一架再来。
|
g*****g 发帖数: 34805 | 72 用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。
【在 y**********u 的大作中提到】 : 狗的人很多不用guava啊
|
z****e 发帖数: 54598 | 73 还有一个问题
不需要判断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();
|
z****e 发帖数: 54598 | 74 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;
} |
z****e 发帖数: 54598 | 75 android上那样搞就不好了
apk size会增加
【在 g*****g 的大作中提到】 : 用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。
|
d****n 发帖数: 12461 | 76 总算露馅了。这写得分明就很c++好吧。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
d****n 发帖数: 12461 | 77 总算露馅了。这写得分明就很c++好吧。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
y***n 发帖数: 1594 | 78 用C#,是不是用 var 就可以了,Java好像有没有类似的东西。
等你把你C#坑空出来,让个我好不好。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
d*****y 发帖数: 205 | 79 因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的,
因此上很多电面开始时都是问一个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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
y***n 发帖数: 1594 | 80 这个很有道理。。
久,
【在 d*****y 的大作中提到】 : 因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的, : 因此上很多电面开始时都是问一个warm up问题,比较简单,考察基本功,好的面试者 : 应该十几分钟搞定进入下一题。这样的题目对比较强的人是个热身而且能缓解紧张情绪 : ,对弱的人来说,讨论一下怎么做时间很快过去了也不至于太尴尬。 : 你的情况,可能是interviewer没有掌握好时间,也可能你自己在这一题目花时间太久, : : non : HR
|
|
|
w********s 发帖数: 1570 | 81 看来据你是对了
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
|
l****i 发帖数: 2772 | 82 细节是很重要,不过我还是觉得,就是lz遇到的面试官想据人。 |
c******3 发帖数: 296 | 83 这题应该不是考查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
|
J*******o 发帖数: 741 | 84 抛砖引玉一下, 判断参数的时候有没有必要判断list的size?
if(list == null || list.size() < 2){
return list;
} |
S*****s 发帖数: 2290 | 85 加油
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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
p****x 发帖数: 23 | 86 这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;i
String 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. |
c***n 发帖数: 809 | 87 list.get(i)就是一个可以毙了你的
人如果给你一linkedlist, 你这get不傻眼了 |
d****n 发帖数: 12461 | 88 你们允许throw?
【在 g*****g 的大作中提到】 : if(list == null) { : throw new IllegalArgumentException(); : } : return Lists.newArrayList(Sets.newLinkedHashSet(list)); : 狗的人要是敢说不对,让他们内部打一架再来。
|
l*****a 发帖数: 14598 | 89 really?
go back to search related document,please
【在 c***n 的大作中提到】 : list.get(i)就是一个可以毙了你的 : 人如果给你一linkedlist, 你这get不傻眼了
|
A****0 发帖数: 1073 | 90 的确应该用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
|
|
|
G********f 发帖数: 17 | 91 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
|
y***n 发帖数: 1594 | 92 呵呵, 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.
|
z****e 发帖数: 54598 | 93 强循环本质就是iterator
for(String s:list)
用弱循环的话
可以考虑list.remove(0)的方式来搞
while(list.size()>0){
String s = list.remove(0);
...
}
然后用linkedlist就不会更改其顺序了
而且add的效率可达o(1) |
z****e 发帖数: 54598 | 94 有catch就好了
查log我还更喜欢看exception
信息多,而不是debug info/warning
【在 d****n 的大作中提到】 : 你们允许throw?
|
c***n 发帖数: 809 | 95 靠, 你时间都花在灌水上了, 首先, 你这种去看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
|
l*****a 发帖数: 14598 | 96 谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
不过请把下面这段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));
}
然后再看看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);
|
n**d 发帖数: 26 | 97 看到最后才看到有人说起get的事儿,我java只学过一学期还以为自己记错了呢。。
String str = list.get(i);这个遍历完应该是n2不是O(n)吧 |
c***n 发帖数: 809 | 98 有空再跑你的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)); : }
|
c***n 发帖数: 809 | 99 除了加个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;i
System.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)); : }
|
m*****k 发帖数: 731 | 100 yes,
this looks more professional
【在 l***4 的大作中提到】 : 大牛来啦 : : 好。
|
|
|
m*****k 发帖数: 731 | 101 因为在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的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
|
s*i 发帖数: 5025 | 102 这个要上升到哲学问题了啊。
【在 m*****k 的大作中提到】 : 因为在prod code里面任何一个函数都是默认保证参数是有效的 : this is dangerous, : how can you guarantee each caller knows this and always keeps that in mind?
|
m*****k 发帖数: 731 | 103 not for arrayList
【在 w********s 的大作中提到】 : 看来据你是对了 : list.get(i)速度很慢的,因为要一个个遍历。 : 用iterator。
|
A*****i 发帖数: 3587 | 104 lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里?
这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?
【在 m*****k 的大作中提到】 : 因为在prod code里面任何一个函数都是默认保证参数是有效的 : this is dangerous, : how can you guarantee each caller knows this and always keeps that in mind?
|
m*****k 发帖数: 731 | 105 稀奇古怪的问题?
自以为是?
null check is a common practice,
再说我也不是唯一一个觉得应该null check的,
兄弟,就题论题,
if I offended you, I apologize.
【在 A*****i 的大作中提到】 : lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里? : 这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?
|
A*****i 发帖数: 3587 | 106 我可没有就题论题,每个公司prod code的内部convention是不一样的。
我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的
面试者那就是故意找茬。
一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个
的。
【在 m*****k 的大作中提到】 : 稀奇古怪的问题? : 自以为是? : null check is a common practice, : 再说我也不是唯一一个觉得应该null check的, : 兄弟,就题论题, : if I offended you, I apologize.
|
h*****a 发帖数: 1718 | 107 没啥故意找茬吧。你去面G就要follow人家的规矩,至于是不是合理不在讨论之内,因
为这不能帮你拿到offer.你可以说你不喜欢G所以不去G面,或者你很牛早就有了更好的
选择,totally fine。但这个帖子的lz面G fail了过来问一下想找出原因,大家给的很
多原因都是reasonable的。也许这个同学或者旁观的同学看了之后能有所启发,下次面
G或者相似的公司就能避免类似的错误拿到offer.
现在面试落入了做题的pattern,好坏不能一概而论。但如果在事业起步阶段因为做题
拿到一个不错的offer可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同
高考一样。
【在 A*****i 的大作中提到】 : 我可没有就题论题,每个公司prod code的内部convention是不一样的。 : 我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的 : 面试者那就是故意找茬。 : 一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个 : 的。
|
y**********u 发帖数: 6366 | 108 感觉现在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可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同 : 高考一样。
|
A*****i 发帖数: 3587 | 109 背书做题都比和面试人周旋要容易的多。
因为答案是固定的,或者相对固定的。
现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了
effective
【在 y**********u 的大作中提到】 : 感觉现在complain面试官太多了 : 其实能做题也不一定是坏事,想想09年春天的时候,版上的主题是怎么背下effective : C++/more effective C++去面bloomberg : : 如同 : 家的 : 个个
|
y**********u 发帖数: 6366 | 110 感觉现在机会还是很多啊,招人的公司不少
当然挑的面试官谁都经常能遇到
【在 A*****i 的大作中提到】 : 背书做题都比和面试人周旋要容易的多。 : 因为答案是固定的,或者相对固定的。 : 现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了 : : effective
|
|
|
k*******6 发帖数: 103 | 111 我只会python,最近在学java,看到这code的第一反应就是那个判断好多余。。。翻了
4页才有人提,我还以为java真得这么写呢。。。
【在 z****e 的大作中提到】 : 还有一个问题 : 不需要判断set.contains : 无脑往set里面塞就好了 : set自己会去重 : 这题有一个陷阱就是如果要求对原list做处理的话 : 挨个remove的话,用强循环会出问题 : 一个常见的解决方案就是从后玩前iterate : 或者每次都remove(0)
|
A****0 发帖数: 1073 | 112 上周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
电话说依然被拒。。。
我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。 |
l*****a 发帖数: 14598 | 113 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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
d********t 发帖数: 9628 | 114 简历不行?面试走个过场。
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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
F**********t 发帖数: 80 | 115 觉得sf各大startup是这么干的。。。
【在 d********t 的大作中提到】 : 简历不行?面试走个过场。 : : non : HR
|
A****0 发帖数: 1073 | 116 上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
String str = list.get(i);
if(!set.contains(str)){
set.add(str);
result.add(str);
}
}
return result;
}
【在 l*****a 的大作中提到】 : bless : 上你的code看看吧 : 另外google真的不需要什么人,招人都是装样子 : 你去申FL不好吗? : : non : HR
|
A****0 发帖数: 1073 | 117 简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一
年了
【在 d********t 的大作中提到】 : 简历不行?面试走个过场。 : : non : HR
|
l*****a 发帖数: 14598 | 118 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
|
A****0 发帖数: 1073 | 119 请赐教,真的很想知道如何改正
【在 l*****a 的大作中提到】 : there are a few issues
|
y******0 发帖数: 93 | 120 的确是有几个问题。
【在 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
|
|
|
l*****a 发帖数: 14598 | 121 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;i
String 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
|
h*******e 发帖数: 1377 | |
l*****a 发帖数: 14598 | 123 for(int i=0;i
String 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();
|
l*****a 发帖数: 14598 | 124 请赐教.
【在 h*******e 的大作中提到】 : 还有更简的~~~方法。
|
A****0 发帖数: 1073 | 125 这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊
【在 l*****a 的大作中提到】 : 请赐教.
|
h*******e 发帖数: 1377 | 126 好吧。。。没有了,看错了以为类似 leetcode rmv duplicate 呢。如果全局
duplicate那就是hash要么 如果是adjacent duplicate 就是curI 1开始 size 结束,
curI-1 curI, newI三个指针就行吧。
【在 l*****a 的大作中提到】 : 请赐教.
|
P**********r 发帖数: 755 | 127 俺昨天写了一个x^y
然后还讲了N个数取topK
杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光 |
l***4 发帖数: 1788 | 128 ArrayList result = new ArrayList();
HashSet set = new HashSet();
这两个应该是:
List result = new ArrayList();
Set set = new HashSet();
这样比较好吧,用多态
【在 A****0 的大作中提到】 : 这只是个syntactic sugar,而且JDK 1.4以前的版本也不支持啊
|
A****0 发帖数: 1073 | 129 这个题最近也常见啊 logN
【在 P**********r 的大作中提到】 : 俺昨天写了一个x^y : 然后还讲了N个数取topK : 杯具的是我居然把quickselect的复杂度讲成了NlogN。求扇耳光
|
A****0 发帖数: 1073 | 130 难道这就是G拒人的理由啊。。。
【在 l***4 的大作中提到】 : ArrayList result = new ArrayList(); : HashSet set = new HashSet(); : 这两个应该是: : List result = new ArrayList(); : Set set = new HashSet(); : 这样比较好吧,用多态
|
|
|
l***4 发帖数: 1788 | 131 也可能根本不缺人。
【在 A****0 的大作中提到】 : 难道这就是G拒人的理由啊。。。
|
A****0 发帖数: 1073 | 132 十分感谢!
可问题是,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();
|
h*********o 发帖数: 230 | |
a******u 发帖数: 14 | 134 SET并不是写Test case的,你举那么多例子很可能浪费时间了。 |
A****0 发帖数: 1073 | 135 我讲了三种方法:
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 的大作中提到】 : 也可能你没说不用额外空间的做法??
|
p****e 发帖数: 3548 | 136 看看人家讨论吧
http://stackoverflow.com/questions/14040331/remove-duplicate-st
就是
set.addall(string);
return list(set);
你的解法是contains call了两次
【在 A****0 的大作中提到】 : 十分感谢! : 可问题是,function的signature是面试官给的啊。。我只能如此写下去。 : 可能真的要用return new ArrayList(set);?
|
A****0 发帖数: 1073 | 137 是面试官让我写test case的,
面试官:请写一些test case
我:blackbox or whitebox?
面试官:blackbox
我:functional or non-functional
面试官:functional
然后就开始写,写了20个test case后他说好了,我们已经有足够的test case了,时间
也差不多了
【在 a******u 的大作中提到】 : SET并不是写Test case的,你举那么多例子很可能浪费时间了。
|
f******o 发帖数: 1505 | 138 我也发现了现在 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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
A****0 发帖数: 1073 | 139 这个真的是我的误区,感谢!
看来用LinkedHashSet可以maintain order
【在 p****e 的大作中提到】 : 看看人家讨论吧 : http://stackoverflow.com/questions/14040331/remove-duplicate-st : 就是 : set.addall(string); : return list(set); : 你的解法是contains call了两次
|
m*****n 发帖数: 204 | 140 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;i
String 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
|
|
|
A****0 发帖数: 1073 | 141 万分感谢!
其实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
|
s********r 发帖数: 176 | 142 这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有,
现在都Java8 了好伐, 至少也得看看java 7的新的东东吧,
HashSet set = new HashSet(); // should be coded as
Set set = new HashSet<>();
还有其他的问题,大家也说了。一起加油吧! |
n*****n 发帖数: 5277 | |
y**********a 发帖数: 824 | 144 public static List RemoveDup(List list){
return new ArrayList(new LinkedHashSet(list));
} |
y***n 发帖数: 1594 | |
y***n 发帖数: 1594 | 146 微软也都写Java吗,楼主可能对Java的API没有那么熟。
【在 A****0 的大作中提到】 : 简历上有个致命伤——在微软Windows做过一年SDET,但现已经在微软Bing组当SDE近一 : 年了
|
m****v 发帖数: 88 | 147 one question is not enough man |
l***c 发帖数: 55 | 148 这个是哪个帖子?
还没看到过。
【在 y***n 的大作中提到】 : 这个和前几天那个清华的贴那个更不合理。。
|
A****0 发帖数: 1073 | 149 平时用的是C#,为了G拿Java苦练刷题
【在 y***n 的大作中提到】 : 微软也都写Java吗,楼主可能对Java的API没有那么熟。
|
y***n 发帖数: 1594 | 150 是不是c++比较中性话一点。。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
|
|
A****0 发帖数: 1073 | 151 不觉得,C++的memory leak太难办了,没GC不好用。
【在 y***n 的大作中提到】 : 是不是c++比较中性话一点。。
|
y***n 发帖数: 1594 | 152 仅仅针对刷题。
【在 A****0 的大作中提到】 : 不觉得,C++的memory leak太难办了,没GC不好用。
|
A****0 发帖数: 1073 | 153 那感觉还好,不用考虑那么多polymorphism。
【在 y***n 的大作中提到】 : 仅仅针对刷题。
|
A*****i 发帖数: 3587 | 154 这跟只会刷题没有任何关系。
这人就是nitpick,至于多态你真是想多了。
人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。
,
【在 s********r 的大作中提到】 : 这就是只会涮题的结果,OO中的polymophsm 根本就不清楚,拒你是有原因的。还有, : 现在都Java8 了好伐, 至少也得看看java 7的新的东东吧, : HashSet set = new HashSet(); // should be coded as : Set set = new HashSet<>(); : 还有其他的问题,大家也说了。一起加油吧!
|
y***n 发帖数: 1594 | 155 Re 这个,终于找到一个说出我不敢说出来的人了。。
【在 A*****i 的大作中提到】 : 这跟只会刷题没有任何关系。 : 这人就是nitpick,至于多态你真是想多了。 : 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。 : : ,
|
l*****a 发帖数: 14598 | 156 他说得没错阿
OO的原则就是programming to interface
【在 A*****i 的大作中提到】 : 这跟只会刷题没有任何关系。 : 这人就是nitpick,至于多态你真是想多了。 : 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。 : : ,
|
g**e 发帖数: 6127 | 157 LZ那段代码真做CR会被挑一堆毛病,没通过电面不算冤
【在 l*****a 的大作中提到】 : 他说得没错阿 : OO的原则就是programming to interface
|
c******f 发帖数: 243 | 158 这code过不了CR
interface
for loop用index了
java 1.7用 <>了 |
c******f 发帖数: 243 | |
A****0 发帖数: 1073 | 160 的确,看来刷题练习时要用Checkstyle
【在 c******f 的大作中提到】 : 这code过不了CR : interface : for loop用index了 : java 1.7用 <>了
|
|
|
A*****i 发帖数: 3587 | 161 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人
的。
就第一句判断object是不是null的,我们production里从来不会那么做。
因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用
的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些
convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
【在 l*****a 的大作中提到】 : 他说得没错阿 : OO的原则就是programming to interface
|
y******0 发帖数: 93 | 162 你可能碰到了哪个兄弟的绿卡广告。
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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
A****0 发帖数: 1073 | 163 感觉prod code里如果method是public的,也要做null check(因为你不知道谁会叫这
个method)
当然private的就不用了。
【在 A*****i 的大作中提到】 : 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人 : 的。 : 就第一句判断object是不是null的,我们production里从来不会那么做。 : 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用 : 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些 : convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
|
D****g 发帖数: 6 | 164
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 的大作中提到】 : 的确是有几个问题。
|
h*****a 发帖数: 1718 | 165 既然是面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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
h*****a 发帖数: 1718 | 166 不要忽视这种小地方啊。这种多态的code如果没用最base的type在FLG这样的公司里是
肯定过不了code review的。
其实这种code现在都应该用Guava.不会Guava说不定会被Google认为是一个weakness.
【在 A*****i 的大作中提到】 : 这跟只会刷题没有任何关系。 : 这人就是nitpick,至于多态你真是想多了。 : 人家要想拒随便找个理由就能拒了,所以LZ显然是来凑数的。 : : ,
|
h*****a 发帖数: 1718 | 167 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参
数的有效性的。所以做参数的check是一个面试考察的基本点。
至于真正的production code,比较好的写法都是用Google library的Preconditions,
要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较
熟练的。
【在 A*****i 的大作中提到】 : 你没懂,我的意思是,他那段电面代码如果真是想招人的面试是不会用这些东西来卡人 : 的。 : 就第一句判断object是不是null的,我们production里从来不会那么做。 : 因为在prod code里面任何一个函数都是默认保证参数是有效的,因为我们都是在调用 : 的时候判断参数。也就刷题时候会在function里面加一句if null之类的。这些 : convention的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
|
A*****i 发帖数: 3587 | 168 我只说我们的prod code,我们是写node的
G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了
考察convention不如出个改错题不是更直观?
【在 h*****a 的大作中提到】 : 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参 : 数的有效性的。所以做参数的check是一个面试考察的基本点。 : 至于真正的production code,比较好的写法都是用Google library的Preconditions, : 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较 : 熟练的。
|
w*********7 发帖数: 19 | 169 很有可能你没有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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
e***g 发帖数: 1696 | 170 就是不想招人,但是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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
|
|
h*******e 发帖数: 1377 | 171 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~
这个面试要求这些,小公司代码标准比较loose的怎么办哦。
【在 h*****a 的大作中提到】 : 你说的也不一定啊。光写一个API的话,你是没有什么calling convention保证输入参 : 数的有效性的。所以做参数的check是一个面试考察的基本点。 : 至于真正的production code,比较好的写法都是用Google library的Preconditions, : 要比lz的写法简洁一些。这些很多时候是用来检验candidate的coding是不是真正比较 : 熟练的。
|
A*****i 发帖数: 3587 | 172 字符限制很多公司都有我们也做限制,这些东西都是lint干的
【在 h*******e 的大作中提到】 : 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~ : 这个面试要求这些,小公司代码标准比较loose的怎么办哦。
|
h*****a 发帖数: 1718 | 173 G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public
API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输
出,runtime exception是肯定不算正确输出的。
当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。
【在 A*****i 的大作中提到】 : 我只说我们的prod code,我们是写node的 : G家不是号称不在乎语言么,我觉得问算法主要就是考察逻辑有没有bug。要是专门为了 : 考察convention不如出个改错题不是更直观?
|
h*****a 发帖数: 1718 | 174 字符限制和bug不一样,一般不是面试考察的。
小公司确实可能不重视这种coding style上比较细节的东西。甚至可能因为你写的太学
院风格而锯掉。所以具体情况要具体分析。
【在 h*******e 的大作中提到】 : 很多公司的code review标准不一样啊,据说g还有每行代码最大字符数的限制~~ : 这个面试要求这些,小公司代码标准比较loose的怎么办哦。
|
l***4 发帖数: 1788 | 175 大牛来啦
好。
【在 h*****a 的大作中提到】 : G是不在乎语言,但既然用Java回答问题,code就要符合Java的规范。而且写public : API的话,不check输入参数肯定是bug啊。bug free就是要对所有可能输入有正确的输 : 出,runtime exception是肯定不算正确输出的。 : 当然,这些确实都是小节。但也都是interview所考察的,大家还是重视这些细节为好。
|
A****0 发帖数: 1073 | 176 没错,我开始跟他讨论了三种方法:
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
|
r*******h 发帖数: 139 | 177 你给HR说面试C#就行了,我当时就是全用C#写的。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
r*******e 发帖数: 971 | 178 我再补个刀,前面如果是null的话
可以这样
return Collections.emptyList(); |
c******f 发帖数: 243 | 179 我接着楼上补一下,
如果一定要return null,要加个@CheckForNull |
b******7 发帖数: 92 | 180 我觉得最大的可能是出这道题之前面试官可能对你的期望值已经很低了,所以出了个简
单题,容不得出一点问题。之前看到过一个帖子分析过,当你碰到简单题时你悲剧的可
能性估计就比较大了 |
|
|
g*****g 发帖数: 34805 | 181 if(list == null) {
throw new IllegalArgumentException();
}
return Lists.newArrayList(Sets.newLinkedHashSet(list));
狗的人要是敢说不对,让他们内部打一架再来。 |
y**********u 发帖数: 6366 | 182 狗的人很多不用guava啊
【在 g*****g 的大作中提到】 : if(list == null) { : throw new IllegalArgumentException(); : } : return Lists.newArrayList(Sets.newLinkedHashSet(list)); : 狗的人要是敢说不对,让他们内部打一架再来。
|
g*****g 发帖数: 34805 | 183 用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。
【在 y**********u 的大作中提到】 : 狗的人很多不用guava啊
|
z****e 发帖数: 54598 | 184 还有一个问题
不需要判断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();
|
z****e 发帖数: 54598 | 185 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;
} |
z****e 发帖数: 54598 | 186 android上那样搞就不好了
apk size会增加
【在 g*****g 的大作中提到】 : 用不用另说,政治先正确了。要是嫌有性能问题就是自己打脸。
|
d****n 发帖数: 12461 | 187 总算露馅了。这写得分明就很c++好吧。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
d****n 发帖数: 12461 | 188 总算露馅了。这写得分明就很c++好吧。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
y***n 发帖数: 1594 | 189 用C#,是不是用 var 就可以了,Java好像有没有类似的东西。
等你把你C#坑空出来,让个我好不好。
【在 A****0 的大作中提到】 : 平时用的是C#,为了G拿Java苦练刷题
|
d*****y 发帖数: 205 | 190 因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的,
因此上很多电面开始时都是问一个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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
|
|
y***n 发帖数: 1594 | 191 这个很有道理。。
久,
【在 d*****y 的大作中提到】 : 因为一般来说电面的人员比较杂,几乎可以说面几十个才能有一个可以进入下一轮的, : 因此上很多电面开始时都是问一个warm up问题,比较简单,考察基本功,好的面试者 : 应该十几分钟搞定进入下一题。这样的题目对比较强的人是个热身而且能缓解紧张情绪 : ,对弱的人来说,讨论一下怎么做时间很快过去了也不至于太尴尬。 : 你的情况,可能是interviewer没有掌握好时间,也可能你自己在这一题目花时间太久, : : non : HR
|
w********s 发帖数: 1570 | 192 看来据你是对了
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
|
l****i 发帖数: 2772 | 193 细节是很重要,不过我还是觉得,就是lz遇到的面试官想据人。 |
c******3 发帖数: 296 | 194 这题应该不是考查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
|
J*******o 发帖数: 741 | 195 抛砖引玉一下, 判断参数的时候有没有必要判断list的size?
if(list == null || list.size() < 2){
return list;
} |
S*****s 发帖数: 2290 | 196 加油
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 : 电话说依然被拒。。。 : 我真的很无语,不知道是哪儿出的问题,还是自己有严重的误区。
|
p****x 发帖数: 23 | 197 这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;i
String 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. |
c***n 发帖数: 809 | 198 list.get(i)就是一个可以毙了你的
人如果给你一linkedlist, 你这get不傻眼了 |
d****n 发帖数: 12461 | 199 你们允许throw?
【在 g*****g 的大作中提到】 : if(list == null) { : throw new IllegalArgumentException(); : } : return Lists.newArrayList(Sets.newLinkedHashSet(list)); : 狗的人要是敢说不对,让他们内部打一架再来。
|
l*****a 发帖数: 14598 | 200 really?
go back to search related document,please
【在 c***n 的大作中提到】 : list.get(i)就是一个可以毙了你的 : 人如果给你一linkedlist, 你这get不傻眼了
|
|
|
A****0 发帖数: 1073 | 201 的确应该用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
|
G********f 发帖数: 17 | 202 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
|
y***n 发帖数: 1594 | 203 呵呵, 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.
|
z****e 发帖数: 54598 | 204 强循环本质就是iterator
for(String s:list)
用弱循环的话
可以考虑list.remove(0)的方式来搞
while(list.size()>0){
String s = list.remove(0);
...
}
然后用linkedlist就不会更改其顺序了
而且add的效率可达o(1) |
z****e 发帖数: 54598 | 205 有catch就好了
查log我还更喜欢看exception
信息多,而不是debug info/warning
【在 d****n 的大作中提到】 : 你们允许throw?
|
c***n 发帖数: 809 | 206 靠, 你时间都花在灌水上了, 首先, 你这种去看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
|
l*****a 发帖数: 14598 | 207 谢谢你批评指点,我确实灌水比较多,只能一直骑驴找马。
不过请把下面这段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));
}
然后再看看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);
|
n**d 发帖数: 26 | 208 看到最后才看到有人说起get的事儿,我java只学过一学期还以为自己记错了呢。。
String str = list.get(i);这个遍历完应该是n2不是O(n)吧 |
c***n 发帖数: 809 | 209 有空再跑你的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)); : }
|
c***n 发帖数: 809 | 210 这个确实能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)); : }
|
|
|
m*****k 发帖数: 731 | 211 yes,
this looks more professional
【在 l***4 的大作中提到】 : 大牛来啦 : : 好。
|
m*****k 发帖数: 731 | 212 因为在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的东西如果放在电面里面个人感觉根本就不是诚心来招人的。
|
s*i 发帖数: 5025 | 213 这个要上升到哲学问题了啊。
【在 m*****k 的大作中提到】 : 因为在prod code里面任何一个函数都是默认保证参数是有效的 : this is dangerous, : how can you guarantee each caller knows this and always keeps that in mind?
|
m*****k 发帖数: 731 | 214 not for arrayList
【在 w********s 的大作中提到】 : 看来据你是对了 : list.get(i)速度很慢的,因为要一个个遍历。 : 用iterator。
|
A*****i 发帖数: 3587 | 215 lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里?
这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?
【在 m*****k 的大作中提到】 : 因为在prod code里面任何一个函数都是默认保证参数是有效的 : this is dangerous, : how can you guarantee each caller knows this and always keeps that in mind?
|
m*****k 发帖数: 731 | 216 稀奇古怪的问题?
自以为是?
null check is a common practice,
再说我也不是唯一一个觉得应该null check的,
兄弟,就题论题,
if I offended you, I apologize.
【在 A*****i 的大作中提到】 : lol,你怎么保证你每次吃东西的时候都是用嘴而不是把饭塞到鼻子里? : 这个版为啥总有一些自以为是的人提一些稀奇古怪的问题?
|
A*****i 发帖数: 3587 | 217 我可没有就题论题,每个公司prod code的内部convention是不一样的。
我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的
面试者那就是故意找茬。
一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个
的。
【在 m*****k 的大作中提到】 : 稀奇古怪的问题? : 自以为是? : null check is a common practice, : 再说我也不是唯一一个觉得应该null check的, : 兄弟,就题论题, : if I offended you, I apologize.
|
h*****a 发帖数: 1718 | 218 没啥故意找茬吧。你去面G就要follow人家的规矩,至于是不是合理不在讨论之内,因
为这不能帮你拿到offer.你可以说你不喜欢G所以不去G面,或者你很牛早就有了更好的
选择,totally fine。但这个帖子的lz面G fail了过来问一下想找出原因,大家给的很
多原因都是reasonable的。也许这个同学或者旁观的同学看了之后能有所启发,下次面
G或者相似的公司就能避免类似的错误拿到offer.
现在面试落入了做题的pattern,好坏不能一概而论。但如果在事业起步阶段因为做题
拿到一个不错的offer可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同
高考一样。
【在 A*****i 的大作中提到】 : 我可没有就题论题,每个公司prod code的内部convention是不一样的。 : 我举那个例子就是要说明G家如果用他们家自己的convention来要求一个没有来过G家的 : 面试者那就是故意找茬。 : 一帮人还在帮着分析到底是get快一些还是慢一些我都要笑死了,做题都做傻了一个个 : 的。
|
y**********u 发帖数: 6366 | 219 感觉现在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可能让自己未来的路走的更顺利一些。至少大概率是如此。就如同 : 高考一样。
|
A*****i 发帖数: 3587 | 220 背书做题都比和面试人周旋要容易的多。
因为答案是固定的,或者相对固定的。
现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了
effective
【在 y**********u 的大作中提到】 : 感觉现在complain面试官太多了 : 其实能做题也不一定是坏事,想想09年春天的时候,版上的主题是怎么背下effective : C++/more effective C++去面bloomberg : : 如同 : 家的 : 个个
|
|
|
y**********u 发帖数: 6366 | 221 感觉现在机会还是很多啊,招人的公司不少
当然挑的面试官谁都经常能遇到
【在 A*****i 的大作中提到】 : 背书做题都比和面试人周旋要容易的多。 : 因为答案是固定的,或者相对固定的。 : 现在抱怨的多是因为确实僧多粥少,面试的每次都要挑,挑来挑去有的就纯是凭感觉了 : : effective
|
k*******6 发帖数: 103 | 222 我只会python,最近在学java,看到这code的第一反应就是那个判断好多余。。。翻了
4页才有人提,我还以为java真得这么写呢。。。
【在 z****e 的大作中提到】 : 还有一个问题 : 不需要判断set.contains : 无脑往set里面塞就好了 : set自己会去重 : 这题有一个陷阱就是如果要求对原list做处理的话 : 挨个remove的话,用强循环会出问题 : 一个常见的解决方案就是从后玩前iterate : 或者每次都remove(0)
|
x***j 发帖数: 75 | 223 不判断的话,原来的顺序是不是不能保留了?
【在 k*******6 的大作中提到】 : 我只会python,最近在学java,看到这code的第一反应就是那个判断好多余。。。翻了 : 4页才有人提,我还以为java真得这么写呢。。。
|
j*****o 发帖数: 394 | 224 我同意前面一个id的猜测:楼主做题太慢了
你自己也说题很简单,哪能需要45min呢
人家可能只是warm up....结果你把时间全花了。。。 |
c*5 发帖数: 130 | 225 这题肯定不是这样啊 毕竟是google面试, 肯定要用快慢指针linear那个解法, 最后返
回整个array的subarray?? leetcode那是返回长度 |
c*5 发帖数: 130 | 226 最终return
result.subList(0, leftPointer+1) ????? |