m***a 发帖数: 152 | 1 本人EE某苦逼专业,找工作很不容易,几个月以来得到了版上很多同学的热情帮助。现
在终于告一段落,发个面经回报本版。
我是通过版上一位“内推F,长期有效”的大哥拿到F面试的。第一次店面问了两个题。
第一个斐波那契数列,我写了一行的递归函数,interviewer说不好,又写了iteration
的。第二个问了全部合法括号组合那道题(leetcode原题)。
主要说第二次。问题是美式橄榄球,假设只有三种得分方式,touchdown:6分,PAT:1
分,conversion: 2分。比如说某队共得10分,那么得分情况可能是这样的:touchdown
暗喜。又是leetcode原题丫:combination sum。 于是二话不说开始直接敲入脑子里记
着的code,之前没有跟Interviewer有任何分析题的过程,敲code的时候解释也很少。
直接写了一个iterative的解法,花了十分钟左右。Interviewer看出我在背题,很不满
意,要我给每句话加上commend。我感觉情况不妙,还是硬着头皮把commend加上,又花
十分钟。但是Interviewer还是不满意,要我从头解释。等我一句一句跟他讲清楚,时
间也快到了。
Interviewer最后放出杀手锏,说我的输出根本不对!!!
大家也许记得,Leetcode里那道Combination Sum应该是这样输出的 6 2 1 1. 而这道
题要求的输出应该是 1 1 2 (代表一次Touch down, 一次conversion, 二次PAT)。
正当我要恍然大悟要改code的时候,Interviewer说时间快到不用改了,有什么问题赶
紧问他吧。我胡乱问个问题,草草结束了面试,感觉非常糟糕。果然,一个周末过后收
到据信。
教训:
切记一句老生常谈:面试是交流的过程,运用知识的过程。所以最重要的是把如何分析
问题,如何把思路变成code的过程说给Interview听,而不是仅仅写出一段死记硬背的
code。 所以大家在看到leetcode原题或者近似原题的时候千万不要匆忙开敲。花上一
分钟从头分析一下逻辑,再花上两三分钟跟interviewer交流一下idea是绝对必要的。
沉舟侧畔千帆过。希望最近面试的同学不要犯我的错误,充分发挥,多多拿大offer! |
y**********u 发帖数: 6366 | 2 要求太高了。。。
iteration
1
touchdown
【在 m***a 的大作中提到】 : 本人EE某苦逼专业,找工作很不容易,几个月以来得到了版上很多同学的热情帮助。现 : 在终于告一段落,发个面经回报本版。 : 我是通过版上一位“内推F,长期有效”的大哥拿到F面试的。第一次店面问了两个题。 : 第一个斐波那契数列,我写了一行的递归函数,interviewer说不好,又写了iteration : 的。第二个问了全部合法括号组合那道题(leetcode原题)。 : 主要说第二次。问题是美式橄榄球,假设只有三种得分方式,touchdown:6分,PAT:1 : 分,conversion: 2分。比如说某队共得10分,那么得分情况可能是这样的:touchdown : 暗喜。又是leetcode原题丫:combination sum。 于是二话不说开始直接敲入脑子里记 : 着的code,之前没有跟Interviewer有任何分析题的过程,敲code的时候解释也很少。 : 直接写了一个iterative的解法,花了十分钟左右。Interviewer看出我在背题,很不满
|
b*****c 发帖数: 1103 | 3 f家一般只有一次电面,可能你第一次面得不好,第二次又滑铁卢,需要加强技巧啊。 |
m***a 发帖数: 152 | 4 说得太对了,第一次人家问我challenge project, 我一激动开始跟人家讲论文里的
math,一直讲到interviewer打断我。。。现在想起来那个十分钟效果等于零,甚至是负的
【在 b*****c 的大作中提到】 : f家一般只有一次电面,可能你第一次面得不好,第二次又滑铁卢,需要加强技巧啊。
|
s**x 发帖数: 7506 | 5 Fibonacci 写递归函数一条普通公司都可以拒了。复杂度高到天上去了。 |
M**a 发帖数: 848 | 6 妈呀。。我今天电面也一句话没说。
不是在背题。实在是再思考啊!!!!!!!
本来脑子就不够用了。能想明白就不错了。 |
M**a 发帖数: 848 | 7 不是斐波那契。先递归一下。然后再改进一下么。。。。 |
s**x 发帖数: 7506 | 8
记得有本书讲dynamic programming 专门拿斐波那契作例子。自己Google 吧。
【在 M**a 的大作中提到】 : 不是斐波那契。先递归一下。然后再改进一下么。。。。
|
m***a 发帖数: 152 | 9 别担心,那说明你做的是难题。做出来就很加分了。给我的题都比较渣,再出问题就不
能原谅了
【在 M**a 的大作中提到】 : 妈呀。。我今天电面也一句话没说。 : 不是在背题。实在是再思考啊!!!!!!! : 本来脑子就不够用了。能想明白就不错了。
|
I*****x 发帖数: 84 | 10 虽然递归可以做,但是我觉得没有必要用递归做吧,用递归有点浪费时间了说实话,我
觉得用两次for loop就好了,大家还有什么更好的解法嘛 |
|
|
A*****i 发帖数: 3587 | 11 说实话第一次听到斐波那契的时候第一反应就是迭代
能不用递归就不用是我老的原则
【在 M**a 的大作中提到】 : 不是斐波那契。先递归一下。然后再改进一下么。。。。
|
l*****a 发帖数: 14598 | 12 介绍一下你这个iterative的solution吧
只会递归的,谢谢
iteration
1
touchdown
【在 m***a 的大作中提到】 : 本人EE某苦逼专业,找工作很不容易,几个月以来得到了版上很多同学的热情帮助。现 : 在终于告一段落,发个面经回报本版。 : 我是通过版上一位“内推F,长期有效”的大哥拿到F面试的。第一次店面问了两个题。 : 第一个斐波那契数列,我写了一行的递归函数,interviewer说不好,又写了iteration : 的。第二个问了全部合法括号组合那道题(leetcode原题)。 : 主要说第二次。问题是美式橄榄球,假设只有三种得分方式,touchdown:6分,PAT:1 : 分,conversion: 2分。比如说某队共得10分,那么得分情况可能是这样的:touchdown : 暗喜。又是leetcode原题丫:combination sum。 于是二话不说开始直接敲入脑子里记 : 着的code,之前没有跟Interviewer有任何分析题的过程,敲code的时候解释也很少。 : 直接写了一个iterative的解法,花了十分钟左右。Interviewer看出我在背题,很不满
|
l*********8 发帖数: 4642 | 13 这题可以这样吧?
void printCombination(int n) {
for (int td = 0; td * 6 <= n; ++td)
for (int conv = 0; td * 6 + conv * 2 <= n; ++ conv)
cout << td << ' ' << conv << ' ' << n - td*6 - conv*2 << endl;
}
【在 l*****a 的大作中提到】 : 介绍一下你这个iterative的solution吧 : 只会递归的,谢谢 : : iteration : 1 : touchdown
|
l*****a 发帖数: 14598 | 14 多种可能的时候怎么扩展
【在 l*********8 的大作中提到】 : 这题可以这样吧? : void printCombination(int n) { : for (int td = 0; td * 6 <= n; ++td) : for (int conv = 0; td * 6 + conv * 2 <= n; ++ conv) : cout << td << ' ' << conv << ' ' << n - td*6 - conv*2 << endl; : }
|
l*********8 发帖数: 4642 | 15 有更多可能的时候,就不能这样写了。
【在 l*****a 的大作中提到】 : 多种可能的时候怎么扩展
|
l*****a 发帖数: 14598 | 16 所以你这个写法在面试中绝对会悲剧的
【在 l*********8 的大作中提到】 : 有更多可能的时候,就不能这样写了。
|
l*********8 发帖数: 4642 | 17 看面试官吧
【在 l*****a 的大作中提到】 : 所以你这个写法在面试中绝对会悲剧的
|
a**********0 发帖数: 422 | 18 combination sum有个未知大小的candidate pool 所以递归
这个题目完全可以嵌套for loop完成啊
iteration
1
touchdown
【在 m***a 的大作中提到】 : 本人EE某苦逼专业,找工作很不容易,几个月以来得到了版上很多同学的热情帮助。现 : 在终于告一段落,发个面经回报本版。 : 我是通过版上一位“内推F,长期有效”的大哥拿到F面试的。第一次店面问了两个题。 : 第一个斐波那契数列,我写了一行的递归函数,interviewer说不好,又写了iteration : 的。第二个问了全部合法括号组合那道题(leetcode原题)。 : 主要说第二次。问题是美式橄榄球,假设只有三种得分方式,touchdown:6分,PAT:1 : 分,conversion: 2分。比如说某队共得10分,那么得分情况可能是这样的:touchdown : 暗喜。又是leetcode原题丫:combination sum。 于是二话不说开始直接敲入脑子里记 : 着的code,之前没有跟Interviewer有任何分析题的过程,敲code的时候解释也很少。 : 直接写了一个iterative的解法,花了十分钟左右。Interviewer看出我在背题,很不满
|
w****r 发帖数: 15252 | |
z*******g 发帖数: 103 | 20 可惜了这么好的机会,题都不难的。。。
我也是苦逼专业,正在改一份sde简历,只上过os, data structure加os,只有course
project,以lz的经验看能不能拿的fb这种公司的面试?
iteration
1
touchdown
【在 m***a 的大作中提到】 : 本人EE某苦逼专业,找工作很不容易,几个月以来得到了版上很多同学的热情帮助。现 : 在终于告一段落,发个面经回报本版。 : 我是通过版上一位“内推F,长期有效”的大哥拿到F面试的。第一次店面问了两个题。 : 第一个斐波那契数列,我写了一行的递归函数,interviewer说不好,又写了iteration : 的。第二个问了全部合法括号组合那道题(leetcode原题)。 : 主要说第二次。问题是美式橄榄球,假设只有三种得分方式,touchdown:6分,PAT:1 : 分,conversion: 2分。比如说某队共得10分,那么得分情况可能是这样的:touchdown : 暗喜。又是leetcode原题丫:combination sum。 于是二话不说开始直接敲入脑子里记 : 着的code,之前没有跟Interviewer有任何分析题的过程,敲code的时候解释也很少。 : 直接写了一个iterative的解法,花了十分钟左右。Interviewer看出我在背题,很不满
|
|
|
m*****k 发帖数: 731 | 21 @Test
public void testFootballCombinationSum(){
int[] scores = {6,2,1};
footballCombinationSum(10, scores);
}
*****************************************************
public void footballCombinationSum( int total , int[] scores){
Map scoresUsed = new HashMap<>();
footballCombinationSumNoDup( scoresUsed, total, scores, 0 );
}
private void footballCombinationSumNoDup( Map
scoresUsed , int total, int[] scores, int scoreStartIdx ){
if(total == 0){
System.out.println(scoresUsed);
return;
}
for (int i=scoreStartIdx; i
if (total>=scores[i]){
//increase count
Integer count = scoresUsed.get(scores[i]);
if(count == null){
count = 0;
}
scoresUsed.put(scores[i], count + 1);
footballCombinationSumNoDup( scoresUsed, total - scores[i],
scores, i );
//decrease count
count = scoresUsed.get(scores[i]);
scoresUsed.put(scores[i], count - 1);
}
}
}
**********************
{2=2, 6=1}
{1=2, 2=1, 6=1}
{1=4, 2=0, 6=1}
{1=0, 2=5, 6=0}
{1=2, 2=4, 6=0}
{1=4, 2=3, 6=0}
{1=6, 2=2, 6=0}
{1=8, 2=1, 6=0}
{1=10, 2=0, 6=0} |
z*******3 发帖数: 13709 | 22 用set不是更快,干嘛自己去实现
【在 m*****k 的大作中提到】 : @Test : public void testFootballCombinationSum(){ : int[] scores = {6,2,1}; : footballCombinationSum(10, scores); : } : ***************************************************** : public void footballCombinationSum( int total , int[] scores){ : : Map scoresUsed = new HashMap<>(); : footballCombinationSumNoDup( scoresUsed, total, scores, 0 );
|
m***a 发帖数: 152 | 23 握手,握手。我连Os,data structure也没上过呢。店面被拒,也没啥底气说经验。不
过看过不少版上成功人士的面经,感觉也是基础题比较多,多加练习,好好发挥,应该
有机会的。
不过话说回来,也只有FLG不停招人。我们自己专业机会少,只能去搏这个了。
course
【在 z*******g 的大作中提到】 : 可惜了这么好的机会,题都不难的。。。 : 我也是苦逼专业,正在改一份sde简历,只上过os, data structure加os,只有course : project,以lz的经验看能不能拿的fb这种公司的面试? : : iteration : 1 : touchdown
|
y***n 发帖数: 1594 | |
h**6 发帖数: 4160 | 25 要求 PAT + conversion <= touchdown 吗? |
m***a 发帖数: 152 | 26 我说我不懂足球,他就没有加其他限制
【在 h**6 的大作中提到】 : 要求 PAT + conversion <= touchdown 吗?
|
m*****k 发帖数: 731 | 27 人家要的是啥用了多少数目, 不是用了啥。
【在 z*******3 的大作中提到】 : 用set不是更快,干嘛自己去实现
|
y***n 发帖数: 1594 | |
T*****u 发帖数: 7103 | 29 dsf也可以吧。有重复的情况怎么解?比如[1 1 2] 和 【2 1 1】
【在 a**********0 的大作中提到】 : combination sum有个未知大小的candidate pool 所以递归 : 这个题目完全可以嵌套for loop完成啊 : : iteration : 1 : touchdown
|
y***n 发帖数: 1594 | |
|
|
h******8 发帖数: 278 | 31 话说楼主你leetcode原题随便一道都能住,记性够好的. |
l**********7 发帖数: 215 | 32 should be just counting,
if sequence is considered, the difficulty is another level
【在 y***n 的大作中提到】 : 这个不是重复。得分的顺序不一样。
|
z****e 发帖数: 54598 | 33 实现一下equals&hashcode方法,扔到set里自动去重
本质上跟map是一样的,只要看到有去重的需求,就想到用set
【在 m*****k 的大作中提到】 : 人家要的是啥用了多少数目, 不是用了啥。
|