NV Paypal G F面经(F G onsite我不能透题 对不起)# JobHunting - 待字闺中
n*k
1 楼
国内数学本科,新加坡计算机博士,读到第三年末不想读了,开始找工作。找了一年,终于找到了脸书,
这里面的起伏辛酸相信大家都明白的。如果按照投简历算的话,我找了将近五十多个工
作吧,一开始找的都在新加坡,大家应该也没什么兴趣,我就抛出几个小结论吧:1.
amd ibm都是sb公司,你们懂的;2.我这种情况脸书给了我offer,但我就是无法在新加
坡找到SGD4000(相当于美元3300)一个月的工作,不得不感叹这里人工成本太低;3.
这里的公司更看重马上就能给公司创收,所以会要求新毕业的学生懂很多具体的技术啊
语言啊。
1.NV总部。
>事实:我博士是做GPU的,所以加入NV一直是我的理想。我傻到第一份简历就投给了NV
,然后去年九月拿到了我这辈子第一个电话面试,可想而知,被拒。
>题:讲讲你自己;讲讲这一个你做过的项目;你给我讲讲shared memory是什么,应该
怎么用;你给我讲讲atomic operation是什么,怎么用;你会什么语言,各个语言的自
信程度;C++里面的virtual function是什么,pure virtual function是什么;你用过
C++ STL吗;你写过C++样子的CUDA程序吗;你写CUDA怎么debug。
>结论:各位,这话无数人说过,但我是真的有体会,一定不要过早申这种好公司。
2.paypal新加坡
>事实:HR电面,问behaviorial question,忘了。然后onsite,上来写卷子,等卷子打
分,有几个哥们儿就被送走了,然后拉你到小黑屋单面,有cafeteria但不给饭吃。HM
第二轮电面,问behaviorial question。给offer,按新本科生给钱,一个月SGD3800(
USD3100吧),我没去。
>题:SQL操作,我全不会;一堆C++ OOP,忘了;位操作,很简单不说了;单链表排序;
给两个区间,返回boolean是否相交;单链表找环儿;写qsort。
>结论:面试前要吃饱,十点到三点,饿死我了。
3.google悉尼
>事实:这个google真是有趣,十月投的,一周后就有电面,电面我的人是google加州的
。问了三个问题,我胡说了一个,表示不会一个,当时觉得完蛋了。电面后一个半月通
知我去悉尼onsite。google悉尼地点真好。真漂亮。遥望悉尼大桥。澳洲人口音也比较
好理解,比印度人好多了。五轮面试,都是白板写题。他们的笔写到一半没水儿了,
幸好我有自带。中午有个工程师带你吃饭,饭不好吃,你可以趁机问他很多大胆的问题,他对你的
结果没有任何影响。
>题:电面的第一题,你给我讲讲这一段C++程序会输出什么(就是用一个父类的指针指子类然后调overloaded function,我不想蒙就说我不会,我当时恨死C++了);电面的第二题,你最喜欢的语言是什么,如果
你可以自由地改进这个语言,你有什么建议(我瞎扯说我不喜欢malloc,怎么怎么样改
善它,没有说得很好,说了很久后来被打断);电面的第三题,给你一个M*N boolean
矩阵,定义一个操作叫做“在x,y处按键”,这一按将导致x行所有元素和y行所有元素
0变1,1变0,现在给你任意一个矩阵,写个程序打印出任意一系列“按键”操作把它变
成全0矩阵。onsite我签了NDA不能说,但估计各位都见过。一共五轮六道大题,要考你算法
设计和系统设计,基本的套路是:算法设计——给我写一个什么什么,好,给我改善,少一些时间复杂度,少一些空间复杂度,不要用这个,必须用那个一类的;系统设计——给我写一个什么什么,好,现在有十亿用户同时用这个服务,你怎么办,哦分布式是吧,怎么分布啊,服务器间如何沟通啊,我要是给你一些cache你怎么用呢一类的。语法错误没问题。其中有一个面试官一定要让我用java写,弄得我不太开心。
>结论:一定要自带笔!还有就是不管什么情况都要花上三分钟先写下最暴力的解决方案
,以防万一时间不够写不完复杂的,你可以说:吾每次写程序都先写下暴力方案作为
gold,这是吾的习惯。还有想的时候要大声说出来,即便是一个你不确定的解决方案,
你可以说:吾正在想用hash,待吾想一想这能不能用在这个场合。我有一个面试就有五
分钟的寂静,很尴尬的。
4.脸书总部
>事实:我的朋友内推了我,HR给我电话,让我做interview street的一个字符串的题,
叫Ribosome,我很快做出来了。给HR发信,HR通知我第二天他们会来我的学校面试,在此称为一
面。一面是两轮,两个总部来的,问题很弱,应该是小丑测试。通知我一个月后他们会
来脸书新加坡面试,在此称为二面。二面是两轮技术面,非常难,一轮motivation
interview。面试完了就完了,半个月后的现在我拿到了电邮offer。
>题:Ribosome,说白了就是给你一个字典,里面有从DNA到蛋白质的对应,给你一堆输入字符串,都是DNA序列,要你输出蛋白质序列,要求一个小时做出来,还是挺弱的。一面第一题,给你一个函数random(),他是一个完美
的随机数生成函数,1/2 返回0,1/2 返回1,现在你给我写一个random(double p),要
求它以概率p 返回0,概率1-p 返回1,你只能调用random();一面第二题,顺时针打印矩阵。
二面我签了NDA不能说,都是白板写题。但是两个技术面都是程序写的不长,但他会很
不爽语法错误。motivation interview很感人,因为面我的面试官是对脸书的使命深信
不疑的,眼里有光,我被他感染地也深情款款了起来。感叹一下来新加坡的面试官都是
印度人,我见到的只有一个是白人,好在我在新加坡见的惯了,印度人的口音我不仅听
得懂,我自己都会说,所以交流没什么问题。
>结论:带笔带笔带笔。如果你写了一段代码,面试官说哦很好但是我想让你用少一些空
间复杂度,或者不要用递归,或是不要用队列一类的大家都懂吧,这个时候保险的做法
是(如果你觉得有时间的话)再在旁边重新写一遍,不要在原程序上改,很容易错的。
因为当时很紧张,改了这里那里我就忘了,有一个bug,他说你这个不对,我说让我找
找,我找了一下,表示没找到,这应该是我这次二面最大的失误了。还有一个小技巧,
你可以上网查到一个公司的口号,然后写题的时候顺便说出来,我说"done is better
than perfect"的时候面试官笑了,他说我第一次听到有人在面试里说这个。
目前能想到的就是这些了,谢谢版上的老少爷们兄弟姐们,我长期潜水,学到的知识难
以粒数。
祝大家求职之路一帆风顺!
【更新】自己总结的面试的一些小技巧,什么想到了就补上来
1.用C的话写 0 == p, 不要写 p==0,然后无耻地吹嘘一番自己是多么小心谨慎啊~
2.为了防止忘大括号,考虑每写一个{,就在其后加一个//,每写一个},就把最近一个//擦掉,比如:
for(int i = 0; i (我正在写这里)
再比如:
for (int i = 0; i < n; i++){//
if (isTree(i, n))
{
...
...
}else{//
(我正在写这里)
3.跟上一条很像,如果你new了,也做个记号,如果你malloc了,做个记号。每次free或delete就把记号抹掉。
比如:
int* a = new int[n];//delete[]
(我正在写这里)
再比如:
int* a = (int*)malloc(sizeof(int)*n);//free
int* b = (int*)malloc(sizeof(int)*n);
free(b);
(我正在写这里)
这里面的起伏辛酸相信大家都明白的。如果按照投简历算的话,我找了将近五十多个工
作吧,一开始找的都在新加坡,大家应该也没什么兴趣,我就抛出几个小结论吧:1.
amd ibm都是sb公司,你们懂的;2.我这种情况脸书给了我offer,但我就是无法在新加
坡找到SGD4000(相当于美元3300)一个月的工作,不得不感叹这里人工成本太低;3.
这里的公司更看重马上就能给公司创收,所以会要求新毕业的学生懂很多具体的技术啊
语言啊。
1.NV总部。
>事实:我博士是做GPU的,所以加入NV一直是我的理想。我傻到第一份简历就投给了NV
,然后去年九月拿到了我这辈子第一个电话面试,可想而知,被拒。
>题:讲讲你自己;讲讲这一个你做过的项目;你给我讲讲shared memory是什么,应该
怎么用;你给我讲讲atomic operation是什么,怎么用;你会什么语言,各个语言的自
信程度;C++里面的virtual function是什么,pure virtual function是什么;你用过
C++ STL吗;你写过C++样子的CUDA程序吗;你写CUDA怎么debug。
>结论:各位,这话无数人说过,但我是真的有体会,一定不要过早申这种好公司。
2.paypal新加坡
>事实:HR电面,问behaviorial question,忘了。然后onsite,上来写卷子,等卷子打
分,有几个哥们儿就被送走了,然后拉你到小黑屋单面,有cafeteria但不给饭吃。HM
第二轮电面,问behaviorial question。给offer,按新本科生给钱,一个月SGD3800(
USD3100吧),我没去。
>题:SQL操作,我全不会;一堆C++ OOP,忘了;位操作,很简单不说了;单链表排序;
给两个区间,返回boolean是否相交;单链表找环儿;写qsort。
>结论:面试前要吃饱,十点到三点,饿死我了。
3.google悉尼
>事实:这个google真是有趣,十月投的,一周后就有电面,电面我的人是google加州的
。问了三个问题,我胡说了一个,表示不会一个,当时觉得完蛋了。电面后一个半月通
知我去悉尼onsite。google悉尼地点真好。真漂亮。遥望悉尼大桥。澳洲人口音也比较
好理解,比印度人好多了。五轮面试,都是白板写题。他们的笔写到一半没水儿了,
幸好我有自带。中午有个工程师带你吃饭,饭不好吃,你可以趁机问他很多大胆的问题,他对你的
结果没有任何影响。
>题:电面的第一题,你给我讲讲这一段C++程序会输出什么(就是用一个父类的指针指子类然后调overloaded function,我不想蒙就说我不会,我当时恨死C++了);电面的第二题,你最喜欢的语言是什么,如果
你可以自由地改进这个语言,你有什么建议(我瞎扯说我不喜欢malloc,怎么怎么样改
善它,没有说得很好,说了很久后来被打断);电面的第三题,给你一个M*N boolean
矩阵,定义一个操作叫做“在x,y处按键”,这一按将导致x行所有元素和y行所有元素
0变1,1变0,现在给你任意一个矩阵,写个程序打印出任意一系列“按键”操作把它变
成全0矩阵。onsite我签了NDA不能说,但估计各位都见过。一共五轮六道大题,要考你算法
设计和系统设计,基本的套路是:算法设计——给我写一个什么什么,好,给我改善,少一些时间复杂度,少一些空间复杂度,不要用这个,必须用那个一类的;系统设计——给我写一个什么什么,好,现在有十亿用户同时用这个服务,你怎么办,哦分布式是吧,怎么分布啊,服务器间如何沟通啊,我要是给你一些cache你怎么用呢一类的。语法错误没问题。其中有一个面试官一定要让我用java写,弄得我不太开心。
>结论:一定要自带笔!还有就是不管什么情况都要花上三分钟先写下最暴力的解决方案
,以防万一时间不够写不完复杂的,你可以说:吾每次写程序都先写下暴力方案作为
gold,这是吾的习惯。还有想的时候要大声说出来,即便是一个你不确定的解决方案,
你可以说:吾正在想用hash,待吾想一想这能不能用在这个场合。我有一个面试就有五
分钟的寂静,很尴尬的。
4.脸书总部
>事实:我的朋友内推了我,HR给我电话,让我做interview street的一个字符串的题,
叫Ribosome,我很快做出来了。给HR发信,HR通知我第二天他们会来我的学校面试,在此称为一
面。一面是两轮,两个总部来的,问题很弱,应该是小丑测试。通知我一个月后他们会
来脸书新加坡面试,在此称为二面。二面是两轮技术面,非常难,一轮motivation
interview。面试完了就完了,半个月后的现在我拿到了电邮offer。
>题:Ribosome,说白了就是给你一个字典,里面有从DNA到蛋白质的对应,给你一堆输入字符串,都是DNA序列,要你输出蛋白质序列,要求一个小时做出来,还是挺弱的。一面第一题,给你一个函数random(),他是一个完美
的随机数生成函数,1/2 返回0,1/2 返回1,现在你给我写一个random(double p),要
求它以概率p 返回0,概率1-p 返回1,你只能调用random();一面第二题,顺时针打印矩阵。
二面我签了NDA不能说,都是白板写题。但是两个技术面都是程序写的不长,但他会很
不爽语法错误。motivation interview很感人,因为面我的面试官是对脸书的使命深信
不疑的,眼里有光,我被他感染地也深情款款了起来。感叹一下来新加坡的面试官都是
印度人,我见到的只有一个是白人,好在我在新加坡见的惯了,印度人的口音我不仅听
得懂,我自己都会说,所以交流没什么问题。
>结论:带笔带笔带笔。如果你写了一段代码,面试官说哦很好但是我想让你用少一些空
间复杂度,或者不要用递归,或是不要用队列一类的大家都懂吧,这个时候保险的做法
是(如果你觉得有时间的话)再在旁边重新写一遍,不要在原程序上改,很容易错的。
因为当时很紧张,改了这里那里我就忘了,有一个bug,他说你这个不对,我说让我找
找,我找了一下,表示没找到,这应该是我这次二面最大的失误了。还有一个小技巧,
你可以上网查到一个公司的口号,然后写题的时候顺便说出来,我说"done is better
than perfect"的时候面试官笑了,他说我第一次听到有人在面试里说这个。
目前能想到的就是这些了,谢谢版上的老少爷们兄弟姐们,我长期潜水,学到的知识难
以粒数。
祝大家求职之路一帆风顺!
【更新】自己总结的面试的一些小技巧,什么想到了就补上来
1.用C的话写 0 == p, 不要写 p==0,然后无耻地吹嘘一番自己是多么小心谨慎啊~
2.为了防止忘大括号,考虑每写一个{,就在其后加一个//,每写一个},就把最近一个//擦掉,比如:
for(int i = 0; i (我正在写这里)
再比如:
for (int i = 0; i < n; i++){//
if (isTree(i, n))
{
...
...
}else{//
(我正在写这里)
3.跟上一条很像,如果你new了,也做个记号,如果你malloc了,做个记号。每次free或delete就把记号抹掉。
比如:
int* a = new int[n];//delete[]
(我正在写这里)
再比如:
int* a = (int*)malloc(sizeof(int)*n);//free
int* b = (int*)malloc(sizeof(int)*n);
free(b);
(我正在写这里)